├── .appveyor.yml ├── .cproject ├── .devcontainer ├── android │ └── devcontainer.json ├── bionic │ └── devcontainer.json ├── focal │ └── devcontainer.json ├── jammy │ └── devcontainer.json └── noble │ └── devcontainer.json ├── .dockerignore ├── .github └── workflows │ ├── cmake-ros.yml │ ├── cmake.yml │ ├── docker.yml │ └── scheduled-stats.yml ├── .gitignore ├── .project ├── .settings ├── org.eclipse.cdt.codan.core.prefs └── org.eclipse.cdt.core.prefs ├── CMakeLists.txt ├── LICENSE ├── README.md ├── RTABMapConfig.cmake.in ├── Version.h.in ├── app ├── CMakeLists.txt ├── android │ ├── .gitignore │ ├── .settings │ │ └── org.eclipse.jdt.core.prefs │ ├── AndroidManifest.xml.in │ ├── CMakeLists.txt │ ├── CameraAvailability.h.in │ ├── ant.properties.in │ ├── custom_rules.xml │ ├── ic_launcher-web.png │ ├── info.txt.in │ ├── jni │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── CameraARCore.cpp │ │ ├── CameraARCore.h │ │ ├── CameraAREngine.cpp │ │ ├── CameraAREngine.h │ │ ├── CameraMobile.cpp │ │ ├── CameraMobile.h │ │ ├── CameraTango.cpp │ │ ├── CameraTango.h │ │ ├── Measure.h │ │ ├── ProgressionStatus.h │ │ ├── RTABMapApp.cpp │ │ ├── RTABMapApp.h │ │ ├── background_renderer.cc │ │ ├── background_renderer.h │ │ ├── bounding_box_drawable.h │ │ ├── graph_drawable.cpp │ │ ├── graph_drawable.h │ │ ├── jni_interface.cpp │ │ ├── point_cloud_drawable.cpp │ │ ├── point_cloud_drawable.h │ │ ├── quad_color.cpp │ │ ├── quad_color.h │ │ ├── resources │ │ │ └── text_atlas.png │ │ ├── scene.cpp │ │ ├── scene.h │ │ ├── tango-gl │ │ │ ├── axis.cpp │ │ │ ├── band.cpp │ │ │ ├── bounding_box.cpp │ │ │ ├── camera.cpp │ │ │ ├── circle.cpp │ │ │ ├── conversions.cpp │ │ │ ├── cube.cpp │ │ │ ├── drawable_object.cpp │ │ │ ├── frustum.cpp │ │ │ ├── gesture_camera.cpp │ │ │ ├── goal_marker.cpp │ │ │ ├── grid.cpp │ │ │ ├── include │ │ │ │ └── tango-gl │ │ │ │ │ ├── axis.h │ │ │ │ │ ├── band.h │ │ │ │ │ ├── bounding_box.h │ │ │ │ │ ├── camera.h │ │ │ │ │ ├── circle.h │ │ │ │ │ ├── color.h │ │ │ │ │ ├── conversions.h │ │ │ │ │ ├── cube.h │ │ │ │ │ ├── drawable_object.h │ │ │ │ │ ├── frustum.h │ │ │ │ │ ├── gesture_camera.h │ │ │ │ │ ├── goal_marker.h │ │ │ │ │ ├── grid.h │ │ │ │ │ ├── line.h │ │ │ │ │ ├── mesh.h │ │ │ │ │ ├── obj_loader.h │ │ │ │ │ ├── quad.h │ │ │ │ │ ├── segment.h │ │ │ │ │ ├── segment_drawable.h │ │ │ │ │ ├── shaders.h │ │ │ │ │ ├── texture.h │ │ │ │ │ ├── trace.h │ │ │ │ │ ├── transform.h │ │ │ │ │ ├── triangle.h │ │ │ │ │ ├── util.h │ │ │ │ │ └── video_overlay.h │ │ │ ├── line.cpp │ │ │ ├── mesh.cpp │ │ │ ├── obj_loader.cpp │ │ │ ├── quad.cpp │ │ │ ├── segment_drawable.cpp │ │ │ ├── shaders.cpp │ │ │ ├── texture.cpp │ │ │ ├── trace.cpp │ │ │ ├── transform.cpp │ │ │ ├── triangle.cpp │ │ │ ├── util.cpp │ │ │ └── video_overlay.cpp │ │ ├── text_drawable.cpp │ │ ├── text_drawable.h │ │ ├── third-party │ │ │ ├── include │ │ │ │ └── glm │ │ │ │ │ ├── common.hpp │ │ │ │ │ ├── detail │ │ │ │ │ ├── _features.hpp │ │ │ │ │ ├── _fixes.hpp │ │ │ │ │ ├── _literals.hpp │ │ │ │ │ ├── _noise.hpp │ │ │ │ │ ├── _swizzle.hpp │ │ │ │ │ ├── _swizzle_func.hpp │ │ │ │ │ ├── _vectorize.hpp │ │ │ │ │ ├── dummy.cpp │ │ │ │ │ ├── func_common.hpp │ │ │ │ │ ├── func_common.inl │ │ │ │ │ ├── func_exponential.hpp │ │ │ │ │ ├── func_exponential.inl │ │ │ │ │ ├── func_geometric.hpp │ │ │ │ │ ├── func_geometric.inl │ │ │ │ │ ├── func_integer.hpp │ │ │ │ │ ├── func_integer.inl │ │ │ │ │ ├── func_matrix.hpp │ │ │ │ │ ├── func_matrix.inl │ │ │ │ │ ├── func_noise.hpp │ │ │ │ │ ├── func_noise.inl │ │ │ │ │ ├── func_packing.hpp │ │ │ │ │ ├── func_packing.inl │ │ │ │ │ ├── func_trigonometric.hpp │ │ │ │ │ ├── func_trigonometric.inl │ │ │ │ │ ├── func_vector_relational.hpp │ │ │ │ │ ├── func_vector_relational.inl │ │ │ │ │ ├── glm.cpp │ │ │ │ │ ├── hint.hpp │ │ │ │ │ ├── intrinsic_common.hpp │ │ │ │ │ ├── intrinsic_common.inl │ │ │ │ │ ├── intrinsic_exponential.hpp │ │ │ │ │ ├── intrinsic_exponential.inl │ │ │ │ │ ├── intrinsic_geometric.hpp │ │ │ │ │ ├── intrinsic_geometric.inl │ │ │ │ │ ├── intrinsic_integer.hpp │ │ │ │ │ ├── intrinsic_integer.inl │ │ │ │ │ ├── intrinsic_matrix.hpp │ │ │ │ │ ├── intrinsic_matrix.inl │ │ │ │ │ ├── intrinsic_trigonometric.hpp │ │ │ │ │ ├── intrinsic_trigonometric.inl │ │ │ │ │ ├── intrinsic_vector_relational.hpp │ │ │ │ │ ├── intrinsic_vector_relational.inl │ │ │ │ │ ├── precision.hpp │ │ │ │ │ ├── precision.inl │ │ │ │ │ ├── setup.hpp │ │ │ │ │ ├── type_float.hpp │ │ │ │ │ ├── type_gentype.hpp │ │ │ │ │ ├── type_gentype.inl │ │ │ │ │ ├── type_half.hpp │ │ │ │ │ ├── type_half.inl │ │ │ │ │ ├── type_int.hpp │ │ │ │ │ ├── type_mat.hpp │ │ │ │ │ ├── type_mat.inl │ │ │ │ │ ├── type_mat2x2.hpp │ │ │ │ │ ├── type_mat2x2.inl │ │ │ │ │ ├── type_mat2x3.hpp │ │ │ │ │ ├── type_mat2x3.inl │ │ │ │ │ ├── type_mat2x4.hpp │ │ │ │ │ ├── type_mat2x4.inl │ │ │ │ │ ├── type_mat3x2.hpp │ │ │ │ │ ├── type_mat3x2.inl │ │ │ │ │ ├── type_mat3x3.hpp │ │ │ │ │ ├── type_mat3x3.inl │ │ │ │ │ ├── type_mat3x4.hpp │ │ │ │ │ ├── type_mat3x4.inl │ │ │ │ │ ├── type_mat4x2.hpp │ │ │ │ │ ├── type_mat4x2.inl │ │ │ │ │ ├── type_mat4x3.hpp │ │ │ │ │ ├── type_mat4x3.inl │ │ │ │ │ ├── type_mat4x4.hpp │ │ │ │ │ ├── type_mat4x4.inl │ │ │ │ │ ├── type_vec.hpp │ │ │ │ │ ├── type_vec.inl │ │ │ │ │ ├── type_vec1.hpp │ │ │ │ │ ├── type_vec1.inl │ │ │ │ │ ├── type_vec2.hpp │ │ │ │ │ ├── type_vec2.inl │ │ │ │ │ ├── type_vec3.hpp │ │ │ │ │ ├── type_vec3.inl │ │ │ │ │ ├── type_vec4.hpp │ │ │ │ │ └── type_vec4.inl │ │ │ │ │ ├── exponential.hpp │ │ │ │ │ ├── ext.hpp │ │ │ │ │ ├── fwd.hpp │ │ │ │ │ ├── geometric.hpp │ │ │ │ │ ├── glm.hpp │ │ │ │ │ ├── gtc │ │ │ │ │ ├── constants.hpp │ │ │ │ │ ├── constants.inl │ │ │ │ │ ├── epsilon.hpp │ │ │ │ │ ├── epsilon.inl │ │ │ │ │ ├── matrix_access.hpp │ │ │ │ │ ├── matrix_access.inl │ │ │ │ │ ├── matrix_integer.hpp │ │ │ │ │ ├── matrix_inverse.hpp │ │ │ │ │ ├── matrix_inverse.inl │ │ │ │ │ ├── matrix_transform.hpp │ │ │ │ │ ├── matrix_transform.inl │ │ │ │ │ ├── noise.hpp │ │ │ │ │ ├── noise.inl │ │ │ │ │ ├── packing.hpp │ │ │ │ │ ├── packing.inl │ │ │ │ │ ├── quaternion.hpp │ │ │ │ │ ├── quaternion.inl │ │ │ │ │ ├── random.hpp │ │ │ │ │ ├── random.inl │ │ │ │ │ ├── reciprocal.hpp │ │ │ │ │ ├── reciprocal.inl │ │ │ │ │ ├── type_precision.hpp │ │ │ │ │ ├── type_precision.inl │ │ │ │ │ ├── type_ptr.hpp │ │ │ │ │ ├── type_ptr.inl │ │ │ │ │ ├── ulp.hpp │ │ │ │ │ ├── ulp.inl │ │ │ │ │ └── user_defined_type.hpp │ │ │ │ │ ├── gtx │ │ │ │ │ ├── associated_min_max.hpp │ │ │ │ │ ├── associated_min_max.inl │ │ │ │ │ ├── bit.hpp │ │ │ │ │ ├── bit.inl │ │ │ │ │ ├── closest_point.hpp │ │ │ │ │ ├── closest_point.inl │ │ │ │ │ ├── color_space.hpp │ │ │ │ │ ├── color_space.inl │ │ │ │ │ ├── color_space_YCoCg.hpp │ │ │ │ │ ├── color_space_YCoCg.inl │ │ │ │ │ ├── common.hpp │ │ │ │ │ ├── common.inl │ │ │ │ │ ├── compatibility.hpp │ │ │ │ │ ├── compatibility.inl │ │ │ │ │ ├── component_wise.hpp │ │ │ │ │ ├── component_wise.inl │ │ │ │ │ ├── constants.hpp │ │ │ │ │ ├── dual_quaternion.hpp │ │ │ │ │ ├── dual_quaternion.inl │ │ │ │ │ ├── epsilon.hpp │ │ │ │ │ ├── euler_angles.hpp │ │ │ │ │ ├── euler_angles.inl │ │ │ │ │ ├── extend.hpp │ │ │ │ │ ├── extend.inl │ │ │ │ │ ├── extented_min_max.hpp │ │ │ │ │ ├── extented_min_max.inl │ │ │ │ │ ├── fast_exponential.hpp │ │ │ │ │ ├── fast_exponential.inl │ │ │ │ │ ├── fast_square_root.hpp │ │ │ │ │ ├── fast_square_root.inl │ │ │ │ │ ├── fast_trigonometry.hpp │ │ │ │ │ ├── fast_trigonometry.inl │ │ │ │ │ ├── gradient_paint.hpp │ │ │ │ │ ├── gradient_paint.inl │ │ │ │ │ ├── handed_coordinate_space.hpp │ │ │ │ │ ├── handed_coordinate_space.inl │ │ │ │ │ ├── inertia.hpp │ │ │ │ │ ├── inertia.inl │ │ │ │ │ ├── int_10_10_10_2.hpp │ │ │ │ │ ├── int_10_10_10_2.inl │ │ │ │ │ ├── integer.hpp │ │ │ │ │ ├── integer.inl │ │ │ │ │ ├── intersect.hpp │ │ │ │ │ ├── intersect.inl │ │ │ │ │ ├── io.hpp │ │ │ │ │ ├── io.inl │ │ │ │ │ ├── log_base.hpp │ │ │ │ │ ├── log_base.inl │ │ │ │ │ ├── matrix_cross_product.hpp │ │ │ │ │ ├── matrix_cross_product.inl │ │ │ │ │ ├── matrix_decompose.hpp │ │ │ │ │ ├── matrix_decompose.inl │ │ │ │ │ ├── matrix_interpolation.hpp │ │ │ │ │ ├── matrix_interpolation.inl │ │ │ │ │ ├── matrix_major_storage.hpp │ │ │ │ │ ├── matrix_major_storage.inl │ │ │ │ │ ├── matrix_operation.hpp │ │ │ │ │ ├── matrix_operation.inl │ │ │ │ │ ├── matrix_query.hpp │ │ │ │ │ ├── matrix_query.inl │ │ │ │ │ ├── matrix_transform_2d.hpp │ │ │ │ │ ├── matrix_transform_2d.inl │ │ │ │ │ ├── mixed_product.hpp │ │ │ │ │ ├── mixed_product.inl │ │ │ │ │ ├── multiple.hpp │ │ │ │ │ ├── multiple.inl │ │ │ │ │ ├── noise.hpp │ │ │ │ │ ├── norm.hpp │ │ │ │ │ ├── norm.inl │ │ │ │ │ ├── normal.hpp │ │ │ │ │ ├── normal.inl │ │ │ │ │ ├── normalize_dot.hpp │ │ │ │ │ ├── normalize_dot.inl │ │ │ │ │ ├── number_precision.hpp │ │ │ │ │ ├── number_precision.inl │ │ │ │ │ ├── optimum_pow.hpp │ │ │ │ │ ├── optimum_pow.inl │ │ │ │ │ ├── orthonormalize.hpp │ │ │ │ │ ├── orthonormalize.inl │ │ │ │ │ ├── perpendicular.hpp │ │ │ │ │ ├── perpendicular.inl │ │ │ │ │ ├── polar_coordinates.hpp │ │ │ │ │ ├── polar_coordinates.inl │ │ │ │ │ ├── projection.hpp │ │ │ │ │ ├── projection.inl │ │ │ │ │ ├── quaternion.hpp │ │ │ │ │ ├── quaternion.inl │ │ │ │ │ ├── random.hpp │ │ │ │ │ ├── raw_data.hpp │ │ │ │ │ ├── raw_data.inl │ │ │ │ │ ├── reciprocal.hpp │ │ │ │ │ ├── rotate_normalized_axis.hpp │ │ │ │ │ ├── rotate_normalized_axis.inl │ │ │ │ │ ├── rotate_vector.hpp │ │ │ │ │ ├── rotate_vector.inl │ │ │ │ │ ├── scalar_relational.hpp │ │ │ │ │ ├── scalar_relational.inl │ │ │ │ │ ├── simd_mat4.hpp │ │ │ │ │ ├── simd_mat4.inl │ │ │ │ │ ├── simd_quat.hpp │ │ │ │ │ ├── simd_quat.inl │ │ │ │ │ ├── simd_vec4.hpp │ │ │ │ │ ├── simd_vec4.inl │ │ │ │ │ ├── spline.hpp │ │ │ │ │ ├── spline.inl │ │ │ │ │ ├── std_based_type.hpp │ │ │ │ │ ├── std_based_type.inl │ │ │ │ │ ├── string_cast.hpp │ │ │ │ │ ├── string_cast.inl │ │ │ │ │ ├── transform.hpp │ │ │ │ │ ├── transform.inl │ │ │ │ │ ├── transform2.hpp │ │ │ │ │ ├── transform2.inl │ │ │ │ │ ├── ulp.hpp │ │ │ │ │ ├── unsigned_int.hpp │ │ │ │ │ ├── unsigned_int.inl │ │ │ │ │ ├── vec1.hpp │ │ │ │ │ ├── vec1.inl │ │ │ │ │ ├── vector_angle.hpp │ │ │ │ │ ├── vector_angle.inl │ │ │ │ │ ├── vector_query.hpp │ │ │ │ │ ├── vector_query.inl │ │ │ │ │ ├── wrap.hpp │ │ │ │ │ └── wrap.inl │ │ │ │ │ ├── integer.hpp │ │ │ │ │ ├── mat2x2.hpp │ │ │ │ │ ├── mat2x3.hpp │ │ │ │ │ ├── mat2x4.hpp │ │ │ │ │ ├── mat3x2.hpp │ │ │ │ │ ├── mat3x3.hpp │ │ │ │ │ ├── mat3x4.hpp │ │ │ │ │ ├── mat4x2.hpp │ │ │ │ │ ├── mat4x3.hpp │ │ │ │ │ ├── mat4x4.hpp │ │ │ │ │ ├── matrix.hpp │ │ │ │ │ ├── packing.hpp │ │ │ │ │ ├── trigonometric.hpp │ │ │ │ │ ├── vec2.hpp │ │ │ │ │ ├── vec3.hpp │ │ │ │ │ ├── vec4.hpp │ │ │ │ │ └── vector_relational.hpp │ │ │ └── lib │ │ │ │ └── .gitignore │ │ └── util.h │ ├── libs │ │ ├── .gitignore │ │ ├── android-support-v4.jar │ │ └── httpclient-4.2.1.jar │ ├── res │ │ ├── drawable-hdpi │ │ │ └── ic_launcher.png │ │ ├── drawable-mdpi │ │ │ └── ic_launcher.png │ │ ├── drawable-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── start96.png │ │ │ └── stop96.png │ │ ├── drawable-xxhdpi │ │ │ └── ic_launcher.png │ │ ├── drawable │ │ │ └── custom_seekbar.xml │ │ ├── layout │ │ │ ├── about.xml │ │ │ ├── activity_rtabmap.xml │ │ │ ├── activity_settings.xml │ │ │ ├── activity_sketchfab.xml │ │ │ ├── auth_dialog.xml │ │ │ └── database_list.xml │ │ ├── menu │ │ │ └── optionmenu.xml │ │ ├── values │ │ │ ├── arrays.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── xml │ │ │ └── provider_paths.xml │ └── src │ │ └── com │ │ └── introlab │ │ └── rtabmap │ │ ├── ARCoreSharedCamera.java │ │ ├── AboutDialog.java │ │ ├── CustomSwitchPreference.java │ │ ├── DatabaseListArrayAdapter.java │ │ ├── DisplayRotationHelper.java │ │ ├── MultipartUtility.java │ │ ├── NDSpinner.java │ │ ├── PermissionHelper.java │ │ ├── RTABMapActivity.java │ │ ├── RTABMapLib.java │ │ ├── Renderer.java │ │ ├── SettingsActivity.java │ │ ├── SketchfabActivity.java │ │ ├── TOF_ImageReader.java │ │ ├── TangoInitializationHelper.java │ │ ├── TextManager.java │ │ ├── TextObject.java │ │ └── Util.java ├── ios │ ├── .gitignore │ ├── RTABMapApp.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── swiftpm │ │ │ │ └── Package.resolved │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── RTABMapApp.xcscheme │ ├── RTABMapApp │ │ ├── .gitignore │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── RTAB-Map1024.png │ │ │ │ ├── RTAB-Map120-1.png │ │ │ │ ├── RTAB-Map120.png │ │ │ │ ├── RTAB-Map152.png │ │ │ │ ├── RTAB-Map167.png │ │ │ │ ├── RTAB-Map180.png │ │ │ │ ├── RTAB-Map20.png │ │ │ │ ├── RTAB-Map29.png │ │ │ │ ├── RTAB-Map40-1.png │ │ │ │ ├── RTAB-Map40-2.png │ │ │ │ ├── RTAB-Map40.png │ │ │ │ ├── RTAB-Map58-1.png │ │ │ │ ├── RTAB-Map58.png │ │ │ │ ├── RTAB-Map60.png │ │ │ │ ├── RTAB-Map76.png │ │ │ │ ├── RTAB-Map80-1.png │ │ │ │ ├── RTAB-Map80.png │ │ │ │ └── RTAB-Map87.png │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── DatabaseView.swift │ │ ├── Images.xcassets │ │ │ ├── Contents.json │ │ │ └── RTAB-Map1024.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── RTAB-Map1024.png │ │ ├── Info.plist │ │ ├── NativeWrapper.cpp │ │ ├── NativeWrapper.hpp │ │ ├── PointCloud.swift │ │ ├── PointCloudData.swift │ │ ├── RTABMap.swift │ │ ├── RTABMapApp-Bridging-Header.h │ │ ├── RTABMapApp.entitlements │ │ ├── SceneDelegate.swift │ │ ├── VerticalScrollerView.swift │ │ ├── ViewController.swift │ │ ├── install_deps.sh │ │ └── text_atlas_png.h │ └── Settings.bundle │ │ ├── Assembling.plist │ │ ├── License.plist │ │ ├── Mapping.plist │ │ ├── Root.plist │ │ └── en.lproj │ │ └── Root.strings └── src │ ├── CMakeLists.txt │ ├── RTABMap.icns │ ├── RTABMap.ico │ ├── RTABMap.rc │ └── main.cpp ├── archive ├── 2010-LoopClosure │ ├── Bayes │ │ ├── RecursiveBayes.m │ │ ├── adjustLikelihood.m │ │ ├── computeLikelihood.m │ │ ├── generatePrediction.m │ │ ├── updateCommonSignature.m │ │ └── updateDictionary.m │ ├── ParticleFilter │ │ ├── pf_filter.m │ │ ├── pf_resample.m │ │ ├── test_kinect.m │ │ ├── test_kinect.m~ │ │ ├── test_kitti_datasets.m │ │ ├── test_odometry.m │ │ └── test_pf_filter.m │ ├── README.md │ ├── ShowLogs │ │ ├── getPrecisionRecall.m │ │ ├── importfile.m │ │ ├── logaHeaders.txt │ │ ├── precisionRecallAllDetectors.m │ │ └── showlogs.m │ ├── Tests │ │ ├── 090306-3_db-Dictionary.txt │ │ ├── 090306-3_db-Signatures.txt │ │ ├── README.txt │ │ ├── TestAdjustLikelihood.m │ │ ├── TestBayesFilter.m │ │ ├── TestComputeLikelihood.m │ │ └── TestUpdateCommonSignature.m │ ├── run_all_datasets.sh │ ├── run_all_detectors.sh │ └── run_bow.sh └── 2022-IlluminationInvariant │ ├── README.md │ ├── images │ ├── fig_map_merged_999.jpg │ ├── fig_merged_percentage.jpg │ ├── fig_overview.jpg │ └── fig_single_percentage.jpg │ ├── results_common.m │ ├── results_loc_over_time.m │ ├── results_loc_prob_by_dist.m │ ├── scripts │ ├── export_stats.sh │ ├── reprocess_maps.sh │ ├── reprocess_maps_all.sh │ ├── rtabmap_latest.bash │ ├── run_all.sh │ ├── run_consecutive_localization.sh │ ├── run_consecutive_localization_all.sh │ ├── run_localization_accuracy.sh │ ├── run_localization_single.sh │ ├── run_localization_single_all.sh │ ├── run_merge.sh │ ├── trace.py │ └── valgrind.sh │ └── showLoopOverTime.m ├── build └── .gitignore ├── cmake_modules ├── FindARCore.cmake ├── FindAREngine.cmake ├── FindDC1394.cmake ├── FindEigen3.cmake ├── FindFastCV.cmake ├── FindFlyCapture2.cmake ├── FindFreenect.cmake ├── FindG2O.cmake ├── FindHIDAPI.cmake ├── FindK4A.cmake ├── FindKinectSDK2.cmake ├── FindORB_SLAM.cmake ├── FindOpenNI2.cmake ├── FindPthreads.cmake ├── FindQVTK.cmake ├── FindRealSense.cmake ├── FindRealSense2.cmake ├── FindTango.cmake ├── FindZEDOC.cmake ├── MacOSXBundleInfo.plist.in └── android.toolchain.cmake ├── cmake_uninstall.cmake.in ├── corelib ├── CMakeLists.txt ├── include │ └── rtabmap │ │ └── core │ │ ├── BayesFilter.h │ │ ├── Camera.h │ │ ├── CameraEvent.h │ │ ├── CameraInfo.h │ │ ├── CameraModel.h │ │ ├── CameraRGB.h │ │ ├── CameraRGBD.h │ │ ├── CameraStereo.h │ │ ├── CameraThread.h │ │ ├── Compression.h │ │ ├── DBDriver.h │ │ ├── DBDriverSqlite3.h │ │ ├── DBReader.h │ │ ├── EnvSensor.h │ │ ├── EpipolarGeometry.h │ │ ├── Features2d.h │ │ ├── FlannIndex.h │ │ ├── GPS.h │ │ ├── GainCompensator.h │ │ ├── GeodeticCoords.h │ │ ├── GlobalDescriptor.h │ │ ├── GlobalDescriptorExtractor.h │ │ ├── GlobalMap.h │ │ ├── Graph.h │ │ ├── IMU.h │ │ ├── IMUFilter.h │ │ ├── IMUThread.h │ │ ├── Image.h │ │ ├── LASWriter.h │ │ ├── Landmark.h │ │ ├── LaserScan.h │ │ ├── Lidar.h │ │ ├── Link.h │ │ ├── LocalGrid.h │ │ ├── LocalGridMaker.h │ │ ├── MarkerDetector.h │ │ ├── Memory.h │ │ ├── OccupancyGrid.h │ │ ├── OctoMap.h │ │ ├── Odometry.h │ │ ├── OdometryEvent.h │ │ ├── OdometryInfo.h │ │ ├── OdometryThread.h │ │ ├── Optimizer.h │ │ ├── PDALWriter.h │ │ ├── ParamEvent.h │ │ ├── Parameters.h │ │ ├── ParticleFilter.h │ │ ├── ProgressState.h │ │ ├── PythonInterface.h │ │ ├── Recovery.h │ │ ├── Registration.h │ │ ├── RegistrationIcp.h │ │ ├── RegistrationInfo.h │ │ ├── RegistrationVis.h │ │ ├── Rtabmap.h │ │ ├── RtabmapEvent.h │ │ ├── RtabmapThread.h │ │ ├── SensorCapture.h │ │ ├── SensorCaptureInfo.h │ │ ├── SensorCaptureThread.h │ │ ├── SensorData.h │ │ ├── SensorEvent.h │ │ ├── Signature.h │ │ ├── Statistics.h │ │ ├── Stereo.h │ │ ├── StereoCameraModel.h │ │ ├── StereoDense.h │ │ ├── Transform.h │ │ ├── UserDataEvent.h │ │ ├── VWDictionary.h │ │ ├── VisualWord.h │ │ ├── camera │ │ ├── CameraDepthAI.h │ │ ├── CameraFreenect.h │ │ ├── CameraFreenect2.h │ │ ├── CameraImages.h │ │ ├── CameraK4A.h │ │ ├── CameraK4W2.h │ │ ├── CameraMyntEye.h │ │ ├── CameraOpenNI2.h │ │ ├── CameraOpenNICV.h │ │ ├── CameraOpenni.h │ │ ├── CameraRGBDImages.h │ │ ├── CameraRealSense.h │ │ ├── CameraRealSense2.h │ │ ├── CameraSeerSense.h │ │ ├── CameraStereoDC1394.h │ │ ├── CameraStereoFlyCapture2.h │ │ ├── CameraStereoImages.h │ │ ├── CameraStereoTara.h │ │ ├── CameraStereoVideo.h │ │ ├── CameraStereoZed.h │ │ ├── CameraStereoZedOC.h │ │ └── CameraVideo.h │ │ ├── clams │ │ ├── discrete_depth_distortion_model.h │ │ ├── frame_projector.h │ │ └── slam_calibrator.h │ │ ├── global_map │ │ ├── CloudMap.h │ │ ├── GridMap.h │ │ ├── OccupancyGrid.h │ │ └── OctoMap.h │ │ ├── impl │ │ ├── LocalMapMaker.hpp │ │ ├── util3d.hpp │ │ ├── util3d_mapping.hpp │ │ └── util3d_surface.hpp │ │ ├── lidar │ │ └── LidarVLP16.h │ │ ├── odometry │ │ ├── OdometryDVO.h │ │ ├── OdometryF2F.h │ │ ├── OdometryF2M.h │ │ ├── OdometryFLOAM.h │ │ ├── OdometryFovis.h │ │ ├── OdometryLOAM.h │ │ ├── OdometryMSCKF.h │ │ ├── OdometryMono.h │ │ ├── OdometryORBSLAM2.h │ │ ├── OdometryORBSLAM3.h │ │ ├── OdometryOkvis.h │ │ ├── OdometryOpen3D.h │ │ ├── OdometryOpenVINS.h │ │ ├── OdometryVINS.h │ │ └── OdometryViso2.h │ │ ├── optimizer │ │ ├── OptimizerCVSBA.h │ │ ├── OptimizerCeres.h │ │ ├── OptimizerG2O.h │ │ ├── OptimizerGTSAM.h │ │ └── OptimizerTORO.h │ │ ├── rvl_codec.h │ │ ├── stereo │ │ ├── StereoBM.h │ │ ├── StereoSGBM.h │ │ └── stereoRectifyFisheye.h │ │ ├── util2d.h │ │ ├── util3d.h │ │ ├── util3d_correspondences.h │ │ ├── util3d_features.h │ │ ├── util3d_filtering.h │ │ ├── util3d_mapping.h │ │ ├── util3d_motion_estimation.h │ │ ├── util3d_registration.h │ │ ├── util3d_surface.h │ │ └── util3d_transforms.h └── src │ ├── BayesFilter.cpp │ ├── CMakeLists.txt │ ├── Camera.cpp │ ├── CameraModel.cpp │ ├── Compression.cpp │ ├── ConvertUTF.c │ ├── ConvertUTF.h │ ├── DBDriver.cpp │ ├── DBDriverSqlite3.cpp │ ├── DBReader.cpp │ ├── EpipolarGeometry.cpp │ ├── Features2d.cpp │ ├── FlannIndex.cpp │ ├── GainCompensator.cpp │ ├── GeodeticCoords.cpp │ ├── GlobalDescriptorExtractor.cpp │ ├── GlobalMap.cpp │ ├── Graph.cpp │ ├── IMU.cpp │ ├── IMUFilter.cpp │ ├── IMUThread.cpp │ ├── LASWriter.cpp │ ├── LaserScan.cpp │ ├── Link.cpp │ ├── LocalGrid.cpp │ ├── LocalGridMaker.cpp │ ├── MarkerDetector.cpp │ ├── Memory.cpp │ ├── Odometry.cpp │ ├── OdometryInfo.cpp │ ├── OdometryThread.cpp │ ├── Optimizer.cpp │ ├── PDALWriter.cpp │ ├── Parameters.cpp │ ├── Recovery.cpp │ ├── Registration.cpp │ ├── RegistrationIcp.cpp │ ├── RegistrationVis.cpp │ ├── Rtabmap.cpp │ ├── RtabmapThread.cpp │ ├── SensorCapture.cpp │ ├── SensorCaptureThread.cpp │ ├── SensorData.cpp │ ├── Signature.cpp │ ├── SimpleIni.h │ ├── Statistics.cpp │ ├── Stereo.cpp │ ├── StereoCameraModel.cpp │ ├── StereoDense.cpp │ ├── Transform.cpp │ ├── VWDictionary.cpp │ ├── VisualWord.cpp │ ├── camera │ ├── CameraDepthAI.cpp │ ├── CameraFreenect.cpp │ ├── CameraFreenect2.cpp │ ├── CameraImages.cpp │ ├── CameraK4A.cpp │ ├── CameraK4W2.cpp │ ├── CameraMyntEye.cpp │ ├── CameraOpenNI2.cpp │ ├── CameraOpenNICV.cpp │ ├── CameraOpenni.cpp │ ├── CameraRGBDImages.cpp │ ├── CameraRealSense.cpp │ ├── CameraRealSense2.cpp │ ├── CameraSeerSense.cpp │ ├── CameraStereoDC1394.cpp │ ├── CameraStereoFlyCapture2.cpp │ ├── CameraStereoImages.cpp │ ├── CameraStereoTara.cpp │ ├── CameraStereoVideo.cpp │ ├── CameraStereoZed.cpp │ ├── CameraStereoZedOC.cpp │ └── CameraVideo.cpp │ ├── clams │ ├── discrete_depth_distortion_model.cpp │ ├── discrete_depth_distortion_model_helpers.cpp │ ├── eigen_extensions │ │ └── eigen_extensions.h │ ├── frame_projector.cpp │ └── slam_calibrator.cpp │ ├── global_map │ ├── CloudMap.cpp │ ├── GridMap.cpp │ ├── OccupancyGrid.cpp │ └── OctoMap.cpp │ ├── icp │ ├── cccorelib.h │ └── libpointmatcher.h │ ├── imufilter │ ├── ComplementaryFilter.cpp │ ├── ComplementaryFilter.h │ ├── MadgwickFilter.cpp │ ├── MadgwickFilter.h │ └── README.txt │ ├── lidar │ └── LidarVLP16.cpp │ ├── odometry │ ├── OdometryDVO.cpp │ ├── OdometryF2F.cpp │ ├── OdometryF2M.cpp │ ├── OdometryFLOAM.cpp │ ├── OdometryFovis.cpp │ ├── OdometryLOAM.cpp │ ├── OdometryMSCKF.cpp │ ├── OdometryMono.cpp │ ├── OdometryORBSLAM2.cpp │ ├── OdometryORBSLAM3.cpp │ ├── OdometryOkvis.cpp │ ├── OdometryOpen3D.cpp │ ├── OdometryOpenVINS.cpp │ ├── OdometryVINS.cpp │ └── OdometryViso2.cpp │ ├── opencv │ ├── ORBextractor.cc │ ├── ORBextractor.h │ ├── Orb.cpp │ ├── Orb.h │ ├── five-point.cpp │ ├── five-point.h │ ├── readme.txt │ ├── solvepnp.cpp │ └── solvepnp.h │ ├── optimizer │ ├── OptimizerCVSBA.cpp │ ├── OptimizerCeres.cpp │ ├── OptimizerG2O.cpp │ ├── OptimizerGTSAM.cpp │ ├── OptimizerTORO.cpp │ ├── ceres │ │ ├── bundle │ │ │ ├── BAProblem.h │ │ │ └── snavely_reprojection_error.h │ │ ├── pose_graph_2d │ │ │ ├── README.md │ │ │ ├── angle_manifold.h │ │ │ ├── normalize_angle.h │ │ │ ├── pose_graph_2d_error_term.h │ │ │ └── types.h │ │ └── pose_graph_3d │ │ │ ├── README.md │ │ │ ├── eigen_quaternion_parameterization.h │ │ │ ├── pose_graph_3d_error_term.h │ │ │ └── types.h │ ├── g2o │ │ ├── edge_sbacam_gravity.h │ │ ├── edge_se3_gravity.h │ │ ├── edge_se3_xyzprior.h │ │ ├── edge_xy_prior.h │ │ └── edge_xyz_prior.h │ ├── gtsam │ │ ├── GravityFactor.cpp │ │ ├── GravityFactor.h │ │ ├── XYFactor.h │ │ └── XYZFactor.h │ ├── toro3d │ │ ├── dmatrix.h │ │ ├── dmatrix.hxx │ │ ├── posegraph.h │ │ ├── posegraph.hxx │ │ ├── posegraph2.cpp │ │ ├── posegraph2.h │ │ ├── posegraph3.cpp │ │ ├── posegraph3.h │ │ ├── readme.txt │ │ ├── transformation2.h │ │ ├── transformation3.h │ │ ├── transformation3.hxx │ │ ├── treeoptimizer2.cpp │ │ ├── treeoptimizer2.h │ │ ├── treeoptimizer3.cpp │ │ ├── treeoptimizer3.h │ │ └── treeoptimizer3_iteration.cpp │ └── vertigo │ │ ├── g2o │ │ ├── edge_se2MaxMixture.cpp │ │ ├── edge_se2MaxMixture.h │ │ ├── edge_se2Switchable.cpp │ │ ├── edge_se2Switchable.h │ │ ├── edge_se3Switchable.cpp │ │ ├── edge_se3Switchable.h │ │ ├── edge_switchPrior.cpp │ │ ├── edge_switchPrior.h │ │ ├── types_g2o_robust.cpp │ │ ├── vertex_switchLinear.cpp │ │ └── vertex_switchLinear.h │ │ ├── gtsam │ │ ├── DerivedValue.h │ │ ├── betweenFactorMaxMix.h │ │ ├── betweenFactorSwitchable.h │ │ ├── switchVariableLinear.h │ │ └── switchVariableSigmoid.h │ │ └── readme.txt │ ├── pcl18 │ ├── readme.txt │ └── surface │ │ ├── impl │ │ ├── organized_fast_mesh.hpp │ │ └── texture_mapping.hpp │ │ ├── organized_fast_mesh.h │ │ └── texture_mapping.h │ ├── python │ ├── PyDescriptor.cpp │ ├── PyDescriptor.h │ ├── PyDetector.cpp │ ├── PyDetector.h │ ├── PyMatcher.cpp │ ├── PyMatcher.h │ ├── PythonInterface.cpp │ ├── rtabmap_netvlad.py │ ├── rtabmap_oanet.py │ ├── rtabmap_superglue.py │ └── rtabmap_superpoint.py │ ├── resources │ ├── .gitignore │ ├── DatabaseSchema.sql.in │ └── backward_compatibility │ │ ├── DatabaseSchema_0_16_0.sql │ │ ├── DatabaseSchema_0_16_1.sql │ │ ├── DatabaseSchema_0_16_2.sql │ │ ├── DatabaseSchema_0_17_0.sql │ │ ├── DatabaseSchema_0_18_0.sql │ │ ├── DatabaseSchema_0_18_3.sql │ │ └── DatabaseSchema_0_20_0.sql │ ├── rtflann │ ├── algorithms │ │ ├── all_indices.h │ │ ├── autotuned_index.h │ │ ├── center_chooser.h │ │ ├── composite_index.h │ │ ├── dist.h │ │ ├── hierarchical_clustering_index.h │ │ ├── kdtree_index.h │ │ ├── kdtree_single_index.h │ │ ├── kmeans_index.h │ │ ├── linear_index.h │ │ ├── lsh_index.h │ │ └── nn_index.h │ ├── config.h │ ├── defines.h │ ├── ext │ │ ├── lz4.c │ │ ├── lz4.h │ │ ├── lz4hc.c │ │ └── lz4hc.h │ ├── flann.hpp │ ├── general.h │ ├── nn │ │ ├── ground_truth.h │ │ ├── index_testing.h │ │ └── simplex_downhill.h │ ├── readme.txt │ └── util │ │ ├── allocator.h │ │ ├── any.h │ │ ├── dynamic_bitset.h │ │ ├── heap.h │ │ ├── logger.h │ │ ├── lsh_table.h │ │ ├── matrix.h │ │ ├── object_factory.h │ │ ├── params.h │ │ ├── random.h │ │ ├── result_set.h │ │ ├── sampling.h │ │ ├── saving.h │ │ ├── serialization.h │ │ └── timer.h │ ├── rvl_codec.cpp │ ├── sqlite3 │ ├── readme.txt │ ├── sqlite3.c │ ├── sqlite3.h │ └── sqlite3ext.h │ ├── stereo │ ├── StereoBM.cpp │ └── StereoSGBM.cpp │ ├── superpoint_torch │ ├── SuperPoint.cc │ └── SuperPoint.h │ ├── util2d.cpp │ ├── util3d.cpp │ ├── util3d_correspondences.cpp │ ├── util3d_features.cpp │ ├── util3d_filtering.cpp │ ├── util3d_mapping.cpp │ ├── util3d_motion_estimation.cpp │ ├── util3d_registration.cpp │ ├── util3d_surface.cpp │ └── util3d_transforms.cpp ├── data ├── BoxImgs │ ├── 1.png │ └── 2.png ├── Dictionary49k.txt.zip ├── README ├── check-108.pdf ├── presets │ ├── camera_tof_icp.ini │ └── lidar3d_icp.ini ├── samples.zip ├── samples │ ├── 1.jpg │ ├── 10.jpg │ ├── 11.jpg │ ├── 12.jpg │ ├── 13.jpg │ ├── 14.jpg │ ├── 15.jpg │ ├── 16.jpg │ ├── 17.jpg │ ├── 18.jpg │ ├── 19.jpg │ ├── 2.jpg │ ├── 20.jpg │ ├── 21.jpg │ ├── 22.jpg │ ├── 23.jpg │ ├── 24.jpg │ ├── 25.jpg │ ├── 26.jpg │ ├── 27.jpg │ ├── 28.jpg │ ├── 29.jpg │ ├── 3.jpg │ ├── 30.jpg │ ├── 31.jpg │ ├── 32.jpg │ ├── 33.jpg │ ├── 34.jpg │ ├── 35.jpg │ ├── 36.jpg │ ├── 37.jpg │ ├── 38.jpg │ ├── 39.jpg │ ├── 4.jpg │ ├── 40.jpg │ ├── 41.jpg │ ├── 42.jpg │ ├── 43.jpg │ ├── 44.jpg │ ├── 45.jpg │ ├── 46.jpg │ ├── 47.jpg │ ├── 48.jpg │ ├── 49.jpg │ ├── 5.jpg │ ├── 50.jpg │ ├── 51.jpg │ ├── 52.jpg │ ├── 53.jpg │ ├── 54.jpg │ ├── 55.jpg │ ├── 56.jpg │ ├── 57.jpg │ ├── 58.jpg │ ├── 59.jpg │ ├── 6.jpg │ ├── 60.jpg │ ├── 61.jpg │ ├── 62.jpg │ ├── 63.jpg │ ├── 64.jpg │ ├── 65.jpg │ ├── 66.jpg │ ├── 67.jpg │ ├── 68.jpg │ ├── 69.jpg │ ├── 7.jpg │ ├── 70.jpg │ ├── 71.jpg │ ├── 72.jpg │ ├── 73.jpg │ ├── 74.jpg │ ├── 75.jpg │ ├── 76.jpg │ ├── 77.jpg │ ├── 78.jpg │ ├── 79.jpg │ ├── 8.jpg │ ├── 80.jpg │ ├── 81.jpg │ ├── 82.jpg │ ├── 83.jpg │ ├── 84.jpg │ └── 9.jpg └── samples_GT.bmp ├── docker ├── README.md ├── bionic │ ├── Dockerfile │ ├── android │ │ ├── Dockerfile │ │ ├── deps.bash │ │ └── rtabmap_apiXX │ │ │ ├── Dockerfile │ │ │ └── rtabmap.bash │ └── hooks │ │ ├── build │ │ └── post_push ├── focal-foxy │ ├── Dockerfile │ └── deps │ │ ├── Dockerfile │ │ └── ros_entrypoint.sh ├── focal │ ├── Dockerfile │ └── deps │ │ └── Dockerfile ├── frontiers2022 │ └── Dockerfile ├── jammy-iron │ ├── Dockerfile │ └── deps │ │ ├── Dockerfile │ │ └── ros_entrypoint.sh ├── jammy │ ├── Dockerfile │ └── deps │ │ └── Dockerfile ├── jfr2018 │ ├── Dockerfile │ ├── README.md │ ├── latest │ │ └── Dockerfile │ ├── rtabmap_msckf_ubuntu_16_compatibility.patch │ ├── rtabmap_opencv310_backward_compatibility.patch │ ├── run_all.sh │ ├── run_euroc_datasets.sh │ ├── run_kitti_datasets.sh │ └── run_tum_datasets.sh ├── latest_deps │ └── Dockerfile ├── noble-kilted │ ├── Dockerfile │ └── deps │ │ └── Dockerfile ├── noble │ ├── Dockerfile │ └── deps │ │ └── Dockerfile ├── trusty │ └── Dockerfile └── xenial │ ├── Dockerfile │ ├── android │ ├── Dockerfile │ ├── install_deps.bash │ ├── install_deps_host.bash │ ├── setup_android_env.bash │ └── tango │ │ ├── Dockerfile │ │ ├── build.bash │ │ └── tango-dev │ │ └── Dockerfile │ └── hooks │ ├── build │ └── post_push ├── examples ├── BOWMapping │ ├── CMakeLists.txt │ └── main.cpp ├── CMakeLists.txt ├── LidarMapping │ ├── CMakeLists.txt │ ├── MapBuilder.h │ └── main.cpp ├── NoEventsExample │ ├── CMakeLists.txt │ ├── MapBuilder.h │ └── main.cpp ├── RGBDMapping │ ├── CMakeLists.txt │ ├── MapBuilder.h │ └── main.cpp └── WifiMapping │ ├── CMakeLists.txt │ ├── MapBuilder.h │ ├── MapBuilderWifi.h │ ├── WifiOSX.h │ ├── WifiOSX.mm │ ├── WifiThread.h │ ├── main.cpp │ └── screenshot.jpg ├── guilib ├── CMakeLists.txt ├── include │ └── rtabmap │ │ ├── gui │ │ ├── AboutDialog.h │ │ ├── CalibrationDialog.h │ │ ├── CameraViewer.h │ │ ├── CloudViewer.h │ │ ├── CloudViewerCellPicker.h │ │ ├── CloudViewerInteractorStyle.h │ │ ├── ConsoleWidget.h │ │ ├── CreateSimpleCalibrationDialog.h │ │ ├── DataRecorder.h │ │ ├── DatabaseViewer.h │ │ ├── DepthCalibrationDialog.h │ │ ├── EditConstraintDialog.h │ │ ├── EditDepthArea.h │ │ ├── EditMapArea.h │ │ ├── ExportBundlerDialog.h │ │ ├── ExportCloudsDialog.h │ │ ├── ExportDialog.h │ │ ├── GraphViewer.h │ │ ├── ImageView.h │ │ ├── KeypointItem.h │ │ ├── LinkRefiningDialog.h │ │ ├── LoopClosureViewer.h │ │ ├── MainWindow.h │ │ ├── MapVisibilityWidget.h │ │ ├── MultiSessionLocSubView.h │ │ ├── MultiSessionLocWidget.h │ │ ├── OdometryViewer.h │ │ ├── ParametersToolBox.h │ │ ├── PdfPlot.h │ │ ├── PostProcessingDialog.h │ │ ├── PreferencesDialog.h │ │ ├── ProgressDialog.h │ │ ├── RecoveryState.h │ │ ├── StatsToolBox.h │ │ └── TexturingState.h │ │ └── utilite │ │ ├── UCv2Qt.h │ │ ├── UImageView.h │ │ └── UPlot.h └── src │ ├── 3rdParty │ ├── QMultiComboBox.cpp │ ├── QMultiComboBox.h │ └── lgpl-2.1.txt │ ├── AboutDialog.cpp │ ├── CMakeLists.txt │ ├── CalibrationDialog.cpp │ ├── CameraViewer.cpp │ ├── CloudViewer.cpp │ ├── CloudViewerCellPicker.cpp │ ├── CloudViewerInteractorStyle.cpp │ ├── ConsoleWidget.cpp │ ├── CreateSimpleCalibrationDialog.cpp │ ├── DataRecorder.cpp │ ├── DatabaseViewer.cpp │ ├── DepthCalibrationDialog.cpp │ ├── EditConstraintDialog.cpp │ ├── EditDepthArea.cpp │ ├── EditMapArea.cpp │ ├── ExportBundlerDialog.cpp │ ├── ExportCloudsDialog.cpp │ ├── ExportDialog.cpp │ ├── GraphViewer.cpp │ ├── GuiLib.qrc │ ├── ImageView.cpp │ ├── KeypointItem.cpp │ ├── LinkRefiningDialog.cpp │ ├── LoopClosureViewer.cpp │ ├── MainWindow.cpp │ ├── MapVisibilityWidget.cpp │ ├── MultiSessionLocSubView.cpp │ ├── MultiSessionLocWidget.cpp │ ├── OdometryViewer.cpp │ ├── ParametersToolBox.cpp │ ├── PdfPlot.cpp │ ├── PostProcessingDialog.cpp │ ├── PreferencesDialog.cpp │ ├── ProgressDialog.cpp │ ├── StatsToolBox.cpp │ ├── chisel_conversions.h │ ├── images │ ├── IntRoLab.png │ ├── IntRoLabSmall.png │ ├── Pause.ico │ ├── PauseLoopRejected.ico │ ├── PauseNormal.png │ ├── PauseNormalRed.png │ ├── PauseOnLocalLoop.ico │ ├── PauseOnLoop.ico │ ├── Play1Normal.png │ ├── Plot.ico │ ├── Plot16.png │ ├── Plot48.png │ ├── RTAB-Map.ico │ ├── RTAB-Map.png │ ├── RTAB-Map100.png │ ├── RTAB-Map2.png │ ├── Stop1Normal.png │ ├── Stop1NormalYellow.png │ ├── astra.png │ ├── bumblebee2.png │ ├── crosshatch_metal_grille_9280154_150.JPG │ ├── d415.png │ ├── d435.png │ ├── document-new.png │ ├── document-open.png │ ├── document-properties.png │ ├── document-save.png │ ├── k4a.png │ ├── kinect_xbox_360.png │ ├── kinect_xbox_one.png │ ├── l515.png │ ├── mag_glass.png │ ├── metal_7280826_512.jpg │ ├── mynteyes.png │ ├── oakd.png │ ├── oakd_lite.png │ ├── oakdpro.png │ ├── r200.png │ ├── seer_sense_DS80.png │ ├── sense.png │ ├── sr300.png │ ├── system-log-out.png │ ├── t265.png │ ├── tara.png │ ├── view-refresh.png │ ├── webcam.png │ ├── xtion_pro_live.png │ ├── zed.png │ └── zr300.png │ ├── opencv │ ├── vtkImageMatSource.cpp │ └── vtkImageMatSource.h │ ├── qss │ └── default.qss │ ├── ui │ ├── DatabaseViewer.ui │ ├── aboutDialog.ui │ ├── calibrationDialog.ui │ ├── consoleWidget.ui │ ├── createSimpleCalibrationDialog.ui │ ├── depthCalibrationDialog.ui │ ├── editConstraintDialog.ui │ ├── exportBundlerDialog.ui │ ├── exportCloudsDialog.ui │ ├── exportDialog.ui │ ├── linkRefiningDialog.ui │ ├── loopClosureViewer.ui │ ├── mainWindow.ui │ ├── multiSessionLocSubView.ui │ ├── postProcessingDialog.ui │ └── preferencesDialog.ui │ └── utilite │ └── UPlot.cpp ├── mainpage.dox ├── package.xml ├── tools ├── CMakeLists.txt ├── Calibration │ ├── CMakeLists.txt │ └── main.cpp ├── Camera │ ├── CMakeLists.txt │ └── main.cpp ├── CameraRGBD │ ├── CMakeLists.txt │ └── main.cpp ├── CleanupLocalGrids │ ├── CMakeLists.txt │ └── main.cpp ├── ConsoleApp │ ├── CMakeLists.txt │ └── main.cpp ├── DataRecorder │ ├── CMakeLists.txt │ └── main.cpp ├── DatabaseViewer │ ├── CMakeLists.txt │ └── main.cpp ├── DetectMoreLoopClosures │ ├── CMakeLists.txt │ └── main.cpp ├── EpipolarGeometry │ ├── CMakeLists.txt │ └── main.cpp ├── EurocDataset │ ├── CMakeLists.txt │ └── main.cpp ├── Export │ ├── CMakeLists.txt │ └── main.cpp ├── ExtractObject │ ├── CMakeLists.txt │ └── main.cpp ├── GlobalBundleAdjustment │ ├── CMakeLists.txt │ └── main.cpp ├── ImagesJoiner │ ├── CMakeLists.txt │ └── main.cpp ├── Info │ ├── CMakeLists.txt │ └── main.cpp ├── KittiDataset │ ├── CMakeLists.txt │ └── main.cpp ├── LidarViewer │ ├── CMakeLists.txt │ └── main.cpp ├── Matcher │ ├── CMakeLists.txt │ └── main.cpp ├── OdometryViewer │ ├── CMakeLists.txt │ └── main.cpp ├── Recovery │ ├── CMakeLists.txt │ └── main.cpp ├── Report │ ├── CMakeLists.txt │ └── main.cpp ├── Reprocess │ ├── CMakeLists.txt │ └── main.cpp ├── RgbdDataset │ ├── CMakeLists.txt │ └── main.cpp ├── StereoEval │ ├── CMakeLists.txt │ ├── io.h │ └── main.cpp └── VocabularyComparison │ ├── CMakeLists.txt │ └── main.cpp └── utilite ├── CMakeLists.txt ├── include └── rtabmap │ └── utilite │ ├── Posix │ └── UThreadC.h │ ├── UConversion.h │ ├── UDestroyer.h │ ├── UDirectory.h │ ├── UEvent.h │ ├── UEventsHandler.h │ ├── UEventsManager.h │ ├── UEventsSender.h │ ├── UException.h │ ├── UFile.h │ ├── ULogger.h │ ├── UMath.h │ ├── UMutex.h │ ├── UObjDeletionThread.h │ ├── UProcessInfo.h │ ├── USemaphore.h │ ├── UStl.h │ ├── UThread.h │ ├── UThreadC.h │ ├── UThreadNode.h │ ├── UTimer.h │ ├── UVariant.h │ ├── UtiLite.h │ └── Win32 │ ├── UThreadC.h │ └── UWin32.h ├── resource_generator ├── CMakeLists.txt └── main.cpp └── src ├── CMakeLists.txt ├── UConversion.cpp ├── UDirectory.cpp ├── UEventsHandler.cpp ├── UEventsManager.cpp ├── UEventsSender.cpp ├── UFile.cpp ├── ULogger.cpp ├── UProcessInfo.cpp ├── UThread.cpp ├── UTimer.cpp └── UVariant.cpp /.devcontainer/android/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "image": "introlab3it/rtabmap:android-deps", 3 | "customizations": { 4 | "vscode": { 5 | "extensions": ["ms-vscode.cpptools-themes", "ms-vscode.cmake-tools", "vscjava.vscode-java-pack"] 6 | } 7 | }, 8 | "runArgs": ["--privileged", "--network=host"] 9 | } 10 | -------------------------------------------------------------------------------- /.devcontainer/bionic/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "image": "introlab3it/rtabmap:18.04", 3 | "customizations": { 4 | "vscode": { 5 | "extensions": ["ms-vscode.cpptools-themes", "ms-vscode.cmake-tools"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.devcontainer/focal/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "image": "introlab3it/rtabmap:20.04", 3 | "customizations": { 4 | "vscode": { 5 | "extensions": ["ms-vscode.cpptools-themes", "ms-vscode.cmake-tools"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.devcontainer/jammy/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "image": "introlab3it/rtabmap:22.04", 3 | "customizations": { 4 | "vscode": { 5 | "extensions": ["ms-vscode.cpptools-themes", "ms-vscode.cmake-tools"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.devcontainer/noble/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "image": "introlab3it/rtabmap:24.04", 3 | "customizations": { 4 | "vscode": { 5 | "extensions": ["ms-vscode.cpptools-themes", "ms-vscode.cmake-tools"] 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | build/* 2 | build_* 3 | -------------------------------------------------------------------------------- /.github/workflows/cmake.yml: -------------------------------------------------------------------------------- 1 | name: CMake 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | pull_request: 8 | branches: 9 | - '**' 10 | 11 | env: 12 | BUILD_TYPE: Release 13 | 14 | jobs: 15 | build: 16 | name: ${{ matrix.os }} 17 | runs-on: ${{ matrix.os }} 18 | strategy: 19 | fail-fast: false 20 | matrix: 21 | os: [ubuntu-24.04, ubuntu-22.04] 22 | 23 | steps: 24 | - name: Install dependencies 25 | run: | 26 | DEBIAN_FRONTEND=noninteractive 27 | sudo apt-get update 28 | sudo apt-get -y install libopencv-dev libpcl-dev git cmake software-properties-common libyaml-cpp-dev 29 | 30 | - uses: actions/checkout@v4 31 | 32 | - name: Configure CMake 33 | run: | 34 | cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} 35 | 36 | - name: Build 37 | run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} 38 | 39 | - name: Info 40 | working-directory: ${{github.workspace}}/build/bin 41 | run: | 42 | ./rtabmap-console --version 43 | 44 | # - name: Test 45 | # working-directory: ${{github.workspace}}/build 46 | # # Execute tests defined by the CMake configuration. 47 | # # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail 48 | # run: ctest -C ${{env.BUILD_TYPE}} 49 | 50 | -------------------------------------------------------------------------------- /.github/workflows/scheduled-stats.yml: -------------------------------------------------------------------------------- 1 | name: RTAB-Map Scheduled Stats Extraction From GitHub 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: '0 5 * * *' 7 | jobs: 8 | get_stats: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Update Stats 12 | uses: introlab/github-stats-action@v1 13 | with: 14 | github-stats-token: ${{ secrets.STATS_TOKEN }} 15 | google-application-credentials: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} 16 | spreadsheet-id: ${{ secrets.SPREADSHEET_ID }} 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /lib 2 | .DS_Store 3 | .settings/language.settings.xml 4 | .idea/ 5 | .vscode 6 | cmake-build-debug/ 7 | app/android/.classpath 8 | app/android/.project 9 | app/android/AndroidManifest.xml 10 | app/android/res/raw/ 11 | compile_flags.txt 12 | tags 13 | build_* 14 | *.bak 15 | -------------------------------------------------------------------------------- /.settings/org.eclipse.cdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | environment/project/0.1790260204.1906025362.1064002412/append=true 3 | environment/project/0.1790260204.1906025362.1064002412/appendContributed=true 4 | -------------------------------------------------------------------------------- /app/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | IF(ANDROID) 3 | ADD_SUBDIRECTORY( android ) 4 | ELSE() 5 | ADD_SUBDIRECTORY( src ) 6 | ENDIF() -------------------------------------------------------------------------------- /app/android/.gitignore: -------------------------------------------------------------------------------- 1 | /bin/ 2 | /gen/ 3 | -------------------------------------------------------------------------------- /app/android/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.6 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.source=1.6 12 | -------------------------------------------------------------------------------- /app/android/ant.properties.in: -------------------------------------------------------------------------------- 1 | builddir=@CMAKE_CURRENT_BINARY_DIR@ 2 | srcdir=@CMAKE_CURRENT_SOURCE_DIR@ 3 | android.abi=@ANDROID_ABI@ 4 | 5 | source.dir=${srcdir}/src 6 | gen.dir=${builddir}/gen 7 | out.dir=${builddir}/bin 8 | asset.dir=${builddir}/assets 9 | resource.absolute.dir=${srcdir}/res 10 | 11 | jar.libs.dir=${builddir}/libs 12 | external.libs.dir=${builddir}/libs 13 | native.libs.dir=${builddir}/libs 14 | -------------------------------------------------------------------------------- /app/android/custom_rules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/android/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/ic_launcher-web.png -------------------------------------------------------------------------------- /app/android/info.txt.in: -------------------------------------------------------------------------------- 1 |

Real-Time Appearance-Based Mapping

2 | Version @RTABMAP_VERSION@
3 | Author: Mathieu Labbé
4 | Copyright 2016-2020
5 | IntRoLab - Université de Sherbrooke
6 | http://introlab.github.io/rtabmap

7 | 8 | -------------------------------------------------------------------------------- /app/android/jni/.gitignore: -------------------------------------------------------------------------------- 1 | CameraAvailability.h 2 | -------------------------------------------------------------------------------- /app/android/jni/quad_color.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_QUADCOLOR_H_ 18 | #define TANGO_GL_QUADCOLOR_H_ 19 | 20 | #include "tango-gl/drawable_object.h" 21 | 22 | class QuadColor : public tango_gl::DrawableObject { 23 | public: 24 | QuadColor(float size); 25 | QuadColor(float widthLeft, 26 | float widthRight, 27 | float heightBottom, 28 | float heightTop); 29 | QuadColor(const QuadColor& other) = delete; 30 | QuadColor& operator=(const QuadColor&) = delete; 31 | virtual ~QuadColor() {} 32 | 33 | void Render(const glm::mat4& projection_mat, const glm::mat4& view_mat) const; 34 | }; 35 | #endif // TANGO_GL_QUADCOLOR_H_ 36 | -------------------------------------------------------------------------------- /app/android/jni/resources/text_atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/jni/resources/text_atlas.png -------------------------------------------------------------------------------- /app/android/jni/tango-gl/circle.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "tango-gl/circle.h" 18 | 19 | namespace tango_gl { 20 | Circle::Circle(float radius, int resolution) : Mesh(GL_TRIANGLE_FAN){ 21 | SetShader(); 22 | std::vector vertices; 23 | vertices.reserve(3 * (resolution + 2)); 24 | vertices.push_back(0); 25 | vertices.push_back(0); 26 | vertices.push_back(0); 27 | float delta_theta = M_PI * 2.0f / static_cast(resolution); 28 | for (int i = resolution; i >= 0; i--) { 29 | float theta = delta_theta * static_cast(i); 30 | vertices.push_back(cos(theta) * radius); 31 | vertices.push_back(sin(theta) * radius); 32 | vertices.push_back(0); 33 | } 34 | SetVertices(vertices); 35 | } 36 | } // namespace tango_gl 37 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/axis.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_AXIS_H_ 18 | #define TANGO_GL_AXIS_H_ 19 | 20 | #include "tango-gl/line.h" 21 | 22 | namespace tango_gl { 23 | class Axis : public Line { 24 | public: 25 | Axis(); 26 | void Render(const glm::mat4& projection_mat, const glm::mat4& view_mat) const; 27 | private: 28 | GLuint attrib_colors_; 29 | std::vector vec_colors_; 30 | }; 31 | } // namespace tango_gl 32 | #endif // TANGO_GL_AXIS_H_ 33 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/circle.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_CIRCLE_H_ 18 | #define TANGO_GL_CIRCLE_H_ 19 | 20 | #include "tango-gl/mesh.h" 21 | 22 | namespace tango_gl { 23 | class Circle : public Mesh { 24 | public: 25 | Circle(float radius, int resolution); 26 | }; 27 | } // namespace tango_gl 28 | #endif // TANGO_GL_CIRCLE_H_ 29 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/color.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_COLOR_H_ 18 | #define TANGO_GL_COLOR_H_ 19 | 20 | namespace tango_gl { 21 | class Color { 22 | public: 23 | Color() : r(0), g(0), b(0) {} 24 | Color(float red, float green, float blue) : r(red), g(green), b(blue) {} 25 | Color(const Color&) = default; 26 | Color& operator=(const Color&) = default; 27 | 28 | float r; 29 | float g; 30 | float b; 31 | }; 32 | } // namespace tango_gl 33 | #endif // TANGO_GL_COLOR_H_ -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/cube.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_CUBE_H_ 18 | #define TANGO_GL_CUBE_H_ 19 | 20 | #include "tango-gl/mesh.h" 21 | 22 | namespace tango_gl { 23 | class Cube : public Mesh { 24 | public: 25 | Cube(); 26 | }; 27 | } // namespace tango_gl 28 | #endif // TANGO_GL_CUBE_H_ 29 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/frustum.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_FRUSTUM_H_ 18 | #define TANGO_GL_FRUSTUM_H_ 19 | 20 | #include "tango-gl/line.h" 21 | 22 | namespace tango_gl { 23 | class Frustum : public Line { 24 | public: 25 | Frustum(); 26 | }; 27 | } // namespace tango_gl 28 | #endif // TANGO_GL_FRUSTUM_H_ 29 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/goal_marker.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * Distributed under the Project Tango Preview Development Kit (PDK) Agreement. 4 | * CONFIDENTIAL. AUTHORIZED USE ONLY. DO NOT REDISTRIBUTE. 5 | */ 6 | 7 | #ifndef TANGO_GL_GOAL_MARKER_H_ 8 | #define TANGO_GL_GOAL_MARKER_H_ 9 | 10 | #include 11 | 12 | namespace tango_gl { 13 | class GoalMarker : public Mesh { 14 | public: 15 | GoalMarker(); 16 | }; 17 | } // namespace tango_gl 18 | #endif // TANGO_GL_GOAL_MARKER_H_ 19 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/grid.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_GRID_H_ 18 | #define TANGO_GL_GRID_H_ 19 | 20 | #include "tango-gl/line.h" 21 | 22 | namespace tango_gl { 23 | class Grid : public Line { 24 | public: 25 | Grid(float density = 1.0f, int qx = 50, int qy = 50); 26 | }; 27 | } // namespace tango_gl 28 | #endif // TANGO_GL_GRID_H_ 29 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/line.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_LINE_H_ 18 | #define TANGO_GL_LINE_H_ 19 | 20 | #include "tango-gl/drawable_object.h" 21 | 22 | namespace tango_gl { 23 | class Line : public DrawableObject { 24 | public: 25 | Line(float line_width, GLenum render_mode); 26 | void SetLineWidth(const float pixels); 27 | void Render(const glm::mat4& projection_mat, const glm::mat4& view_mat) const; 28 | void UpdateLineVertices(const std::vector& vec_vertices) { 29 | vec_vertices_ = vec_vertices; 30 | } 31 | 32 | protected: 33 | float line_width_; 34 | std::vector vec_vertices_; 35 | }; 36 | } // namespace tango_gl 37 | #endif // TANGO_GL_LINE_H_ -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/quad.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_QUAD_H_ 18 | #define TANGO_GL_QUAD_H_ 19 | 20 | #include "tango-gl/drawable_object.h" 21 | 22 | namespace tango_gl { 23 | class Quad : public DrawableObject { 24 | public: 25 | Quad(); 26 | Quad(const Quad& other) = delete; 27 | Quad& operator=(const Quad&) = delete; 28 | ~Quad(); 29 | 30 | void Render(const glm::mat4& projection_mat, const glm::mat4& view_mat) const; 31 | void SetTextureId(GLuint texture_id); 32 | 33 | private: 34 | GLuint vertex_buffer_; 35 | GLuint shader_program_; 36 | GLuint attrib_vertices_; 37 | GLuint texture_coords_; 38 | GLuint texture_handle; 39 | GLuint uniform_mvp_mat_; 40 | 41 | GLuint texture_id_; 42 | }; 43 | } // namespace tango_gl 44 | #endif // TANGO_GL_QUAD_H_ 45 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/segment.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_SEGMENT_H_ 18 | #define TANGO_GL_SEGMENT_H_ 19 | 20 | #include "glm/glm.hpp" 21 | 22 | namespace tango_gl { 23 | class Segment { 24 | public: 25 | Segment() : start(glm::vec3(0, 0, 0)), end(glm::vec3(0, 0, 0)) {} 26 | Segment(const glm::vec3& segment_start, const glm::vec3& segment_end) 27 | : start(segment_start), end(segment_end) {} 28 | Segment(const Segment&) = default; 29 | Segment& operator=(const Segment&) = default; 30 | 31 | glm::vec3 start; 32 | glm::vec3 end; 33 | }; 34 | } // namespace tango_gl 35 | #endif // TANGO_GL_SEGMENT_H_ 36 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/segment_drawable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_SEGMENT_DRAWABLE_H_ 18 | #define TANGO_GL_SEGMENT_DRAWABLE_H_ 19 | 20 | #include "tango-gl/line.h" 21 | #include "tango-gl/segment.h" 22 | 23 | namespace tango_gl { 24 | class SegmentDrawable : public Line { 25 | public: 26 | SegmentDrawable(); 27 | void UpdateSegment(const Segment& segment); 28 | }; 29 | } // namespace tango_gl 30 | #endif // TANGO_GL_SEGMENT_DRAWABLE_H_ 31 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/shaders.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_SHADERS_H_ 18 | #define TANGO_GL_SHADERS_H_ 19 | 20 | #include 21 | 22 | namespace tango_gl { 23 | namespace shaders { 24 | std::string GetBasicVertexShader(); 25 | std::string GetBasicFragmentShader(); 26 | std::string GetColorVertexShader(); 27 | std::string GetVideoOverlayVertexShader(); 28 | std::string GetVideoOverlayFragmentShader(); 29 | std::string GetShadedVertexShader(); 30 | } // namespace shaders 31 | } // namespace tango_gl 32 | #endif // TANGO_GL_SHADERS_H_ 33 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/texture.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_TEXTURE_H_ 18 | #define TANGO_GL_TEXTURE_H_ 19 | 20 | #include 21 | 22 | #ifdef __ANDROID__ 23 | #include 24 | #endif 25 | 26 | #include "tango-gl/util.h" 27 | 28 | namespace tango_gl { 29 | class Texture { 30 | public: 31 | Texture(const char* file_path); 32 | Texture(const Texture& other) = delete; 33 | Texture& operator=(const Texture&) = delete; 34 | ~Texture(); 35 | 36 | #ifdef __ANDROID__ 37 | bool LoadFromPNG(const char* file_path); 38 | #endif 39 | GLuint GetTextureID() const; 40 | 41 | private: 42 | #ifdef __ANDROID__ 43 | png_uint_32 width_, height_; 44 | #endif 45 | int bit_depth_, color_type_; 46 | char* byte_data_; 47 | GLuint texture_id_; 48 | }; 49 | } // namespace tango_gl 50 | #endif // TANGO_GL_TEXTURE_H_ 51 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/trace.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_TRACE_H_ 18 | #define TANGO_GL_TRACE_H_ 19 | 20 | #include "tango-gl/line.h" 21 | 22 | namespace tango_gl { 23 | class Trace : public Line { 24 | public: 25 | Trace(); 26 | void UpdateVertexArray(const glm::vec3& v); 27 | void ClearVertexArray(); 28 | }; 29 | } // namespace tango_gl 30 | #endif // TANGO_GL_TRACE_H_ 31 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/triangle.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_TRIANGLE_H_ 18 | #define TANGO_GL_TRIANGLE_H_ 19 | 20 | #include "tango-gl/mesh.h" 21 | 22 | namespace tango_gl { 23 | class Triangle : public Mesh { 24 | public: 25 | Triangle(); 26 | }; 27 | } // namespace tango_gl 28 | #endif // TANGO_GL_TRIANGLE_H_ 29 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/include/tango-gl/video_overlay.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef TANGO_GL_RENDERER_VIDEO_OVERLAY_H_ 18 | #define TANGO_GL_RENDERER_VIDEO_OVERLAY_H_ 19 | 20 | #include "tango-gl/drawable_object.h" 21 | 22 | namespace tango_gl { 23 | class VideoOverlay : public DrawableObject { 24 | public: 25 | VideoOverlay(); 26 | void Render(const glm::mat4& projection_mat, const glm::mat4& view_mat) const; 27 | GLuint GetTextureId() const { return texture_id_; } 28 | void SetTextureId(GLuint texture_id) { texture_id_ = texture_id; } 29 | 30 | private: 31 | // This id is populated on construction, and is passed to the tango service. 32 | GLuint texture_id_; 33 | 34 | GLuint attrib_texture_coords_; 35 | GLuint uniform_texture_; 36 | GLuint vertex_buffers_[3]; 37 | }; 38 | } // namespace tango_gl 39 | #endif // TANGO_GL_RENDERER_VIDEO_OVERLAY_H_ 40 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/segment_drawable.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "tango-gl/segment_drawable.h" 18 | 19 | namespace tango_gl { 20 | SegmentDrawable::SegmentDrawable() : tango_gl::Line(5.0f, GL_LINES) { 21 | SetShader(); 22 | vec_vertices_.push_back(glm::vec3(0, 0, 0)); 23 | vec_vertices_.push_back(glm::vec3(1.f, 1.f, 1.f)); 24 | } 25 | void SegmentDrawable::UpdateSegment(const Segment& segment) { 26 | vec_vertices_[0] = segment.start; 27 | vec_vertices_[1] = segment.end; 28 | } 29 | } // namespace tango_gl 30 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/trace.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "tango-gl/trace.h" 18 | 19 | namespace tango_gl { 20 | 21 | static const int kMaxTraceLength = 5000; 22 | static const float kDistanceCheck = 0.05f; 23 | 24 | Trace::Trace() : Line(3.0f, GL_LINE_STRIP) { SetShader(); } 25 | 26 | void Trace::UpdateVertexArray(const glm::vec3& v) { 27 | if (vec_vertices_.size() == 0) { 28 | vec_vertices_.push_back(v); 29 | } else { 30 | float dist = glm::distance(vec_vertices_[vec_vertices_.size() - 1], v); 31 | if (dist >= kDistanceCheck) { 32 | vec_vertices_.push_back(v); 33 | } 34 | } 35 | } 36 | 37 | void Trace::ClearVertexArray() { vec_vertices_.clear(); } 38 | } // namespace tango_gl 39 | -------------------------------------------------------------------------------- /app/android/jni/tango-gl/triangle.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Google Inc. All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "tango-gl/triangle.h" 18 | 19 | namespace tango_gl { 20 | 21 | static const GLfloat const_vertices[] 22 | = {-0.15f, 0.0f, 0.0f, 0.15f, 0.0f, 0.0f, 0.0f, 0.0f, -0.2f}; 23 | 24 | static const GLushort const_indices[] = {0, 1, 2}; 25 | 26 | Triangle::Triangle() { 27 | SetShader(); 28 | std::vector vertices( 29 | const_vertices, 30 | const_vertices + sizeof(const_vertices) / sizeof(GLfloat)); 31 | std::vector indices( 32 | const_indices, const_indices + sizeof(const_indices) / sizeof(GLushort)); 33 | SetVertices(vertices, indices); 34 | } 35 | } // namespace tango_gl 36 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/detail/precision.inl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/jni/third-party/include/glm/detail/precision.inl -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/closest_point.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2005-12-30 5 | // Updated : 2008-10-05 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/closest_point.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER detail::tvec3 closestPointOnLine 14 | ( 15 | detail::tvec3 const & point, 16 | detail::tvec3 const & a, 17 | detail::tvec3 const & b 18 | ) 19 | { 20 | T LineLength = distance(a, b); 21 | detail::tvec3 Vector = point - a; 22 | detail::tvec3 LineDirection = (b - a) / LineLength; 23 | 24 | // Project Vector to LineDirection to get the distance of point from a 25 | T Distance = dot(Vector, LineDirection); 26 | 27 | if(Distance <= T(0)) return a; 28 | if(Distance >= LineLength) return b; 29 | return a + LineDirection * Distance; 30 | } 31 | }//namespace glm 32 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/handed_coordinate_space.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2005-12-21 5 | // Updated : 2009-02-19 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/handed_coordinate_space.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER bool rightHanded 14 | ( 15 | detail::tvec3 const & tangent, 16 | detail::tvec3 const & binormal, 17 | detail::tvec3 const & normal 18 | ) 19 | { 20 | return dot(cross(normal, tangent), binormal) > T(0); 21 | } 22 | 23 | template 24 | GLM_FUNC_QUALIFIER bool leftHanded 25 | ( 26 | detail::tvec3 const & tangent, 27 | detail::tvec3 const & binormal, 28 | detail::tvec3 const & normal 29 | ) 30 | { 31 | return dot(cross(normal, tangent), binormal) < T(0); 32 | } 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/log_base.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2008-10-24 5 | // Updated : 2008-10-24 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/log_base.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER genType log( 14 | genType const & x, 15 | genType const & base) 16 | { 17 | assert(x != genType(0)); 18 | 19 | return glm::log(x) / glm::log(base); 20 | } 21 | 22 | VECTORIZE_VEC_SCA(log) 23 | VECTORIZE_VEC_VEC(log) 24 | }//namespace glm 25 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/matrix_cross_product.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2005-12-21 5 | // Updated : 2005-12-21 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/matrix_cross_product.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER detail::tmat3x3 matrixCross3 14 | ( 15 | detail::tvec3 const & x 16 | ) 17 | { 18 | detail::tmat3x3 Result(T(0)); 19 | Result[0][1] = x.z; 20 | Result[1][0] = -x.z; 21 | Result[0][2] = -x.y; 22 | Result[2][0] = x.y; 23 | Result[1][2] = x.x; 24 | Result[2][1] = -x.x; 25 | return Result; 26 | } 27 | 28 | template 29 | GLM_FUNC_QUALIFIER detail::tmat4x4 matrixCross4 30 | ( 31 | detail::tvec3 const & x 32 | ) 33 | { 34 | detail::tmat4x4 Result(T(0)); 35 | Result[0][1] = x.z; 36 | Result[1][0] = -x.z; 37 | Result[0][2] = -x.y; 38 | Result[2][0] = x.y; 39 | Result[1][2] = x.x; 40 | Result[2][1] = -x.x; 41 | return Result; 42 | } 43 | 44 | }//namespace glm 45 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/mixed_product.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2007-04-03 5 | // Updated : 2008-09-17 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/mixed_product.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER T mixedProduct 14 | ( 15 | detail::tvec3 const & v1, 16 | detail::tvec3 const & v2, 17 | detail::tvec3 const & v3 18 | ) 19 | { 20 | return dot(cross(v1, v2), v3); 21 | } 22 | }//namespace glm 23 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/normal.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2005-12-21 5 | // Updated : 2011-06-07 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/normal.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER detail::tvec3 triangleNormal 14 | ( 15 | detail::tvec3 const & p1, 16 | detail::tvec3 const & p2, 17 | detail::tvec3 const & p3 18 | ) 19 | { 20 | return normalize(cross(p1 - p2, p1 - p3)); 21 | } 22 | }//namespace glm 23 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/number_precision.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2007-05-10 5 | // Updated : 2007-05-10 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/number_precision.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/orthonormalize.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2005-12-21 5 | // Updated : 2005-12-21 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/orthonormalize.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER detail::tmat3x3 orthonormalize 14 | ( 15 | const detail::tmat3x3& m 16 | ) 17 | { 18 | detail::tmat3x3 r = m; 19 | 20 | r[0] = normalize(r[0]); 21 | 22 | float d0 = dot(r[0], r[1]); 23 | r[1] -= r[0] * d0; 24 | r[1] = normalize(r[1]); 25 | 26 | float d1 = dot(r[1], r[2]); 27 | d0 = dot(r[0], r[2]); 28 | r[2] -= r[0] * d0 + r[1] * d1; 29 | r[2] = normalize(r[2]); 30 | 31 | return r; 32 | } 33 | 34 | template 35 | GLM_FUNC_QUALIFIER detail::tvec3 orthonormalize 36 | ( 37 | const detail::tvec3& x, 38 | const detail::tvec3& y 39 | ) 40 | { 41 | return normalize(x - y * dot(y, x)); 42 | } 43 | }//namespace glm 44 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/perpendicular.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2005-12-21 5 | // Updated : 2009-03-06 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/perpendicular.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER vecType perp 14 | ( 15 | vecType const & x, 16 | vecType const & Normal 17 | ) 18 | { 19 | return x - proj(x, Normal); 20 | } 21 | }//namespace glm 22 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/polar_coordinates.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2007-03-06 5 | // Updated : 2009-05-01 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/polar_coordinates.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER detail::tvec3 polar 14 | ( 15 | detail::tvec3 const & euclidean 16 | ) 17 | { 18 | T const Length(length(euclidean)); 19 | detail::tvec3 const tmp(euclidean / Length); 20 | T const xz_dist(sqrt(tmp.x * tmp.x + tmp.z * tmp.z)); 21 | 22 | return detail::tvec3( 23 | atan(xz_dist, tmp.y), // latitude 24 | atan(tmp.x, tmp.z), // longitude 25 | xz_dist); // xz distance 26 | } 27 | 28 | template 29 | GLM_FUNC_QUALIFIER detail::tvec3 euclidean 30 | ( 31 | detail::tvec2 const & polar 32 | ) 33 | { 34 | T const latitude(polar.x); 35 | T const longitude(polar.y); 36 | 37 | return detail::tvec3( 38 | cos(latitude) * sin(longitude), 39 | sin(latitude), 40 | cos(latitude) * cos(longitude)); 41 | } 42 | 43 | }//namespace glm 44 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/projection.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2005-12-21 5 | // Updated : 2009-03-06 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/projection.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER vecType proj 14 | ( 15 | vecType const & x, 16 | vecType const & Normal 17 | ) 18 | { 19 | return glm::dot(x, Normal) / glm::dot(Normal, Normal) * Normal; 20 | } 21 | }//namespace glm 22 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/raw_data.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2008-11-19 5 | // Updated : 2008-11-19 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/raw_data.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | // Dependency: 10 | // - GLM core 11 | /////////////////////////////////////////////////////////////////////////////////////////////////// 12 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/std_based_type.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2008-06-08 5 | // Updated : 2008-06-08 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/std_based_type.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/transform.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2005-12-21 5 | // Updated : 2009-04-29 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/transform.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | template 13 | GLM_FUNC_QUALIFIER detail::tmat4x4 translate( 14 | detail::tvec3 const & v) 15 | { 16 | return translate( 17 | detail::tmat4x4(1.0f), v); 18 | } 19 | 20 | template 21 | GLM_FUNC_QUALIFIER detail::tmat4x4 rotate( 22 | T angle, 23 | detail::tvec3 const & v) 24 | { 25 | return rotate( 26 | detail::tmat4x4(1), angle, v); 27 | } 28 | 29 | template 30 | GLM_FUNC_QUALIFIER detail::tmat4x4 scale( 31 | detail::tvec3 const & v) 32 | { 33 | return scale( 34 | detail::tmat4x4(1.0f), v); 35 | } 36 | 37 | }//namespace glm 38 | -------------------------------------------------------------------------------- /app/android/jni/third-party/include/glm/gtx/unsigned_int.inl: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2005-12-24 5 | // Updated : 2008-10-07 6 | // Licence : This source is under MIT License 7 | // File : glm/gtx/unsigned_int.inl 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | namespace glm 11 | { 12 | 13 | }//namespace glm 14 | -------------------------------------------------------------------------------- /app/android/jni/third-party/lib/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/android/libs/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore everything in this directory 2 | * 3 | # Except this file 4 | !.gitignore -------------------------------------------------------------------------------- /app/android/libs/android-support-v4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/libs/android-support-v4.jar -------------------------------------------------------------------------------- /app/android/libs/httpclient-4.2.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/libs/httpclient-4.2.1.jar -------------------------------------------------------------------------------- /app/android/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/res/drawable-xhdpi/start96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/res/drawable-xhdpi/start96.png -------------------------------------------------------------------------------- /app/android/res/drawable-xhdpi/stop96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/res/drawable-xhdpi/stop96.png -------------------------------------------------------------------------------- /app/android/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/android/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/android/res/drawable/custom_seekbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/android/res/layout/about.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /app/android/res/layout/auth_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/android/res/layout/database_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | 22 | -------------------------------------------------------------------------------- /app/android/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | First View 5 | Third-P. View 6 | Top View 7 | Ortho View 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/android/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 150dp 3 | 4 | -------------------------------------------------------------------------------- /app/android/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | -------------------------------------------------------------------------------- /app/android/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/android/src/com/introlab/rtabmap/TextObject.java: -------------------------------------------------------------------------------- 1 | //package ri.blog.opengl008; 2 | package com.introlab.rtabmap; 3 | 4 | public class TextObject { 5 | 6 | public String text; 7 | public float x; 8 | public float y; 9 | public float[] color; 10 | 11 | public TextObject() 12 | { 13 | text = "default"; 14 | x = 0f; 15 | y = 0f; 16 | color = new float[] {1f, 1f, 1f, 1.0f}; 17 | } 18 | 19 | public TextObject(String txt, float xcoord, float ycoord) 20 | { 21 | text = txt; 22 | x = xcoord; 23 | y = ycoord; 24 | color = new float[] {1f, 1f, 1f, 1.0f}; 25 | } 26 | 27 | /*public boolean validate() 28 | { 29 | if(text.compareTo("")==0) return false; 30 | 31 | return true; 32 | }*/ 33 | } 34 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "object": { 3 | "pins": [ 4 | { 5 | "package": "Zip", 6 | "repositoryURL": "https://github.com/marmelroy/Zip.git", 7 | "state": { 8 | "branch": null, 9 | "revision": "bd19d974e8a38cc8d3a88c90c8a107386c3b8ccf", 10 | "version": "2.1.1" 11 | } 12 | } 13 | ] 14 | }, 15 | "version": 1 16 | } 17 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp/.gitignore: -------------------------------------------------------------------------------- 1 | Libraries 2 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map1024.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map120-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map120-1.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map120.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map152.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map167.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map180.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map20.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map29.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map40-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map40-1.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map40-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map40-2.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map40.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map58-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map58-1.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map58.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map60.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map76.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map80-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map80-1.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map80.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Assets.xcassets/AppIcon.appiconset/RTAB-Map87.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Images.xcassets/RTAB-Map1024.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "RTAB-Map1024.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp/Images.xcassets/RTAB-Map1024.imageset/RTAB-Map1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/RTABMapApp/Images.xcassets/RTAB-Map1024.imageset/RTAB-Map1024.png -------------------------------------------------------------------------------- /app/ios/RTABMapApp/PointCloud.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PointCloud.swift 3 | // ThreeDScanner 4 | // 5 | // Created by Steven Roach on 4/3/18. 6 | // Copyright © 2018 Steven Roach. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import SceneKit 11 | 12 | internal struct PointCloud { 13 | internal var points: [vector_float3] = [] 14 | internal var framePointsSizes: [Int32] = [] 15 | internal var frameViewpoints: [SCNVector3] = [] 16 | } 17 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp/PointCloudData.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PointCloudData.swift 3 | // ThreeDScanner 4 | // 5 | // Created by Steven Roach on 4/3/18. 6 | // Copyright © 2018 Steven Roach. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import SceneKit 11 | 12 | internal struct PointCloud { 13 | internal var points: [vector_float3] = [] 14 | internal var pointCloudFrameSizes: [Int32] = [] 15 | internal var pointCloudFrameViewpoints: [SCNVector3] = [] 16 | } 17 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp/RTABMapApp-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #include "NativeWrapper.hpp" 6 | #import 7 | -------------------------------------------------------------------------------- /app/ios/RTABMapApp/RTABMapApp.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.developer.kernel.increased-memory-limit 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/ios/Settings.bundle/en.lproj/Root.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/ios/Settings.bundle/en.lproj/Root.strings -------------------------------------------------------------------------------- /app/src/RTABMap.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/src/RTABMap.icns -------------------------------------------------------------------------------- /app/src/RTABMap.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/app/src/RTABMap.ico -------------------------------------------------------------------------------- /app/src/RTABMap.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON DISCARDABLE "RTABMap.ico" 2 | -------------------------------------------------------------------------------- /archive/2010-LoopClosure/Bayes/adjustLikelihood.m: -------------------------------------------------------------------------------- 1 | function LN = adjustLikelihood(L) 2 | %ADJUSTLIKELIHOOD Adjust the likelihood with std dev and mean. 3 | % LN = adjustLikelihood(L) 4 | % 5 | % L the likelihood (m,1) 6 | % LN the likelihood normalized (m,1) 7 | 8 | m = mean(L); % Calcul mean 9 | s = std(L); % Calcul std dev 10 | LN = zeros(size(L)); 11 | for i=1:length(L) 12 | if L(i) > m + s 13 | LN(i) = (L(i)-s)/m; 14 | else 15 | LN(i) = 1; 16 | end 17 | end -------------------------------------------------------------------------------- /archive/2010-LoopClosure/Bayes/updateDictionary.m: -------------------------------------------------------------------------------- 1 | function DU = updateDictionary(Dict, Sign) 2 | %UPDATEDICTIONARY Update the dictionary with the new signature (place) 3 | % DU = updateDictionary(Dict, Sign) 4 | % 5 | % DU = dictionary updated 6 | % dictionary = [wordId1 SignRefIds...; wordId2 SignRefIds...; ...] 7 | % sign = [signId WordRefIds...] 8 | 9 | signId = Sign(1); 10 | Sign = Sign(Sign~=0); 11 | for i=2:length(Sign) 12 | indexWord = []; 13 | if isempty(Dict) ~= 1 14 | indexWord = find(Dict(:,1) == Sign(i),1); 15 | end 16 | if isempty(indexWord) == 1 17 | Dict(size(Dict,1)+1,1) = Sign(i); %Word id 18 | Dict(size(Dict,1),2) = signId; %Signature id ref 19 | else 20 | ii = 1:length(Dict(indexWord,1:end)); 21 | indexesZero = ii(Dict(indexWord,1:end) == 0); 22 | if isempty(indexesZero) 23 | Dict(indexWord, size(Dict,2)+1) = signId; 24 | else 25 | Dict(indexWord, indexesZero(1)) = signId; 26 | end 27 | end 28 | end 29 | DU = Dict; -------------------------------------------------------------------------------- /archive/2010-LoopClosure/ParticleFilter/pf_filter.m: -------------------------------------------------------------------------------- 1 | 2 | function filtered = pf_filter(x, nParticles, noise, lambda) 3 | 4 | particles = ones(nParticles,1)*x(1) ; 5 | weights = ones(nParticles,1); 6 | filtered=zeros(1,length(x)); 7 | for i = 1:length(x); 8 | for j = 1:nParticles 9 | rn = sqrt(-2.0*log(rand))*cos(2*pi*rand); % randn c++ 10 | noisyP = particles(j) + noise*rn ; 11 | dist = abs(noisyP - x(i)); 12 | tmp = exp(-lambda*dist); 13 | if isfinite(tmp) && tmp > 0 14 | particles(j) = noisyP; 15 | weights(j) = tmp; 16 | end 17 | end 18 | if sum(weights(:)) > 0 19 | weights = weights ./sum(weights(:)); 20 | end 21 | 22 | filtered(i) = weights'*particles; 23 | particles = pf_resample(particles, weights); 24 | end -------------------------------------------------------------------------------- /archive/2010-LoopClosure/ParticleFilter/pf_resample.m: -------------------------------------------------------------------------------- 1 | 2 | function newParticles=pf_resample(particles,weights) 3 | pcum = zeros(length(weights),1); 4 | sum = 0; 5 | for i=1:length(weights) 6 | pcum(i) = weights(i) + sum; 7 | sum = sum + weights(i); 8 | end 9 | pcum = pcum./pcum(end); 10 | newParticles = 0.*particles; 11 | 12 | % 13 | for i = 1:length(newParticles) 14 | indexx = 1; 15 | randnum = rand; 16 | for j = 1:length(pcum) 17 | if(randnum < pcum(j)) 18 | indexx = j; 19 | break; 20 | end 21 | end 22 | newParticles(i) = particles(indexx); 23 | end 24 | -------------------------------------------------------------------------------- /archive/2010-LoopClosure/ParticleFilter/test_pf_filter.m: -------------------------------------------------------------------------------- 1 | 2 | 3 | clc 4 | %close all 5 | 6 | particles = 300; 7 | noiseXYZ = 0.02; 8 | lambdaXYZ = 1; 9 | noiseRPY = 0.005; 10 | lambdaRPY = 250; 11 | noise = [noiseXYZ noiseXYZ noiseXYZ noiseRPY noiseRPY noiseRPY]; 12 | lambda = [lambdaXYZ lambdaXYZ lambdaXYZ lambdaRPY lambdaRPY lambdaRPY]; 13 | axeNames = ['x' 'y' 'z' 'R' 'P' 'Y']; 14 | 15 | % P = [13 x t] (id, incremental odom, incremental ground truth) 16 | T = P(2:7,:); 17 | G = P(8:end,:); 18 | 19 | T(4:end,:) = T(4:end,:)*pi/180; 20 | G(4:end,:) = G(4:end,:)*pi/180; 21 | 22 | 23 | x_filtered = zeros(6, size(T, 2)); 24 | for i=1:6 25 | x=T(i,:); 26 | x=x'; 27 | x_filtered(i,:) = pf_filter([x(2:end); 0], particles, noise(i), lambda(i)); 28 | 29 | end 30 | 31 | figure 32 | for i=1:6 33 | subplot(2,3,i) 34 | x=T(i,:); 35 | x_gt = G(i,:); 36 | plot(1:length(x),cumsum(x),'b', 1:length(x),cumsum(x_filtered(i,:)),'r', 1:length(x),cumsum(x_gt),'g'); 37 | legend(axeNames(i), [axeNames(i) ' filtered'], [axeNames(i) ' gt']) 38 | end 39 | 40 | figure 41 | for i=1:6 42 | subplot(2,3,i) 43 | x=T(i,:); 44 | x_gt = G(i,:); 45 | plot(1:length(x),x,'b', 1:length(x),x_filtered(i,:),'r', 1:length(x),x_gt,'g'); 46 | legend(axeNames(i), [axeNames(i) ' filtered'], [axeNames(i) ' gt']) 47 | end 48 | -------------------------------------------------------------------------------- /archive/2010-LoopClosure/README.md: -------------------------------------------------------------------------------- 1 | 2 | To reproduce results (based on parameters of this [paper](https://www.arxiv.org/abs/2407.15304)): 3 | 4 | ``` 5 | rtabmap-console \ 6 | --Rtabmap/StatisticLogged true\ 7 | --Rtabmap/StatisticLoggedHeaders false\ 8 | --Kp/DetectorStrategy 0\ 9 | --Rtabmap/MemoryThr 300\ 10 | --Rtabmap/LoopRatio 0.9\ 11 | --SURF/HessianThreshold 150\ 12 | --Mem/STMSize 30\ 13 | --Vis/MaxFeatures 400\ 14 | --Kp/TfIdfLikelihoodUsed false\ 15 | --Kp/MaxFeatures 400\ 16 | --Kp/BadSignRatio 0.25\ 17 | --Mem/BadSignaturesIgnored true\ 18 | --Mem/RehearsalSimilarity 0.20\ 19 | --Mem/RecentWmRatio 0.2\ 20 | -gt "~/Downloads/UdeS_1Hz.png"\ 21 | ~/Downloads/UdeS_1Hz 22 | ``` 23 | Adding the ground truth file here is optional to show recall at 100% precision at the end of the process directly without using the octave/MATLAB script below. For NewCollege and CityCentre datasets, `rtabmap-imagesJoiner` can be used to assemble the left and right images together. 24 | 25 | To analyze with Octave/MATLAB, drop `LogF.txt` and `LogI.txt` generated files from command above in ShowLogs directly, then execute `showLogs.m`. 26 | -------------------------------------------------------------------------------- /archive/2010-LoopClosure/ShowLogs/importfile.m: -------------------------------------------------------------------------------- 1 | function [Data] = importfile(fileToRead1) 2 | %IMPORTFILE(FILETOREAD1) 3 | % Imports data from the specified file 4 | % FILETOREAD1: file to read 5 | 6 | % Auto-generated by MATLAB on 07-Oct-2009 10:10:26 7 | 8 | % Import the file 9 | rawData1 = importdata(fileToRead1); 10 | 11 | if isstruct(rawData1) 12 | rawData1=rawData1.data; 13 | end 14 | 15 | % For some simple files (such as a CSV or JPEG files), IMPORTDATA might 16 | % return a simple array. If so, generate a structure so that the output 17 | % matches that from the Import Wizard. 18 | [unused,name] = fileparts(fileToRead1); %#ok 19 | newData1.(genvarname(name)) = rawData1; 20 | 21 | vars = fieldnames(newData1); 22 | if length(vars) > 0 23 | Data = newData1.(vars{1}); 24 | end 25 | 26 | -------------------------------------------------------------------------------- /archive/2010-LoopClosure/ShowLogs/logaHeaders.txt: -------------------------------------------------------------------------------- 1 | fprintf(_foutFloat, "%f %f %f %f %f %f %f %f %f\n", 2 | totalTime, 3 | timeMemoryUpdate, 4 | timeReactivations, 5 | timeLikelihoodCalculation, 6 | timePosteriorCalculation, 7 | timeHypothesesCreation, 8 | timeHypothesesValidation, 9 | timeRealTimeLimitReachedProcess, 10 | timeStatsCreation); 11 | fprintf(_foutInt, "%d %d %d %d\n", 12 | lcHypothesisId, 13 | mostLikelihoodId, 14 | signaturesRemoved, 15 | hessianThr, 16 | wordsNewSign, 17 | dictionarySize); 18 | -------------------------------------------------------------------------------- /archive/2010-LoopClosure/Tests/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains the same tests than the ones used in the c++ library corelib. -------------------------------------------------------------------------------- /archive/2010-LoopClosure/Tests/TestAdjustLikelihood.m: -------------------------------------------------------------------------------- 1 | close all 2 | clear all 3 | 4 | % Test AvpdCore::BayesFilter::adjustLikelihood() 5 | likelihood = [0 0 0 0]; 6 | adjustLikelihoodResult1 = adjustLikelihood(likelihood) 7 | likelihood = [0.3 0.4 0.2 0.9]; 8 | theMean = mean(likelihood) 9 | theSdtDev = std(likelihood) 10 | adjustLikelihoodResult2 = floor(adjustLikelihood(likelihood)*1000) -------------------------------------------------------------------------------- /archive/2010-LoopClosure/Tests/TestBayesFilter.m: -------------------------------------------------------------------------------- 1 | close all 2 | clear all 3 | 4 | % Test AvpdCore::BayesFilter::computePosterior() 5 | prior = 1; 6 | predictionNP = 0.9; 7 | predictionLC = [0.1 0.24 0.18 0.18 0.1 0.1 0.04 0.04 0.01 0.01]; 8 | likelihood = []; 9 | nIter = 10; 10 | 11 | computePosteriorResult = zeros(nIter); 12 | for i=1:nIter 13 | likelihood = [likelihood; 1]; 14 | prediction = generatePrediction(predictionNP, predictionLC, length(likelihood)-1) 15 | if i==1 16 | prior = 1; 17 | %elseif i>2 18 | % prior = [prior;prior(end)]; %use the same probability as the previous neighbor 19 | else 20 | prior = [prior;0]; 21 | end 22 | prior = likelihood .* (prediction' * prior); 23 | prior = prior/sum(prior); %Normalize 24 | computePosteriorResult(1:length(prior),i) = prior; 25 | end 26 | 27 | %Adjust results (don't use float to compare) 28 | computePosteriorResult = floor(computePosteriorResult*1000)'; 29 | disp('computePosteriorResult='); 30 | disp(computePosteriorResult); 31 | r = sum(sum((computePosteriorResult - [1000,0,0,0,0,0,0,0,0,0;900,99,0,0,0,0,0,0,0,0;820,117,62,0,0,0,0,0,0,0;756,111,82,50,0,0,0,0,0,0;704,103,84,67,40,0,0,0,0,0;663,96,82,69,54,32,0,0,0,0;631,90,79,69,58,44,26,0,0,0;604,84,76,68,58,48,36,21,0,0;583,79,73,66,58,49,40,30,17,0;567,74,69,64,58,50,41,33,25,14;]) ~= 0)); 32 | if r ~= 0 33 | error('computePosteriorResult is not valid!') 34 | end 35 | 36 | -------------------------------------------------------------------------------- /archive/2010-LoopClosure/run_all_datasets.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DATASETS_FOLDER="" 4 | if [ $# -eq 1 ] 5 | then 6 | DATASETS_FOLDER=$1 7 | else 8 | echo "Usage: run_all_datasets.sh \"datasets folder\" " 9 | exit 10 | fi 11 | 12 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" 13 | 14 | $SCRIPT_DIR/run_bow.sh $DATASETS_FOLDER/NewCollege $DATASETS_FOLDER/NewCollege.png 15 | if [ -s LogF.txt ]; then 16 | mv LogF.txt $DATASETS_FOLDER/NewCollege/LogF.txt 17 | mv LogI.txt $DATASETS_FOLDER/NewCollege/LogI.txt 18 | fi 19 | $SCRIPT_DIR/run_bow.sh $DATASETS_FOLDER/CityCentre $DATASETS_FOLDER/CityCentre.png 20 | if [ -s LogF.txt ]; then 21 | mv LogF.txt $DATASETS_FOLDER/CityCentre/LogF.txt 22 | mv LogI.txt $DATASETS_FOLDER/CityCentre/LogI.txt 23 | fi 24 | $SCRIPT_DIR/run_bow.sh $DATASETS_FOLDER/UdeS_1Hz $DATASETS_FOLDER/UdeS_1Hz.png 25 | if [ -s LogF.txt ]; then 26 | mv LogF.txt $DATASETS_FOLDER/UdeS_1Hz/LogF.txt 27 | mv LogI.txt $DATASETS_FOLDER/UdeS_1Hz/LogI.txt 28 | fi 29 | 30 | -------------------------------------------------------------------------------- /archive/2010-LoopClosure/run_all_detectors.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DATASET_FOLDER="" 4 | GT_FILE="" 5 | MEMORY_THR=0 6 | if [ $# -ge 2 ] 7 | then 8 | DATASET_FOLDER=$1 9 | GT_FILE=$2 10 | else 11 | echo "Usage: run_all_detectors.sh \"dataset folder\" \"ground truth file\" [\"Rtabmap/MemoryThr=0\"]" 12 | exit 13 | fi 14 | 15 | if [ $# -ge 3 ] 16 | then 17 | MEMORY_THR=$3 18 | fi 19 | 20 | SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" 21 | 22 | $SCRIPT_DIR/run_bow.sh $DATASET_FOLDER $GT_FILE $MEMORY_THR 0 false 23 | mv LogF.txt $DATASET_FOLDER/SurfLogF.txt 24 | mv LogI.txt $DATASET_FOLDER/SurfLogI.txt 25 | $SCRIPT_DIR/run_bow.sh $DATASET_FOLDER $GT_FILE $MEMORY_THR 1 false 26 | mv LogF.txt $DATASET_FOLDER/SiftLogF.txt 27 | mv LogI.txt $DATASET_FOLDER/SiftLogI.txt 28 | $SCRIPT_DIR/run_bow.sh $DATASET_FOLDER $GT_FILE $MEMORY_THR 1 true 29 | mv LogF.txt $DATASET_FOLDER/CudaSiftLogF.txt 30 | mv LogI.txt $DATASET_FOLDER/CudaSiftLogI.txt 31 | $SCRIPT_DIR/run_bow.sh $DATASET_FOLDER $GT_FILE $MEMORY_THR 6 false 32 | mv LogF.txt $DATASET_FOLDER/GfttBriefLogF.txt 33 | mv LogI.txt $DATASET_FOLDER/GfttBriefLogI.txt 34 | #$SCRIPT_DIR/run_bow.sh $DATASET_FOLDER $GT_FILE $MEMORY_THR 11 false 35 | #mv LogF.txt $DATASET_FOLDER/SuperPointLogF.txt 36 | #mv LogI.txt $DATASET_FOLDER/SuperPointLogI.txt 37 | 38 | -------------------------------------------------------------------------------- /archive/2010-LoopClosure/run_bow.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DATASET_FOLDER="" 4 | GT_FILE="" 5 | MEMORY_THR=300 6 | DETECTOR=0 7 | GPU=false 8 | if [ $# -ge 2 ] 9 | then 10 | DATASET_FOLDER=$1 11 | GT_FILE=$2 12 | else 13 | echo "Usage: run_bow.sh \"dataset folder\" \"ground truth file\" [\"Rtabmap/MemoryThr=300\"] [\"Kp/DetectorStrategy=0\"] [\"GPU=false\"]" 14 | exit 15 | fi 16 | 17 | if [ $# -ge 3 ] 18 | then 19 | MEMORY_THR=$3 20 | fi 21 | if [ $# -ge 4 ] 22 | then 23 | DETECTOR=$4 24 | fi 25 | if [ $# -ge 5 ] 26 | then 27 | GPU=$5 28 | fi 29 | 30 | rtabmap-console \ 31 | -quiet \ 32 | --Rtabmap/StatisticLogged true\ 33 | --Rtabmap/StatisticLoggedHeaders false\ 34 | --Kp/DetectorStrategy $DETECTOR\ 35 | --SURF/HessianThreshold 150\ 36 | --Rtabmap/MemoryThr $MEMORY_THR\ 37 | --Rtabmap/LoopRatio 0.9\ 38 | --Mem/STMSize 30\ 39 | --Vis/MaxFeatures 400\ 40 | --Kp/TfIdfLikelihoodUsed false\ 41 | --Kp/MaxFeatures 400\ 42 | --Kp/BadSignRatio 0.25\ 43 | --Mem/BadSignaturesIgnored true\ 44 | --Mem/RehearsalSimilarity 0.20\ 45 | --Mem/RecentWmRatio 0.20\ 46 | --FAST/Gpu $GPU\ 47 | --GFTT/Gpu $GPU\ 48 | --ORB/Gpu $GPU\ 49 | --SIFT/Gpu $GPU\ 50 | --SURF/GpuVersion $GPU\ 51 | -gt "$GT_FILE"\ 52 | "$DATASET_FOLDER" 53 | 54 | -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/images/fig_map_merged_999.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/archive/2022-IlluminationInvariant/images/fig_map_merged_999.jpg -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/images/fig_merged_percentage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/archive/2022-IlluminationInvariant/images/fig_merged_percentage.jpg -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/images/fig_overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/archive/2022-IlluminationInvariant/images/fig_overview.jpg -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/images/fig_single_percentage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/archive/2022-IlluminationInvariant/images/fig_single_percentage.jpg -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/scripts/export_stats.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -lt 1 ] 4 | then 5 | echo "No arguments supplied. It should be the data directory (where the reprocessed map databases are saved)." 6 | exit 7 | fi 8 | DATA=$1 9 | 10 | DETECTOR=(0 1 6 7 9 14 11 111) 11 | 12 | source rtabmap_latest.bash 13 | 14 | for d in "${DETECTOR[@]}" 15 | do 16 | rtabmap-report --export --export_prefix "Stat$d" --loc 32 Loop/Odom_correction_norm/m Loop/Visual_inliers/ Timing/Total/ms Timing/Proximity_by_space_visual/ms Timing/Likelihood_computation/ms Timing/Posterior_computation/ms TimingMem/Keypoints_detection/ms TimingMem/Descriptors_extraction/ms TimingMem/Add_new_words/ms Loop/Map_id/ Keypoint/Current_frame/words Memory/RAM_usage/MB Memory/RAM_estimated/MB Memory/Distance_travelled/m Loop/Distance_since_last_loc/ Memory/Local_graph_size/ Keypoint/Dictionary_size/words "$DATA/$d/loc" 17 | rtabmap-report --export --export_prefix "Consecutive$d" --loc 32 Loop/Map_id/ Loop/Distance_since_last_loc/ "$DATA/$d/consecutive_loc" 18 | done 19 | 20 | -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/scripts/reprocess_maps_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -lt 2 ] 4 | then 5 | echo "No arguments supplied. They should be 2: the input directory (original maps) and the output data directory (where reprocessed map databases will be saved)." 6 | exit 7 | fi 8 | INPUT=$1 9 | OUTPUT=$2 10 | 11 | DETECTOR=(0 1 6 7 9 14 11 111) 12 | 13 | for d in "${DETECTOR[@]}" 14 | do 15 | ./reprocess_maps.sh $d $INPUT $OUTPUT 16 | ./run_merge.sh $d $OUTPUT 17 | done 18 | 19 | -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/scripts/rtabmap_latest.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export PATH=~/workspace/rtabmap/build/bin:$PATH 4 | export LD_LIBRARY_PATH=~/workspace/rtabmap/build/lib:$LD_LIBRARY_PATH 5 | 6 | -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/scripts/run_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -lt 2 ] 4 | then 5 | echo "No arguments supplied. They should be 2: the input directory (original maps) and the output data directory (where reprocessed map databases will be saved)." 6 | exit 7 | fi 8 | INPUT=$1 9 | OUTPUT=$2 10 | 11 | ./reprocess_maps_all.sh $INPUT $OUTPUT 12 | ./run_localization_single_all.sh $INPUT $OUTPUT 13 | ./run_consecutive_localization_all.sh $OUTPUT 14 | 15 | -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/scripts/run_consecutive_localization_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -lt 1 ] 4 | then 5 | echo "No arguments supplied. It should be the data directory (where the reprocessed map databases will be saved)." 6 | exit 7 | fi 8 | DATA=$1 9 | 10 | DETECTOR=(0 1 6 7 9 14 11 111) 11 | 12 | for d in "${DETECTOR[@]}" 13 | do 14 | ./run_consecutive_localization.sh $d $DATA 15 | done 16 | 17 | -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/scripts/run_localization_single_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -lt 2 ] 4 | then 5 | echo "No arguments supplied. They should be 2: the input directory (original maps) and the output data directory (where reprocessed map databases will be saved)." 6 | exit 7 | fi 8 | INPUT=$1 9 | OUTPUT=$2 10 | 11 | DETECTOR=(0 1 6 7 9 14 11 111) 12 | 13 | for d in "${DETECTOR[@]}" 14 | do 15 | ./run_localization_single.sh $d $INPUT $OUTPUT 16 | done 17 | 18 | -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/scripts/trace.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torchvision 3 | from demo_superpoint import SuperPointNet 4 | model = SuperPointNet() 5 | model.load_state_dict(torch.load("superpoint_v1.pth")) 6 | model.eval() 7 | example = torch.rand(1, 1, 640, 480) 8 | traced_script_module = torch.jit.trace(model, example) 9 | traced_script_module.save("superpoint_v1.pt") 10 | -------------------------------------------------------------------------------- /archive/2022-IlluminationInvariant/scripts/valgrind.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $# -lt 2 ] 4 | then 5 | echo "No arguments supplied. They should be 2: the input directory (original maps) and the output data directory (where reprocessed map databases will be saved)." 6 | exit 7 | fi 8 | INPUT=$1 9 | OUTPUT=$2 10 | 11 | DETECTOR=(0 1 6 7 9 14 11 111) 12 | 13 | source rtabmap_latest.bash 14 | 15 | for d in "${DETECTOR[@]}" 16 | do 17 | valgrind --tool=massif --time-unit=ms --detailed-freq=1 --max-snapshots=100 rtabmap-reprocess --Mem/IncrementalMemory false --Kp/IncrementalFlann false "${OUTPUT}/${d}/map_190321-164651.db;${INPUT}/loc_190321-165128.db" output.db 18 | rm output.db 19 | done 20 | 21 | -------------------------------------------------------------------------------- /build/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore everything in this directory 2 | * 3 | # Except this file 4 | !.gitignore -------------------------------------------------------------------------------- /cmake_modules/FindARCore.cmake: -------------------------------------------------------------------------------- 1 | # - Find ARCore 2 | # This module finds an installed ARCore client C-API package. 3 | # 4 | # It sets the following variables: 5 | # ARCore_FOUND - Set to false, or undefined, if ARCore isn't found. 6 | # ARCore_INCLUDE_DIRS - The ARCore include directory. 7 | # ARCore_LIBRARIES - The ARCore library to link against. 8 | 9 | FIND_PATH(ARCore_INCLUDE_DIR arcore_c_api.h) 10 | 11 | FIND_LIBRARY(ARCore_c_LIBRARY NAMES arcore_sdk_c PATH_SUFFIXES ${ANDROID_ABI}) 12 | FIND_LIBRARY(ARCore_jni_LIBRARY NAMES arcore_sdk_jni PATH_SUFFIXES ${ANDROID_ABI}) 13 | 14 | IF (ARCore_INCLUDE_DIR AND ARCore_c_LIBRARY AND ARCore_jni_LIBRARY) 15 | SET(ARCore_FOUND TRUE) 16 | SET(ARCore_INCLUDE_DIRS ${ARCore_INCLUDE_DIR}) 17 | SET(ARCore_LIBRARIES ${ARCore_c_LIBRARY} ${ARCore_jni_LIBRARY}) 18 | ENDIF (ARCore_INCLUDE_DIR AND ARCore_c_LIBRARY AND ARCore_jni_LIBRARY) 19 | 20 | IF (ARCore_FOUND) 21 | # show which ARCore was found only if not quiet 22 | IF (NOT ARCore_FIND_QUIETLY) 23 | MESSAGE(STATUS "Found ARCore: ${ARCore_INCLUDE_DIRS}") 24 | ENDIF (NOT ARCore_FIND_QUIETLY) 25 | ELSE (ARCore_FOUND) 26 | # fatal error if ARCore is required but not found 27 | IF (ARCore_FIND_REQUIRED) 28 | MESSAGE(FATAL_ERROR "Could not find ARCore (client and/or support libraries)") 29 | ENDIF (ARCore_FIND_REQUIRED) 30 | ENDIF (ARCore_FOUND) 31 | 32 | -------------------------------------------------------------------------------- /cmake_modules/FindDC1394.cmake: -------------------------------------------------------------------------------- 1 | # - Find DC1394 alias libdc1394 2 | # This module finds an installed DC1394 package. 3 | # 4 | # It sets the following variables: 5 | # DC1394_FOUND - Set to false, or undefined, if DC1394 isn't found. 6 | # DC1394_INCLUDE_DIRS - The DC1394 include directory. 7 | # DC1394_LIBRARIES - The DC1394 library to link against. 8 | 9 | find_path(DC1394_INCLUDE_DIRS NAMES dc1394.h PATH_SUFFIXES dc1394) 10 | find_library(DC1394_LIBRARIES NAMES dc1394) 11 | 12 | IF (DC1394_INCLUDE_DIRS AND DC1394_LIBRARIES) 13 | SET(DC1394_FOUND TRUE) 14 | 15 | #On Mac OS X 16 | #if(CMAKE_SYSTEM_NAME MATCHES "Darwin") 17 | # set(DC1394_LIBRARIES ${DC1394_LIBRARIES} "-framework CoreServices") 18 | #endif(CMAKE_SYSTEM_NAME MATCHES "Darwin") 19 | 20 | ENDIF (DC1394_INCLUDE_DIRS AND DC1394_LIBRARIES) 21 | 22 | IF (DC1394_FOUND) 23 | # show which DC1394 was found only if not quiet 24 | IF (NOT DC1394_FIND_QUIETLY) 25 | MESSAGE(STATUS "Found DC1394: ${DC1394_LIBRARIES}") 26 | ENDIF (NOT DC1394_FIND_QUIETLY) 27 | ELSE (DC1394_FOUND) 28 | # fatal error if DC1394 is required but not found 29 | IF (DC1394_FIND_REQUIRED) 30 | MESSAGE(FATAL_ERROR "Could not find DC1394 (libdc1394)") 31 | ENDIF (DC1394_FIND_REQUIRED) 32 | ENDIF (DC1394_FOUND) 33 | 34 | -------------------------------------------------------------------------------- /cmake_modules/FindFastCV.cmake: -------------------------------------------------------------------------------- 1 | # - Find FastCV (https://developer.qualcomm.com/software/fastcv-sdk) 2 | # 3 | # It sets the following variables: 4 | # FastCV_FOUND - Set to false, or undefined, if FastCV isn't found. 5 | # FastCV_INCLUDE_DIRS - The FastCV include directory. 6 | # FastCV_LIBRARIES - The FastCV library to link against. 7 | 8 | IF(NOT WIN32 AND NOT APPLE) 9 | 10 | EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE ) 11 | MESSAGE( STATUS "Architecture: ${ARCHITECTURE}" ) 12 | 13 | # Currently only tested on aarch64! 14 | IF(${ARCHITECTURE} STREQUAL "aarch64") 15 | find_path(FastCV_INCLUDE_DIRS NAMES fastcv.h PATH_SUFFIXES fastcv) 16 | find_library(FastCV_LIBRARY NAMES fastcvopt fastcv) 17 | ENDIF(${ARCHITECTURE} STREQUAL "aarch64") 18 | ENDIF(NOT WIN32 AND NOT APPLE) 19 | 20 | IF (FastCV_INCLUDE_DIRS AND FastCV_LIBRARY) 21 | SET(FastCV_FOUND TRUE) 22 | ENDIF (FastCV_INCLUDE_DIRS AND FastCV_LIBRARY) 23 | 24 | IF (FastCV_FOUND) 25 | SET(FastCV_LIBRARIES ${FastCV_LIBRARY}) 26 | 27 | # show which RealSense was found only if not quiet 28 | IF (NOT FastCV_FIND_QUIETLY) 29 | MESSAGE(STATUS "Found FastCV: ${FastCV_LIBRARIES}") 30 | ENDIF (NOT FastCV_FIND_QUIETLY) 31 | ELSE (FastCV_FOUND) 32 | # fatal error if RealSense is required but not found 33 | IF (FastCV_FIND_REQUIRED) 34 | MESSAGE(FATAL_ERROR "Could not find FastCV") 35 | ENDIF (FastCV_FIND_REQUIRED) 36 | ENDIF (FastCV_FOUND) 37 | 38 | -------------------------------------------------------------------------------- /cmake_modules/FindK4A.cmake: -------------------------------------------------------------------------------- 1 | # - Find K4A 2 | # This module finds an kinect 4 azure SDK 3 | # 4 | # It sets the following variables: 5 | # K4A_FOUND - Set to false, or undefined, if K4A isn't found. 6 | # K4A_INCLUDE_DIRS - The K4A include directory. 7 | # K4A_LIBRARIES - The K4A library to link against. 8 | 9 | find_library(K4A_LIBRARY NAMES k4a NO_DEFAULT_PATH PATHS $ENV{K4A_ROOT_DIR}/sdk/windows-desktop/amd64/release/lib) 10 | find_library(K4ARECORD_LIBRARY NAMES k4arecord NO_DEFAULT_PATH PATHS $ENV{K4A_ROOT_DIR}/sdk/windows-desktop/amd64/release/lib) 11 | find_path(K4A_INCLUDE_DIR NAMES k4a/k4a.h PATHS $ENV{K4A_ROOT_DIR}/sdk/include) 12 | 13 | IF (K4A_INCLUDE_DIR AND K4A_LIBRARY AND K4ARECORD_LIBRARY) 14 | SET(K4A_FOUND TRUE) 15 | SET(K4A_INCLUDE_DIRS ${K4A_INCLUDE_DIR}) 16 | SET(K4A_LIBRARIES ${K4A_LIBRARY} ${K4ARECORD_LIBRARY}) 17 | 18 | # Compatibility with linux names 19 | SET(k4a_LIBRARIES ${K4A_LIBRARIES}) 20 | SET(k4a_INCLUDE_DIRS ${K4A_INCLUDE_DIRS}) 21 | SET(k4a_FOUND ${K4A_FOUND}) 22 | ENDIF (K4A_INCLUDE_DIR AND K4A_LIBRARY AND K4ARECORD_LIBRARY) 23 | 24 | IF (K4A_FOUND) 25 | # show which K4A was found only if not quiet 26 | IF (NOT K4A_FIND_QUIETLY) 27 | MESSAGE(STATUS "Found K4A: ${K4A_LIBRARIES}") 28 | ENDIF (NOT K4A_FIND_QUIETLY) 29 | ELSE (K4A_FOUND) 30 | # fatal error if K4A is required but not found 31 | IF (K4A_FIND_REQUIRED) 32 | MESSAGE(FATAL_ERROR "Could not find K4A (Kinect for Azure SDK)") 33 | ENDIF (K4A_FIND_REQUIRED) 34 | ENDIF (K4A_FOUND) 35 | -------------------------------------------------------------------------------- /cmake_modules/FindOpenNI2.cmake: -------------------------------------------------------------------------------- 1 | # - Find OpenNI2 2 | # This module finds an installed OpenNI2 package. 3 | # 4 | # It sets the following variables: 5 | # OpenNI2_FOUND - Set to false, or undefined, if OpenNI2 isn't found. 6 | # OpenNI2_INCLUDE_DIRS - The OpenNI2 include directory. 7 | # OpenNI2_LIBRARIES - The OpenNI2 libraries to link against. 8 | # OpenNI2_LIBRARY - The OpenNI2 library alone. 9 | 10 | FIND_PATH(OpenNI2_INCLUDE_DIRS OpenNI.h HINTS $ENV{OPENNI2_INCLUDE64} $ENV{OPENNI2_INCLUDE} PATH_SUFFIXES openni2) 11 | 12 | FIND_LIBRARY(OpenNI2_LIBRARY NAMES OpenNI2 HINTS $ENV{OPENNI2_LIB64} $ENV{OPENNI2_LIB} $ENV{OPENNI2_REDIST}) 13 | 14 | IF (OpenNI2_INCLUDE_DIRS AND OpenNI2_LIBRARY) 15 | SET(OpenNI2_FOUND TRUE) 16 | ENDIF (OpenNI2_INCLUDE_DIRS AND OpenNI2_LIBRARY) 17 | 18 | IF (OpenNI2_FOUND) 19 | # show which OpenNI2 was found only if not quiet 20 | SET(OpenNI2_LIBRARIES ${OpenNI2_LIBRARY}) 21 | IF (NOT OpenNI2_FIND_QUIETLY) 22 | MESSAGE(STATUS "Found OpenNI2: ${OpenNI2_LIBRARIES}") 23 | ENDIF (NOT OpenNI2_FIND_QUIETLY) 24 | ELSE (OpenNI2_FOUND) 25 | # fatal error if OpenNI2 is required but not found 26 | IF (OpenNI2_FIND_REQUIRED) 27 | MESSAGE(FATAL_ERROR "Could not find OpenNI2. Environment variables OPENNI2_INCLUDE (directory containing OpenNI.h) and OPENNI2_LIB (directory containing OpenNI2 library) could bet set.") 28 | ENDIF (OpenNI2_FIND_REQUIRED) 29 | ENDIF (OpenNI2_FOUND) 30 | 31 | -------------------------------------------------------------------------------- /cmake_modules/FindQVTK.cmake: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Find QVTK 3 | # 4 | # This sets the following variables: 5 | # QVTK_FOUND - True if QVTK was found. 6 | # QVTK_INCLUDE_DIR - Directory containing the QVTK include files. 7 | # QVTK_LIBRARY - QVTK library. 8 | # if QVTK_FOUND then QVTK_INCLUDE_DIR is appended to VTK_INCLUDE_DIRS and 9 | # QVTK_LIBRARY is appended to QVTK_LIBRARY_DIR 10 | 11 | find_library (QVTK_LIBRARY QVTK HINTS ${VTK_DIR} ${VTK_DIR}/bin) 12 | find_path (QVTK_INCLUDE_DIR QVTKWidget.h HINT ${VTK_INCLUDE_DIRS}) 13 | find_package_handle_standard_args(QVTK DEFAULT_MSG 14 | QVTK_LIBRARY QVTK_INCLUDE_DIR) 15 | 16 | if(NOT QVTK_FOUND) 17 | set (VTK_USE_QVTK OFF) 18 | else(NOT QVTK_FOUND) 19 | get_filename_component (QVTK_LIBRARY_DIR ${QVTK_LIBRARY} PATH) 20 | set (VTK_LIBRARY_DIRS ${VTK_LIBRARY_DIRS} ${QVTK_LIBRARY_DIR}) 21 | set (VTK_INCLUDE_DIRS ${VTK_INCLUDE_DIRS} ${QVTK_INCLUDE_DIR}) 22 | set (VTK_USE_QVTK ON) 23 | endif(NOT QVTK_FOUND) 24 | -------------------------------------------------------------------------------- /cmake_modules/FindTango.cmake: -------------------------------------------------------------------------------- 1 | # - Find Tango 2 | # This module finds an installed Tango client C-API package. 3 | # 4 | # It sets the following variables: 5 | # Tango_FOUND - Set to false, or undefined, if Tango isn't found. 6 | # Tango_INCLUDE_DIRS - The Tango include directory. 7 | # Tango_LIBRARIES - The Tango library to link against. 8 | 9 | FIND_PATH(Tango_INCLUDE_DIR tango_client_api.h) 10 | 11 | FIND_LIBRARY(Tango_LIBRARY NAMES tango_client_api PATH_SUFFIXES ${ANDROID_ABI}) 12 | FIND_LIBRARY(Tango_support_LIBRARY NAMES tango_support_api PATH_SUFFIXES ${ANDROID_ABI}) 13 | 14 | IF (Tango_INCLUDE_DIR AND Tango_LIBRARY AND Tango_support_LIBRARY) 15 | SET(Tango_FOUND TRUE) 16 | SET(Tango_INCLUDE_DIRS ${Tango_INCLUDE_DIR}) 17 | SET(Tango_LIBRARIES ${Tango_LIBRARY} ${Tango_support_LIBRARY}) 18 | ENDIF (Tango_INCLUDE_DIR AND Tango_LIBRARY AND Tango_support_LIBRARY) 19 | 20 | IF (Tango_FOUND) 21 | # show which Tango was found only if not quiet 22 | IF (NOT Tango_FIND_QUIETLY) 23 | MESSAGE(STATUS "Found Tango: ${Tango_INCLUDE_DIRS}") 24 | ENDIF (NOT Tango_FIND_QUIETLY) 25 | ELSE (Tango_FOUND) 26 | # fatal error if Tango is required but not found 27 | IF (Tango_FIND_REQUIRED) 28 | MESSAGE(FATAL_ERROR "Could not find Tango (client and/or support libraries)") 29 | ENDIF (Tango_FIND_REQUIRED) 30 | ENDIF (Tango_FOUND) 31 | 32 | -------------------------------------------------------------------------------- /cmake_modules/FindZEDOC.cmake: -------------------------------------------------------------------------------- 1 | # - Find ZED Open Capture 2 | # This module finds zed open capture library 3 | # 4 | # It sets the following variables: 5 | # ZEDOC_FOUND - Set to false, or undefined, if ZEDOC isn't found. 6 | # ZEDOC_INCLUDE_DIRS - The ZEDOC include directory. 7 | # ZEDOC_LIBRARIES - The ZEDOC library to link against. 8 | 9 | find_library(ZEDOC_LIBRARY NAMES zed_open_capture PATHS $ENV{ZEDOC_ROOT_DIR}/lib) 10 | find_path(ZEDOC_INCLUDE_DIR NAMES zed-open-capture/videocapture.hpp PATHS $ENV{ZEDOC_ROOT_DIR}/include) 11 | 12 | IF (ZEDOC_INCLUDE_DIR AND ZEDOC_LIBRARY) 13 | SET(ZEDOC_FOUND TRUE) 14 | SET(ZEDOC_INCLUDE_DIRS ${ZEDOC_INCLUDE_DIR}) 15 | SET(ZEDOC_LIBRARIES ${ZEDOC_LIBRARY}) 16 | ENDIF (ZEDOC_INCLUDE_DIR AND ZEDOC_LIBRARY) 17 | 18 | IF (ZEDOC_FOUND) 19 | # show which ZEDOC was found only if not quiet 20 | IF (NOT ZEDOC_FIND_QUIETLY) 21 | MESSAGE(STATUS "Found ZEDOC: ${ZEDOC_LIBRARIES}") 22 | ENDIF (NOT ZEDOC_FIND_QUIETLY) 23 | ELSE (ZEDOC_FOUND) 24 | # fatal error if ZEDOC is required but not found 25 | IF (ZEDOC_FIND_REQUIRED) 26 | MESSAGE(FATAL_ERROR "Could not find ZEDOC (Zed Open Capture)") 27 | ENDIF (ZEDOC_FIND_REQUIRED) 28 | ENDIF (ZEDOC_FOUND) 29 | -------------------------------------------------------------------------------- /cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | # ----------------------------------------------- 2 | # File that provides "make uninstall" target 3 | # We use the file 'install_manifest.txt' 4 | # ----------------------------------------------- 5 | IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 6 | MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") 7 | ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 8 | 9 | FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) 10 | STRING(REGEX REPLACE "\n" ";" files "${files}") 11 | FOREACH(file ${files}) 12 | MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") 13 | IF(EXISTS "$ENV{DESTDIR}${file}") 14 | EXEC_PROGRAM( 15 | "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" 16 | OUTPUT_VARIABLE rm_out 17 | RETURN_VALUE rm_retval 18 | ) 19 | IF(NOT "${rm_retval}" STREQUAL 0) 20 | MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") 21 | ENDIF(NOT "${rm_retval}" STREQUAL 0) 22 | ELSE(EXISTS "$ENV{DESTDIR}${file}") 23 | MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") 24 | ENDIF(EXISTS "$ENV{DESTDIR}${file}") 25 | ENDFOREACH(file) 26 | 27 | 28 | -------------------------------------------------------------------------------- /corelib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY( src ) -------------------------------------------------------------------------------- /corelib/include/rtabmap/core/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 | 12 | #include 13 | #include 14 | 15 | namespace pybind11 { 16 | class scoped_interpreter; 17 | class gil_scoped_release; 18 | } 19 | 20 | namespace rtabmap { 21 | 22 | /** 23 | * Create a single PythonInterface on main thread at 24 | * global scope before any Python classes. 25 | */ 26 | class PythonInterface 27 | { 28 | public: 29 | PythonInterface(); 30 | virtual ~PythonInterface(); 31 | 32 | private: 33 | pybind11::scoped_interpreter* guard_; 34 | pybind11::gil_scoped_release* release_; 35 | }; 36 | 37 | std::string getPythonTraceback(); 38 | 39 | } 40 | 41 | #endif /* CORELIB_SRC_PYTHON_PYTHONINTERFACE_H_ */ 42 | -------------------------------------------------------------------------------- /corelib/include/rtabmap/core/camera/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 9 | #endif 10 | 11 | namespace rtabmap 12 | { 13 | 14 | class RTABMAP_CORE_EXPORT CameraSeerSense : 15 | public Camera 16 | { 17 | public: 18 | static bool available(); 19 | 20 | public: 21 | CameraSeerSense( 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 | 34 | protected: 35 | virtual SensorData captureImage(SensorCaptureInfo * info = 0); 36 | 37 | private: 38 | #ifdef RTABMAP_XVSDK 39 | CameraModel cameraModel_; 40 | bool computeOdometry_; 41 | int imuId_; 42 | int tofId_; 43 | std::shared_ptr device_; 44 | std::map> imuBuffer_; 45 | std::pair> lastData_; 46 | UMutex imuMutex_; 47 | UMutex dataMutex_; 48 | USemaphore dataReady_; 49 | #endif 50 | }; 51 | 52 | } // namespace rtabmap 53 | -------------------------------------------------------------------------------- /corelib/include/rtabmap/core/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 9 | #include "rtabmap/core/rtabmap_core_export.h" 10 | 11 | namespace rtabmap 12 | { 13 | 14 | class RTABMAP_CORE_EXPORT RvlCodec { 15 | public: 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 | 22 | private: 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_ 38 | -------------------------------------------------------------------------------- /corelib/src/imufilter/README.txt: -------------------------------------------------------------------------------- 1 | IMU filters taken from ROS imu_tools stack: https://github.com/ccny-ros-pkg/imu_tools, please look below for licensing. To avoid GPL license, MadgwickFilter can be disabled on compilation with "cmake -DWITH_MADGWICK=OFF ..". 2 | =================================== 3 | 4 | Overview 5 | ----------------------------------- 6 | 7 | IMU-related filters: 8 | 9 | * `MadgwickFilter`: a filter which fuses angular velocities, 10 | accelerations, and (optionally) magnetic readings from a generic IMU 11 | device into an orientation. Based on the work of [1]. 12 | 13 | * `ComplementaryFilter`: a filter which fuses angular velocities, 14 | accelerations, and (optionally) magnetic readings from a generic IMU 15 | device into an orientation quaternion using a novel approach based on a complementary fusion. Based on the work of [2]. 16 | 17 | License 18 | ----------------------------------- 19 | 20 | * `MadgwickFilter`: currently licensed as GPL, following the original implementation 21 | 22 | * `ComplementaryFilter`: BSD 23 | 24 | References 25 | ----------------------------------- 26 | [1] http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/ 27 | 28 | [2] http://www.mdpi.com/1424-8220/15/8/19302 29 | -------------------------------------------------------------------------------- /corelib/src/opencv/five-point.h: -------------------------------------------------------------------------------- 1 | /* 2 | * five-point.h 3 | * 4 | * Created on: May 18, 2020 5 | * Author: mathieu 6 | */ 7 | 8 | #ifndef CORELIB_SRC_OPENCV_FIVE_POINT_H_ 9 | #define CORELIB_SRC_OPENCV_FIVE_POINT_H_ 10 | 11 | namespace cv3 12 | { 13 | 14 | cv::Mat findEssentialMat( cv::InputArray _points1, cv::InputArray _points2, cv::InputArray _cameraMatrix, 15 | int method, double prob, double threshold, cv::OutputArray _mask = cv::noArray()); 16 | 17 | int recoverPose( cv::InputArray E, cv::InputArray _points1, cv::InputArray _points2, 18 | cv::InputArray _cameraMatrix, cv::OutputArray _R, cv::OutputArray _t, double distanceThresh, 19 | cv::InputOutputArray _mask, cv::OutputArray triangulatedPoints); 20 | } 21 | 22 | 23 | #endif /* CORELIB_SRC_OPENCV_FIVE_POINT_H_ */ 24 | -------------------------------------------------------------------------------- /corelib/src/opencv/readme.txt: -------------------------------------------------------------------------------- 1 | 2 | Used with OpenCV 2: 3 | * Orb.cpp is a modified version of OpenCV2 Orb with FAST object from rtabmap (FAST with Grid adaptor). 4 | 5 | Used for all OpenCV versions: 6 | * solvepnp.cpp is a copy of the OpenCV3 version of solvePnPRansac. 7 | * five-point.cpp is a copy of the same file in OpenCV (d2872afce0fcc84a52b5753960730595550e1b62) but with RANSAC estimator using 6 points instead of 5 points to avoid "DLT algorithm needs at least 6 points for pose estimation from 3D-2D point correspondences. (expected: 'count >= 6')" error on recent OpenCV versions using DLT by default. -------------------------------------------------------------------------------- /corelib/src/optimizer/ceres/bundle/BAProblem.h: -------------------------------------------------------------------------------- 1 | /* 2 | * BAProblem.h 3 | * 4 | * Created on: Aug 16, 2019 5 | * Author: mathieu 6 | */ 7 | 8 | #ifndef CORELIB_SRC_OPTIMIZER_CERES_BUNDLE_BAPROBLEM_H_ 9 | #define CORELIB_SRC_OPTIMIZER_CERES_BUNDLE_BAPROBLEM_H_ 10 | 11 | namespace ceres { 12 | 13 | class BAProblem { 14 | public: 15 | BAProblem() : 16 | num_cameras_(0), 17 | num_points_(0), 18 | num_observations_(0), 19 | point_index_(NULL), 20 | camera_index_(NULL), 21 | observations_(NULL), 22 | cameras_(NULL), 23 | points_(NULL) 24 | {} 25 | ~BAProblem() { 26 | delete[] point_index_; 27 | delete[] camera_index_; 28 | delete[] observations_; 29 | delete[] cameras_; 30 | delete[] points_; 31 | } 32 | int num_observations() const { return num_observations_;} 33 | const double* observations() const { return observations_;} 34 | double* mutable_camera_for_observation(int i) { 35 | return cameras_ + camera_index_[i] * 6; 36 | } 37 | double* mutable_point_for_observation(int i) { 38 | return points_ + point_index_[i] * 3; 39 | } 40 | int num_cameras_; 41 | int num_points_; 42 | int num_observations_; 43 | int* point_index_; 44 | int* camera_index_; 45 | double* observations_; 46 | double* cameras_; 47 | double* points_; 48 | }; 49 | 50 | } 51 | 52 | #endif /* CORELIB_SRC_OPTIMIZER_CERES_BUNDLE_BAPROBLEM_H_ */ 53 | -------------------------------------------------------------------------------- /corelib/src/optimizer/toro3d/readme.txt: -------------------------------------------------------------------------------- 1 | 2 | Info: https://www.openslam.org/toro.html 3 | License: Creative Commons (Attribution-NonCommercial-ShareAlike) -------------------------------------------------------------------------------- /corelib/src/optimizer/vertigo/g2o/edge_se2MaxMixture.h: -------------------------------------------------------------------------------- 1 | /* 2 | * edge_se2MaxMixture.h 3 | * 4 | * Created on: 12.06.2012 5 | * Author: niko 6 | */ 7 | 8 | #ifndef EDGE_SE2MAXMIXTURE_H_ 9 | #define EDGE_SE2MAXMIXTURE_H_ 10 | 11 | #include "g2o/types/slam2d/vertex_se2.h" 12 | #include "g2o/types/slam2d/edge_se2.h" 13 | 14 | 15 | class EdgeSE2MaxMixture : public g2o::EdgeSE2 16 | { 17 | public: 18 | EdgeSE2MaxMixture(); 19 | 20 | virtual bool read(std::istream& is); 21 | virtual bool write(std::ostream& os) const; 22 | void computeError(); 23 | void linearizeOplus(); 24 | 25 | double weight; 26 | 27 | bool nullHypothesisMoreLikely; 28 | 29 | InformationType information_nullHypothesis; 30 | double nu_nullHypothesis; 31 | InformationType information_constraint; 32 | double nu_constraint ; 33 | }; 34 | 35 | 36 | #ifdef G2O_HAVE_OPENGL 37 | class EdgeSE2MaxMixtureDrawAction: public g2o::DrawAction{ 38 | public: 39 | EdgeSE2MaxMixtureDrawAction(); 40 | virtual g2o::HyperGraphElementAction* operator()(g2o::HyperGraph::HyperGraphElement* element, 41 | g2o::HyperGraphElementAction::Parameters* params_); 42 | }; 43 | #endif 44 | 45 | 46 | #endif /* EDGE_SE2MAXMIXTURE_H_ */ 47 | -------------------------------------------------------------------------------- /corelib/src/optimizer/vertigo/g2o/edge_se2Switchable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * edge_se2Switchable.h 3 | * 4 | * Created on: 13.07.2011 5 | * Author: niko 6 | * 7 | * Updated on: 14.01.2013 8 | * Author: Christian Kerl 9 | */ 10 | 11 | #ifndef EDGE_SE2SWITCHABLE_H_ 12 | #define EDGE_SE2SWITCHABLE_H_ 13 | 14 | #include "g2o/types/slam2d/vertex_se2.h" 15 | #include "g2o/core/base_multi_edge.h" 16 | #include "g2o/core/hyper_graph_action.h" 17 | 18 | class EdgeSE2Switchable : public g2o::BaseMultiEdge<3, g2o::SE2> 19 | { 20 | public: 21 | EdgeSE2Switchable(); 22 | 23 | virtual bool read(std::istream& is); 24 | virtual bool write(std::ostream& os) const; 25 | void computeError(); 26 | void linearizeOplus(); 27 | 28 | 29 | virtual void setMeasurement(const g2o::SE2& m){ 30 | _measurement = m; 31 | _inverseMeasurement = m.inverse(); 32 | } 33 | 34 | protected: 35 | g2o::SE2 _inverseMeasurement; 36 | }; 37 | 38 | 39 | #ifdef G2O_HAVE_OPENGL 40 | class EdgeSE2SwitchableDrawAction: public g2o::DrawAction{ 41 | public: 42 | EdgeSE2SwitchableDrawAction(); 43 | virtual g2o::HyperGraphElementAction* operator()(g2o::HyperGraph::HyperGraphElement* element, 44 | g2o::HyperGraphElementAction::Parameters* params_); 45 | }; 46 | #endif 47 | 48 | 49 | 50 | #endif /* EDGE_SE2SWITCHABLE_H_ */ 51 | -------------------------------------------------------------------------------- /corelib/src/optimizer/vertigo/g2o/edge_se3Switchable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * edge_se3Switchable.h 3 | * 4 | * Created on: 17.10.2011 5 | * Author: niko 6 | * 7 | * Updated on: 14.01.2013 8 | * Author: Christian Kerl 9 | */ 10 | 11 | #ifndef EDGE_SE3SWITCHABLE_H_ 12 | #define EDGE_SE3SWITCHABLE_H_ 13 | 14 | #include "g2o/types/slam3d/vertex_se3.h" 15 | #include "g2o/core/base_multi_edge.h" 16 | #include "g2o/core/hyper_graph_action.h" 17 | 18 | class EdgeSE3Switchable : public g2o::BaseMultiEdge<6, Eigen::Isometry3d> 19 | { 20 | public: 21 | EdgeSE3Switchable(); 22 | 23 | virtual bool read(std::istream& is); 24 | virtual bool write(std::ostream& os) const; 25 | void computeError(); 26 | void linearizeOplus(); 27 | 28 | virtual void setMeasurement(const Eigen::Isometry3d& m){ 29 | _measurement = m; 30 | _inverseMeasurement = m.inverse(); 31 | } 32 | 33 | protected: 34 | Eigen::Isometry3d _inverseMeasurement; 35 | }; 36 | 37 | 38 | #ifdef G2O_HAVE_OPENGL 39 | class EdgeSE3SwitchableDrawAction: public g2o::DrawAction{ 40 | public: 41 | EdgeSE3SwitchableDrawAction(); 42 | virtual g2o::HyperGraphElementAction* operator()(g2o::HyperGraph::HyperGraphElement* element, 43 | g2o::HyperGraphElementAction::Parameters* params_); 44 | }; 45 | #endif 46 | 47 | 48 | #endif /* EDGE_SE3SWITCHABLE_H_ */ 49 | -------------------------------------------------------------------------------- /corelib/src/optimizer/vertigo/g2o/edge_switchPrior.cpp: -------------------------------------------------------------------------------- 1 | #include "edge_switchPrior.h" 2 | using namespace std; 3 | 4 | EdgeSwitchPrior::EdgeSwitchPrior() 5 | { 6 | setMeasurement(1.0); 7 | } 8 | 9 | bool EdgeSwitchPrior::read(std::istream &is) 10 | { 11 | double new_measurement; 12 | is >> new_measurement; 13 | 14 | setMeasurement(new_measurement); 15 | 16 | is >> information()(0,0); 17 | return true; 18 | } 19 | 20 | bool EdgeSwitchPrior::write(std::ostream &os) const 21 | { 22 | os << measurement() << " " << information()(0,0); 23 | return true; 24 | } 25 | 26 | void EdgeSwitchPrior::setMeasurement(const double & m) 27 | { 28 | g2o::BaseEdge<1, double>::setMeasurement(m); 29 | information()(0,0) = 1.0; 30 | } 31 | 32 | void EdgeSwitchPrior::linearizeOplus() 33 | { 34 | _jacobianOplusXi[0]=-1.0; 35 | } 36 | 37 | void EdgeSwitchPrior::computeError() 38 | { 39 | const VertexSwitchLinear* s = static_cast(_vertices[0]); 40 | 41 | _error[0] = measurement() - s->x(); 42 | 43 | } 44 | 45 | -------------------------------------------------------------------------------- /corelib/src/optimizer/vertigo/g2o/edge_switchPrior.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | #include "vertex_switchLinear.h" 5 | #include "g2o/core/base_unary_edge.h" 6 | 7 | 8 | 9 | class EdgeSwitchPrior : public g2o::BaseUnaryEdge<1, double, VertexSwitchLinear> 10 | { 11 | public: 12 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW 13 | EdgeSwitchPrior(); 14 | 15 | virtual bool read(std::istream& is); 16 | virtual bool write(std::ostream& os) const; 17 | 18 | virtual void setMeasurement(const double & m); 19 | 20 | virtual void linearizeOplus(); 21 | void computeError(); 22 | }; 23 | -------------------------------------------------------------------------------- /corelib/src/optimizer/vertigo/g2o/types_g2o_robust.cpp: -------------------------------------------------------------------------------- 1 | #include "g2o/core/factory.h" 2 | #include "g2o/stuff/macros.h" 3 | 4 | #include "edge_switchPrior.h" 5 | #include "edge_se2Switchable.h" 6 | //#include "edge_se2MaxMixture.h" 7 | #include "edge_se3Switchable.h" 8 | #include "vertex_switchLinear.h" 9 | 10 | 11 | G2O_REGISTER_TYPE(EDGE_SWITCH_PRIOR, EdgeSwitchPrior); 12 | G2O_REGISTER_TYPE(EDGE_SE2_SWITCHABLE, EdgeSE2Switchable); 13 | //G2O_REGISTER_TYPE(EDGE_SE2_MAXMIX, EdgeSE2MaxMixture); 14 | G2O_REGISTER_TYPE(EDGE_SE3_SWITCHABLE, EdgeSE3Switchable); 15 | G2O_REGISTER_TYPE(VERTEX_SWITCH, VertexSwitchLinear); 16 | 17 | /* 18 | #ifdef G2O_HAVE_OPENGL 19 | G2O_REGISTER_ACTION(EdgeSE2SwitchableDrawAction); 20 | //G2O_REGISTER_ACTION(EdgeSE2MaxMixtureDrawAction); 21 | G2O_REGISTER_ACTION(EdgeSE3SwitchableDrawAction); 22 | #endif 23 | */ 24 | -------------------------------------------------------------------------------- /corelib/src/optimizer/vertigo/g2o/vertex_switchLinear.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * vertex_switchLinear.cpp 3 | * 4 | * Created on: 17.10.2011 5 | * Author: niko 6 | * 7 | * Updated on: 14.01.2013 8 | * Author: Christian Kerl 9 | */ 10 | 11 | #include "vertex_switchLinear.h" 12 | #include 13 | 14 | using namespace std; 15 | 16 | VertexSwitchLinear::VertexSwitchLinear() : 17 | _x(0) 18 | { 19 | setToOrigin(); 20 | setEstimate(1.0); 21 | } 22 | 23 | bool VertexSwitchLinear:: read(std::istream& is) 24 | { 25 | is >> _x; 26 | _estimate=_x; 27 | 28 | return true; 29 | } 30 | 31 | bool VertexSwitchLinear::write(std::ostream& os) const 32 | { 33 | os << _x; 34 | return os.good(); 35 | } 36 | 37 | void VertexSwitchLinear::setToOriginImpl() 38 | { 39 | _x=0; 40 | _estimate=_x; 41 | } 42 | 43 | 44 | void VertexSwitchLinear::setEstimate(const double &et) 45 | { 46 | _x=et; 47 | _estimate=_x; 48 | } 49 | 50 | 51 | void VertexSwitchLinear::oplusImpl(const double* update) 52 | { 53 | _x += update[0]; 54 | 55 | if (_x<0) _x=0; 56 | if (_x>1) _x=1; 57 | 58 | _estimate=_x; 59 | } 60 | -------------------------------------------------------------------------------- /corelib/src/optimizer/vertigo/g2o/vertex_switchLinear.h: -------------------------------------------------------------------------------- 1 | /* 2 | * vertex_switchLinear.h 3 | * 4 | * Created on: 17.10.2011 5 | * Author: niko 6 | * 7 | * Updated on: 14.01.2013 8 | * Author: Christian Kerl 9 | */ 10 | 11 | 12 | #pragma once 13 | 14 | #include "g2o/core/base_vertex.h" 15 | #include 16 | 17 | 18 | 19 | class VertexSwitchLinear : public g2o::BaseVertex<1, double> 20 | { 21 | 22 | public: 23 | VertexSwitchLinear(); 24 | 25 | virtual void setToOriginImpl(); 26 | 27 | virtual void oplusImpl(const double* update); 28 | 29 | virtual bool read(std::istream& is); 30 | virtual bool write(std::ostream& os) const; 31 | virtual void setEstimate(const double &et); 32 | 33 | 34 | double x() const { return _x; }; 35 | 36 | 37 | //! The gradient at the current estimate is always 1; 38 | double gradient() const { return 1; } ; 39 | 40 | private: 41 | double _x; 42 | 43 | }; 44 | -------------------------------------------------------------------------------- /corelib/src/optimizer/vertigo/readme.txt: -------------------------------------------------------------------------------- 1 | 2 | Info: http://openslam.org/vertigo.html 3 | Source: https://github.com/christiankerl/vertigo/tree/master/trunk 4 | Commit: fbd438488a56cdba805fa2f75aa3e394e3eda7ff 5 | License: GPL v3 6 | 7 | Tested with g2o (ROS Indigo/2014.02.18) 8 | Tested with GTSAM commit c73b835 -------------------------------------------------------------------------------- /corelib/src/pcl18/readme.txt: -------------------------------------------------------------------------------- 1 | Copied pcl 1.8 functions to be used in older pcl versions. They are 2 | not included if 1.8 is detected (the originals are used directly). -------------------------------------------------------------------------------- /corelib/src/python/PyDescriptor.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Python interface for python descriptors like: 3 | * - NetVLAD: https://github.com/uzh-rpg/netvlad_tf_open 4 | */ 5 | 6 | #ifndef PYDESCRIPTOR_H 7 | #define PYDESCRIPTOR_H 8 | 9 | #include 10 | #include "rtabmap/core/PythonInterface.h" 11 | #include 12 | 13 | namespace rtabmap 14 | { 15 | 16 | class PyDescriptor : public GlobalDescriptorExtractor 17 | { 18 | public: 19 | PyDescriptor(const ParametersMap & parameters = ParametersMap()); 20 | virtual ~PyDescriptor(); 21 | 22 | const std::string & path() const {return path_;} 23 | float dim() const {return dim_;} 24 | 25 | virtual void parseParameters(const ParametersMap & parameters); 26 | virtual GlobalDescriptor extract(const SensorData & data) const; 27 | virtual GlobalDescriptorExtractor::Type getType() const {return kPyDescriptor;} 28 | 29 | private: 30 | PyObject * pModule_; 31 | PyObject * pFunc_; 32 | std::string path_; 33 | int dim_; 34 | }; 35 | 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /corelib/src/python/PyDetector.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Python interface for python local feature detectors like: 3 | * - SuperPoint: https://github.com/magicleap/SuperPointPretrainedNetwork 4 | */ 5 | 6 | #ifndef PYDETECTOR_H 7 | #define PYDETECTOR_H 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include "rtabmap/core/PythonInterface.h" 15 | #include 16 | 17 | namespace rtabmap 18 | { 19 | 20 | class PyDetector : public Feature2D 21 | { 22 | public: 23 | PyDetector(const ParametersMap & parameters = ParametersMap()); 24 | virtual ~PyDetector(); 25 | 26 | virtual void parseParameters(const ParametersMap & parameters); 27 | virtual Feature2D::Type getType() const {return kFeaturePyDetector;} 28 | 29 | private: 30 | virtual std::vector generateKeypointsImpl(const cv::Mat & image, const cv::Rect & roi, const cv::Mat & mask = cv::Mat()); 31 | virtual cv::Mat generateDescriptorsImpl(const cv::Mat & image, std::vector & keypoints) const; 32 | 33 | private: 34 | PyObject * pModule_; 35 | PyObject * pFunc_; 36 | std::string path_; 37 | bool cuda_; 38 | cv::Mat descriptors_; 39 | }; 40 | 41 | } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /corelib/src/resources/.gitignore: -------------------------------------------------------------------------------- 1 | /DatabaseSchema.sql 2 | -------------------------------------------------------------------------------- /corelib/src/rtflann/readme.txt: -------------------------------------------------------------------------------- 1 | 2 | flann is included in rtabmap for convenience, to have this commit needed for incremental flann index: 3 | https://github.com/mariusmuja/flann/commit/23051820b2314f07cf40ba633a4067782a982ff3 4 | 5 | Info: http://www.cs.ubc.ca/research/flann/ 6 | Source: https://github.com/mariusmuja/flann 7 | Commit: 9a01507d2231b29eb688246a6e442054defa7460 8 | License: BSD -------------------------------------------------------------------------------- /corelib/src/sqlite3/readme.txt: -------------------------------------------------------------------------------- 1 | 2 | Info: https://www.sqlite.org/ 3 | License: Public domain (https://www.sqlite.org/copyright.html) -------------------------------------------------------------------------------- /data/BoxImgs/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/BoxImgs/1.png -------------------------------------------------------------------------------- /data/BoxImgs/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/BoxImgs/2.png -------------------------------------------------------------------------------- /data/Dictionary49k.txt.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/Dictionary49k.txt.zip -------------------------------------------------------------------------------- /data/README: -------------------------------------------------------------------------------- 1 | This directory contains some data used when testing the lib. -------------------------------------------------------------------------------- /data/check-108.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/check-108.pdf -------------------------------------------------------------------------------- /data/presets/camera_tof_icp.ini: -------------------------------------------------------------------------------- 1 | # Could be used with TOF cameras like Kinect v2, Kinect For Azure or L515 2 | 3 | [Camera] 4 | Scan\downsampleStep = 4 5 | Scan\fromDepth = true 6 | Scan\normalsK = 20 7 | Scan\normalsRadius = 0 8 | Scan\normalsUp = false 9 | Scan\rangeMax = 0 10 | Scan\rangeMin = 0 11 | Scan\voxelSize = 0.05 12 | 13 | [Gui] 14 | General\showClouds0 = false 15 | General\showClouds1 = false 16 | 17 | [Core] 18 | Icp\CorrespondenceRatio = 0.2 19 | Icp\Epsilon = 0.005 20 | Icp\OutlierRatio = 0.65 21 | Icp\PointToPlaneMinComplexity = 0 22 | Icp\Strategy = 0 23 | Icp\VoxelSize = 0 24 | Odom\Deskewing = false 25 | Odom\ScanKeyFrameThr = 0.7 26 | OdomF2M\ScanMaxSize = 15000 27 | # match the input voxel size: 28 | OdomF2M\ScanSubtractRadius = 0.05 29 | RGBD\ProximityPathMaxNeighbors = 1 30 | # Make sure PM is used: 31 | Reg\Strategy = 1 32 | -------------------------------------------------------------------------------- /data/presets/lidar3d_icp.ini: -------------------------------------------------------------------------------- 1 | # Could be used with LiDARs like Velodyne, RoboSense, Ouster 2 | 3 | [Camera] 4 | Scan\downsampleStep = 1 5 | Scan\fromDepth = false 6 | Scan\normalsK = 0 7 | Scan\normalsRadius = 0 8 | Scan\normalsUp = false 9 | Scan\rangeMax = 0 10 | Scan\rangeMin = 0 11 | Scan\voxelSize = 0 12 | 13 | [Gui] 14 | General\showClouds0 = false 15 | General\showClouds1 = false 16 | 17 | [Core] 18 | # Would be 0.01 for odom and 0.2 for mapping: 19 | Icp\CorrespondenceRatio = 0.1 20 | Icp\Epsilon = 0.001 21 | Icp\FiltersEnabled = 2 22 | Icp\Iterations = 10 23 | Icp\OutlierRatio = 0.7 24 | # ~10x the voxel size: 25 | Icp\MaxCorrespondenceDistance = 0.5 26 | Icp\MaxTranslation = 2 27 | # Uncomment if lidar can see ground most of the time (on a car or wheeled robot): 28 | #Icp\PointToPlaneGroundNormalsUp = 0.8 29 | Icp\PointToPlaneK = 20 30 | Icp\PointToPlaneMinComplexity = 0 31 | # Make sure PM is used: 32 | Icp\Strategy = 1 33 | Icp\VoxelSize = 0.05 34 | Mem\NotLinkedNodesKept = false 35 | Mem\STMSize = 30 36 | Odom\Deskewing = true 37 | Odom\GuessSmoothingDelay = 0.3 38 | Odom\ScanKeyFrameThr = 0.6 39 | OdomF2M\ScanMaxSize = 15000 40 | # Match voxel size: 41 | OdomF2M\ScanSubtractRadius = 0.05 42 | RGBD\AngularUpdate = 0.05 43 | RGBD\LinearUpdate = 0.05 44 | RGBD\ProximityMaxGraphDepth = 0 45 | RGBD\ProximityPathMaxNeighbors = 1 46 | Reg\Strategy = 1 47 | -------------------------------------------------------------------------------- /data/samples.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples.zip -------------------------------------------------------------------------------- /data/samples/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/1.jpg -------------------------------------------------------------------------------- /data/samples/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/10.jpg -------------------------------------------------------------------------------- /data/samples/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/11.jpg -------------------------------------------------------------------------------- /data/samples/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/12.jpg -------------------------------------------------------------------------------- /data/samples/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/13.jpg -------------------------------------------------------------------------------- /data/samples/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/14.jpg -------------------------------------------------------------------------------- /data/samples/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/15.jpg -------------------------------------------------------------------------------- /data/samples/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/16.jpg -------------------------------------------------------------------------------- /data/samples/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/17.jpg -------------------------------------------------------------------------------- /data/samples/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/18.jpg -------------------------------------------------------------------------------- /data/samples/19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/19.jpg -------------------------------------------------------------------------------- /data/samples/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/2.jpg -------------------------------------------------------------------------------- /data/samples/20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/20.jpg -------------------------------------------------------------------------------- /data/samples/21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/21.jpg -------------------------------------------------------------------------------- /data/samples/22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/22.jpg -------------------------------------------------------------------------------- /data/samples/23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/23.jpg -------------------------------------------------------------------------------- /data/samples/24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/24.jpg -------------------------------------------------------------------------------- /data/samples/25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/25.jpg -------------------------------------------------------------------------------- /data/samples/26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/26.jpg -------------------------------------------------------------------------------- /data/samples/27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/27.jpg -------------------------------------------------------------------------------- /data/samples/28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/28.jpg -------------------------------------------------------------------------------- /data/samples/29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/29.jpg -------------------------------------------------------------------------------- /data/samples/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/3.jpg -------------------------------------------------------------------------------- /data/samples/30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/30.jpg -------------------------------------------------------------------------------- /data/samples/31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/31.jpg -------------------------------------------------------------------------------- /data/samples/32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/32.jpg -------------------------------------------------------------------------------- /data/samples/33.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/33.jpg -------------------------------------------------------------------------------- /data/samples/34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/34.jpg -------------------------------------------------------------------------------- /data/samples/35.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/35.jpg -------------------------------------------------------------------------------- /data/samples/36.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/36.jpg -------------------------------------------------------------------------------- /data/samples/37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/37.jpg -------------------------------------------------------------------------------- /data/samples/38.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/38.jpg -------------------------------------------------------------------------------- /data/samples/39.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/39.jpg -------------------------------------------------------------------------------- /data/samples/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/4.jpg -------------------------------------------------------------------------------- /data/samples/40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/40.jpg -------------------------------------------------------------------------------- /data/samples/41.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/41.jpg -------------------------------------------------------------------------------- /data/samples/42.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/42.jpg -------------------------------------------------------------------------------- /data/samples/43.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/43.jpg -------------------------------------------------------------------------------- /data/samples/44.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/44.jpg -------------------------------------------------------------------------------- /data/samples/45.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/45.jpg -------------------------------------------------------------------------------- /data/samples/46.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/46.jpg -------------------------------------------------------------------------------- /data/samples/47.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/47.jpg -------------------------------------------------------------------------------- /data/samples/48.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/48.jpg -------------------------------------------------------------------------------- /data/samples/49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/49.jpg -------------------------------------------------------------------------------- /data/samples/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/5.jpg -------------------------------------------------------------------------------- /data/samples/50.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/50.jpg -------------------------------------------------------------------------------- /data/samples/51.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/51.jpg -------------------------------------------------------------------------------- /data/samples/52.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/52.jpg -------------------------------------------------------------------------------- /data/samples/53.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/53.jpg -------------------------------------------------------------------------------- /data/samples/54.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/54.jpg -------------------------------------------------------------------------------- /data/samples/55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/55.jpg -------------------------------------------------------------------------------- /data/samples/56.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/56.jpg -------------------------------------------------------------------------------- /data/samples/57.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/57.jpg -------------------------------------------------------------------------------- /data/samples/58.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/58.jpg -------------------------------------------------------------------------------- /data/samples/59.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/59.jpg -------------------------------------------------------------------------------- /data/samples/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/6.jpg -------------------------------------------------------------------------------- /data/samples/60.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/60.jpg -------------------------------------------------------------------------------- /data/samples/61.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/61.jpg -------------------------------------------------------------------------------- /data/samples/62.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/62.jpg -------------------------------------------------------------------------------- /data/samples/63.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/63.jpg -------------------------------------------------------------------------------- /data/samples/64.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/64.jpg -------------------------------------------------------------------------------- /data/samples/65.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/65.jpg -------------------------------------------------------------------------------- /data/samples/66.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/66.jpg -------------------------------------------------------------------------------- /data/samples/67.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/67.jpg -------------------------------------------------------------------------------- /data/samples/68.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/68.jpg -------------------------------------------------------------------------------- /data/samples/69.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/69.jpg -------------------------------------------------------------------------------- /data/samples/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/7.jpg -------------------------------------------------------------------------------- /data/samples/70.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/70.jpg -------------------------------------------------------------------------------- /data/samples/71.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/71.jpg -------------------------------------------------------------------------------- /data/samples/72.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/72.jpg -------------------------------------------------------------------------------- /data/samples/73.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/73.jpg -------------------------------------------------------------------------------- /data/samples/74.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/74.jpg -------------------------------------------------------------------------------- /data/samples/75.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/75.jpg -------------------------------------------------------------------------------- /data/samples/76.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/76.jpg -------------------------------------------------------------------------------- /data/samples/77.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/77.jpg -------------------------------------------------------------------------------- /data/samples/78.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/78.jpg -------------------------------------------------------------------------------- /data/samples/79.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/79.jpg -------------------------------------------------------------------------------- /data/samples/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/8.jpg -------------------------------------------------------------------------------- /data/samples/80.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/80.jpg -------------------------------------------------------------------------------- /data/samples/81.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/81.jpg -------------------------------------------------------------------------------- /data/samples/82.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/82.jpg -------------------------------------------------------------------------------- /data/samples/83.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/83.jpg -------------------------------------------------------------------------------- /data/samples/84.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/84.jpg -------------------------------------------------------------------------------- /data/samples/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples/9.jpg -------------------------------------------------------------------------------- /data/samples_GT.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/data/samples_GT.bmp -------------------------------------------------------------------------------- /docker/README.md: -------------------------------------------------------------------------------- 1 | ### Docker 2 | 3 | * Go to the [wiki](https://github.com/introlab/rtabmap/wiki/Installation#docker) for usage examples and how to build locally the images. 4 | -------------------------------------------------------------------------------- /docker/bionic/android/rtabmap_apiXX/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:androidXX 2 | 3 | FROM introlab3it/rtabmap:android-deps 4 | 5 | ARG API_VERSION=23 6 | 7 | # Copy current source code 8 | COPY . /root/rtabmap-tango 9 | 10 | WORKDIR /root/rtabmap-tango 11 | 12 | RUN /bin/bash -c "./docker/bionic/android/rtabmap_apiXX/rtabmap.bash /opt/android $API_VERSION" 13 | 14 | -------------------------------------------------------------------------------- /docker/bionic/hooks/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build --build-arg CACHE_DATE="$(date)" --cache-from $IMAGE_NAME -f $DOCKERFILE_PATH -t $IMAGE_NAME -t $DOCKER_REPO:18.04 . 3 | -------------------------------------------------------------------------------- /docker/bionic/hooks/post_push: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker push $DOCKER_REPO:18.04 3 | -------------------------------------------------------------------------------- /docker/focal-foxy/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:focal-foxy 2 | 3 | FROM introlab3it/rtabmap:focal-foxy-deps 4 | 5 | # June 19 2023: moved opengv here so that focal-foxy-deps can be built on my computer. Not sure why but on my machine opengv arm64 fails, but not on CI. 6 | #commit Aug 6 2020 7 | RUN apt-get update && apt install -y wget && \ 8 | apt-get clean && rm -rf /var/lib/apt/lists/ 9 | RUN git clone https://github.com/laurentkneip/opengv.git && \ 10 | cd opengv && \ 11 | git checkout 91f4b19c73450833a40e463ad3648aae80b3a7f3 && \ 12 | wget https://gist.githubusercontent.com/matlabbe/a412cf7c4627253874f81a00745a7fbb/raw/accc3acf465d1ffd0304a46b17741f62d4d354ef/opengv_disable_march_native.patch && \ 13 | git apply opengv_disable_march_native.patch && \ 14 | mkdir build && \ 15 | cd build && \ 16 | cmake -DCMAKE_BUILD_TYPE=Release .. && \ 17 | make -j$(nproc) && \ 18 | make install && \ 19 | cd && \ 20 | rm -r opengv 21 | 22 | # Will be used to read/store databases on host 23 | RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map 24 | 25 | # Copy current source code 26 | COPY . /root/rtabmap 27 | 28 | # Build RTAB-Map project 29 | RUN source /ros_entrypoint.sh && \ 30 | cd rtabmap/build && \ 31 | cmake -DWITH_ALICE_VISION=ON -DWITH_OPENGV=ON .. && \ 32 | make -j$(nproc) && \ 33 | make install && \ 34 | cd ../.. && \ 35 | rm -rf rtabmap && \ 36 | ldconfig 37 | 38 | -------------------------------------------------------------------------------- /docker/focal-foxy/deps/ros_entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | # setup ros2 environment 5 | source "/opt/ros/foxy/setup.bash" -- 6 | exec "$@" 7 | -------------------------------------------------------------------------------- /docker/focal/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:focal 2 | 3 | FROM introlab3it/rtabmap:focal-deps 4 | 5 | # June 19 2023: moved opengv here so that focal-deps can be built on my computer. Not sure why but on my machine opengv arm64 fails, but not on CI. 6 | #commit Aug 6 2020 7 | RUN apt-get update && apt install wget && apt-get clean && rm -rf /var/lib/apt/lists/ 8 | RUN git clone https://github.com/laurentkneip/opengv.git && \ 9 | cd opengv && \ 10 | git checkout 91f4b19c73450833a40e463ad3648aae80b3a7f3 && \ 11 | wget https://gist.githubusercontent.com/matlabbe/a412cf7c4627253874f81a00745a7fbb/raw/accc3acf465d1ffd0304a46b17741f62d4d354ef/opengv_disable_march_native.patch && \ 12 | git apply opengv_disable_march_native.patch && \ 13 | mkdir build && \ 14 | cd build && \ 15 | cmake -DCMAKE_BUILD_TYPE=Release .. && \ 16 | make -j4 && \ 17 | make install && \ 18 | cd && \ 19 | rm -r opengv 20 | 21 | # Will be used to read/store databases on host 22 | RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map 23 | 24 | # Copy current source code 25 | COPY . /root/rtabmap 26 | 27 | # Build RTAB-Map project 28 | RUN source /ros_entrypoint.sh && \ 29 | cd rtabmap/build && \ 30 | cmake -DWITH_ALICE_VISION=ON -DWITH_OPENGV=ON .. && \ 31 | make -j4 && \ 32 | make install && \ 33 | cd ../.. && \ 34 | rm -rf rtabmap && \ 35 | ldconfig 36 | -------------------------------------------------------------------------------- /docker/jammy-iron/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:jammy-iron 2 | 3 | FROM introlab3it/rtabmap:jammy-iron-deps 4 | 5 | # June 19 2023: moved opengv here so that jammy-deps can be built on my computer. Not sure why but on my machine opengv arm64 fails, but not on CI. 6 | #commit Aug 6 2020 7 | RUN apt-get update && apt install -y wget && \ 8 | apt-get clean && rm -rf /var/lib/apt/lists/ 9 | RUN git clone https://github.com/laurentkneip/opengv.git && \ 10 | cd opengv && \ 11 | git checkout 91f4b19c73450833a40e463ad3648aae80b3a7f3 && \ 12 | wget https://gist.githubusercontent.com/matlabbe/a412cf7c4627253874f81a00745a7fbb/raw/accc3acf465d1ffd0304a46b17741f62d4d354ef/opengv_disable_march_native.patch && \ 13 | git apply opengv_disable_march_native.patch && \ 14 | mkdir build && \ 15 | cd build && \ 16 | cmake -DCMAKE_BUILD_TYPE=Release .. && \ 17 | make -j$(nproc) && \ 18 | make install && \ 19 | cd && \ 20 | rm -r opengv 21 | 22 | # Will be used to read/store databases on host 23 | RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map 24 | 25 | # Copy current source code 26 | COPY . /root/rtabmap 27 | 28 | # Build RTAB-Map project 29 | RUN source /ros_entrypoint.sh && \ 30 | cd rtabmap/build && \ 31 | cmake -DWITH_OPENGV=ON .. && \ 32 | make -j$(nproc) && \ 33 | make install && \ 34 | cd ../.. && \ 35 | rm -rf rtabmap && \ 36 | ldconfig 37 | 38 | -------------------------------------------------------------------------------- /docker/jammy-iron/deps/ros_entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | # setup ros2 environment 5 | source "/opt/ros/iron/setup.bash" -- 6 | exec "$@" 7 | -------------------------------------------------------------------------------- /docker/jammy/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:jammy 2 | 3 | FROM introlab3it/rtabmap:jammy-deps 4 | 5 | # Will be used to read/store databases on host 6 | RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map 7 | 8 | # Copy current source code 9 | COPY . /root/rtabmap 10 | 11 | # Build RTAB-Map project 12 | RUN source /ros_entrypoint.sh && \ 13 | cd rtabmap/build && \ 14 | cmake -DWITH_OPENGV=ON .. && \ 15 | make -j4 && \ 16 | make install && \ 17 | cd ../.. && \ 18 | rm -rf rtabmap && \ 19 | ldconfig 20 | 21 | -------------------------------------------------------------------------------- /docker/jfr2018/rtabmap_msckf_ubuntu_16_compatibility.patch: -------------------------------------------------------------------------------- 1 | diff --git a/CMakeLists.txt b/CMakeLists.txt 2 | index c14cb659..2c370200 100644 3 | --- a/CMakeLists.txt 4 | +++ b/CMakeLists.txt 5 | @@ -830,6 +830,8 @@ IF(NOT MSVC) 6 | ENDIF() 7 | ENDIF() 8 | 9 | +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fext-numeric-literals") 10 | + 11 | 12 | ####### OSX BUNDLE CMAKE_INSTALL_PREFIX ####### 13 | IF(APPLE AND BUILD_AS_BUNDLE) 14 | -------------------------------------------------------------------------------- /docker/jfr2018/rtabmap_opencv310_backward_compatibility.patch: -------------------------------------------------------------------------------- 1 | diff --git a/CMakeLists.txt b/CMakeLists.txt 2 | index 9f2bfd83..65b03eef 100644 3 | --- a/CMakeLists.txt 4 | +++ b/CMakeLists.txt 5 | @@ -228,7 +228,7 @@ ENDIF() 6 | set(RTABMAP_QT_VERSION AUTO CACHE STRING "Force a specific Qt version.") 7 | set_property(CACHE RTABMAP_QT_VERSION PROPERTY STRINGS AUTO 4 5 6) 8 | 9 | -FIND_PACKAGE(OpenCV REQUIRED QUIET COMPONENTS core calib3d imgproc highgui stitching photo video videoio OPTIONAL_COMPONENTS aruco xfeatures2d nonfree gpu cudafeatures2d) 10 | +FIND_PACKAGE(OpenCV QUIET COMPONENTS core calib3d imgproc highgui stitching photo video videoio OPTIONAL_COMPONENTS aruco xfeatures2d nonfree gpu cudafeatures2d) 11 | 12 | IF(WITH_QT) 13 | FIND_PACKAGE(PCL 1.7 REQUIRED QUIET COMPONENTS common io kdtree search surface filters registration sample_consensus segmentation visualization) 14 | -------------------------------------------------------------------------------- /docker/jfr2018/run_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # docker pull introlab3it/rtabmap:jfr2018 4 | 5 | mkdir -p results/kitti 6 | ./run_kitti_datasets.sh f2m 0 0 7 | ./run_kitti_datasets.sh f2f 11 0 8 | ./run_kitti_datasets.sh s2m 0 1 9 | ./run_kitti_datasets.sh s2s 1 1 10 | ./run_kitti_datasets.sh fovis 2 0 11 | ./run_kitti_datasets.sh viso2 3 0 12 | ./run_kitti_datasets.sh os2 5 0 13 | ./run_kitti_datasets.sh loam 7 1 14 | 15 | mkdir -p results/tum 16 | ./run_tum_datasets.sh f2m 0 17 | ./run_tum_datasets.sh f2f 11 18 | ./run_tum_datasets.sh fovis 2 19 | ./run_tum_datasets.sh dvo 4 20 | ./run_tum_datasets.sh os2 5 21 | 22 | mkdir -p results/euroc 23 | ./run_euroc_datasets.sh f2m 0 0 24 | ./run_euroc_datasets.sh f2f 11 0 25 | ./run_euroc_datasets.sh os2 5 0 26 | ./run_euroc_datasets.sh msckf 88 0 27 | ./run_euroc_datasets.sh fovis 2 0 28 | ./run_euroc_datasets.sh viso2 3 0 29 | ./run_euroc_datasets.sh okvis 66 0 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /docker/noble-kilted/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:noble-kilted 2 | 3 | FROM introlab3it/rtabmap:noble-kilted-deps 4 | 5 | # OpenGV (issue seg fault on my computer, moved here from noble-deps to be built on ci) 6 | RUN git clone https://github.com/laurentkneip/opengv.git && \ 7 | cd opengv && \ 8 | git checkout 91f4b19c73450833a40e463ad3648aae80b3a7f3 && \ 9 | wget https://gist.githubusercontent.com/matlabbe/a412cf7c4627253874f81a00745a7fbb/raw/accc3acf465d1ffd0304a46b17741f62d4d354ef/opengv_disable_march_native.patch && \ 10 | git apply opengv_disable_march_native.patch && \ 11 | mkdir build && \ 12 | cd build && \ 13 | cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF .. && \ 14 | make -j4 && \ 15 | make install && \ 16 | cd && \ 17 | rm -r opengv 18 | 19 | # Will be used to read/store databases on host 20 | RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map 21 | 22 | # Copy current source code 23 | COPY . /root/rtabmap 24 | 25 | # Build RTAB-Map project 26 | RUN source /ros_entrypoint.sh && \ 27 | cd rtabmap/build && \ 28 | cmake -DWITH_OPENGV=ON .. && \ 29 | make -j4 && \ 30 | make install && \ 31 | cd ../.. && \ 32 | rm -rf rtabmap && \ 33 | ldconfig 34 | 35 | -------------------------------------------------------------------------------- /docker/noble/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:noble 2 | 3 | FROM introlab3it/rtabmap:noble-deps 4 | 5 | # OpenGV (issue seg fault on my computer, moved here from noble-deps to be built on ci) 6 | RUN git clone https://github.com/laurentkneip/opengv.git && \ 7 | cd opengv && \ 8 | git checkout 91f4b19c73450833a40e463ad3648aae80b3a7f3 && \ 9 | wget https://gist.githubusercontent.com/matlabbe/a412cf7c4627253874f81a00745a7fbb/raw/accc3acf465d1ffd0304a46b17741f62d4d354ef/opengv_disable_march_native.patch && \ 10 | git apply opengv_disable_march_native.patch && \ 11 | mkdir build && \ 12 | cd build && \ 13 | cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF .. && \ 14 | make -j4 && \ 15 | make install && \ 16 | cd && \ 17 | rm -r opengv 18 | 19 | # Will be used to read/store databases on host 20 | RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map 21 | 22 | # Copy current source code 23 | COPY . /root/rtabmap 24 | 25 | # Build RTAB-Map project 26 | RUN source /ros_entrypoint.sh && \ 27 | cd rtabmap/build && \ 28 | cmake -DWITH_OPENGV=ON .. && \ 29 | make -j4 && \ 30 | make install && \ 31 | cd ../.. && \ 32 | rm -rf rtabmap && \ 33 | ldconfig 34 | 35 | -------------------------------------------------------------------------------- /docker/trusty/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:trusty 2 | 3 | FROM ros:indigo-perception 4 | 5 | # Install/build dependencies 6 | RUN apt-get update && \ 7 | apt-get install -y ros-indigo-rtabmap-ros && \ 8 | apt-get remove -y ros-indigo-rtabmap && \ 9 | rm -rf /var/lib/apt/lists/ 10 | 11 | WORKDIR /root/ 12 | 13 | # Copy current source code 14 | COPY . /root/rtabmap 15 | 16 | RUN rm /bin/sh && ln -s /bin/bash /bin/sh 17 | 18 | # Build RTAB-Map project 19 | RUN source /ros_entrypoint.sh && \ 20 | cd rtabmap/build && \ 21 | cmake .. && \ 22 | make && \ 23 | make install && \ 24 | cd ../.. && \ 25 | rm -rf rtabmap && \ 26 | ldconfig 27 | 28 | -------------------------------------------------------------------------------- /docker/xenial/android/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:android-deps-api19 2 | 3 | FROM ubuntu:16.04 4 | 5 | # Install build dependencies 6 | RUN apt-get update && apt-get install -y \ 7 | git \ 8 | cmake \ 9 | g++ \ 10 | software-properties-common \ 11 | freeglut3-dev 12 | 13 | ENV ANDROID_HOME=/opt/android-sdk 14 | ENV ANDROID_NATIVE_API_LEVEL=android-19 15 | ENV ANDROID_NDK=/opt/android-ndk-r14 16 | ENV PATH=$PATH:/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/android-ndk-r14 17 | 18 | WORKDIR /root/ 19 | 20 | ADD setup_android_env.bash /root/setup_android_env.bash 21 | RUN chmod +x setup_android_env.bash 22 | RUN /bin/bash -c "./setup_android_env.bash" 23 | 24 | ADD install_deps.bash /root/install_deps.bash 25 | RUN chmod +x install_deps.bash 26 | RUN /bin/bash -c "./install_deps.bash /opt/android" 27 | -------------------------------------------------------------------------------- /docker/xenial/android/setup_android_env.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Setup java 1.8 4 | apt-get update 5 | apt-get install -y --no-install-recommends apt-utils 6 | apt-get install -y unzip wget ant 7 | apt-get install -y default-jre default-jdk 8 | apt-get install -y lib32stdc++6 lib32z1 9 | 10 | # Setup android sdk 11 | echo "wget android-sdk..." 12 | wget -nv https://dl.google.com/android/repository/tools_r25.2.3-linux.zip 13 | unzip -qq tools_r25.2.3-linux.zip 14 | rm tools_r25.2.3-linux.zip 15 | mkdir $ANDROID_HOME 16 | mv tools $ANDROID_HOME/. 17 | #android list sdk --all --extended 18 | echo y | android update sdk --no-ui --all --filter platform-tools,android-19,build-tools-19.1.0,android-21,build-tools-21.1.0 19 | 20 | # Setup android ndk 21 | echo "wget android-ndk..." 22 | wget -nv https://dl.google.com/android/repository/android-ndk-r14-linux-x86_64.zip 23 | unzip -qq android-ndk-r14-linux-x86_64.zip 24 | rm android-ndk-r14-linux-x86_64.zip 25 | mv android-ndk-r14 $ANDROID_NDK 26 | -------------------------------------------------------------------------------- /docker/xenial/android/tango/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:tango-api19 2 | 3 | FROM introlab3it/rtabmap:android-deps-api19 4 | 5 | WORKDIR /root/ 6 | 7 | ADD build.bash /root/build.bash 8 | RUN chmod +x build.bash 9 | RUN /bin/bash -c "./build.bash /opt/android" 10 | 11 | WORKDIR /root/ 12 | -------------------------------------------------------------------------------- /docker/xenial/android/tango/tango-dev/Dockerfile: -------------------------------------------------------------------------------- 1 | # Image: introlab3it/rtabmap:tango-dev 2 | 3 | FROM introlab3it/rtabmap:tango 4 | 5 | WORKDIR /root/ 6 | 7 | RUN apt-get update && apt-get install -y \ 8 | vim \ 9 | eclipse \ 10 | eclipse-cdt \ 11 | eclipse-cdt-jni 12 | 13 | RUN cp ~/rtabmap-tango/build/arm64-v8a/app/android/project.properties ~/rtabmap-tango/app/android/. 14 | 15 | # Manual steps: 16 | # - Install ADT plugin from Eclipse: https://stuff.mit.edu/afs/sipb/project/android/docs/sdk/installing/installing-adt.html 17 | # - Import rtabmap project, set build command: "make -C ${ProjDirPath}/build/arm64-v8a VERBOSE=true" 18 | # - Create Android project from source code and select rtabmap-tango/app/android directory. -------------------------------------------------------------------------------- /docker/xenial/hooks/build: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build --build-arg CACHE_DATE="$(date)" --cache-from $IMAGE_NAME -f $DOCKERFILE_PATH -t $IMAGE_NAME -t $DOCKER_REPO:16.04 -t $DOCKER_REPO:latest . 3 | -------------------------------------------------------------------------------- /docker/xenial/hooks/post_push: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker push $DOCKER_REPO:16.04 3 | docker push $DOCKER_REPO:latest 4 | -------------------------------------------------------------------------------- /examples/BOWMapping/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.14) 2 | 3 | if(POLICY CMP0020) 4 | cmake_policy(SET CMP0020 NEW) 5 | endif() 6 | 7 | IF(DEFINED PROJECT_NAME) 8 | set(internal TRUE) 9 | ENDIF(DEFINED PROJECT_NAME) 10 | 11 | if(NOT internal) 12 | # external build 13 | PROJECT( MyProject ) 14 | 15 | FIND_PACKAGE(RTABMap REQUIRED) 16 | endif() 17 | 18 | ADD_EXECUTABLE(bow_mapping main.cpp) 19 | TARGET_LINK_LIBRARIES(bow_mapping rtabmap::rtabmap) 20 | 21 | if(internal) 22 | SET_TARGET_PROPERTIES( bow_mapping 23 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-bow_mapping) 24 | endif(internal) 25 | -------------------------------------------------------------------------------- /examples/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_SUBDIRECTORY( BOWMapping ) 3 | 4 | IF(TARGET rtabmap_gui) 5 | ADD_SUBDIRECTORY( RGBDMapping ) 6 | ADD_SUBDIRECTORY( WifiMapping ) 7 | ADD_SUBDIRECTORY( NoEventsExample ) 8 | IF(PCL_VERSION VERSION_GREATER_EQUAL "1.8") 9 | ADD_SUBDIRECTORY( LidarMapping ) 10 | ENDIF() 11 | ELSE() 12 | MESSAGE(STATUS "RTAB-Map GUI lib is not built, the RGBDMapping and WifiMapping examples will not be built...") 13 | ENDIF() 14 | 15 | 16 | -------------------------------------------------------------------------------- /examples/LidarMapping/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.14) 2 | 3 | IF(DEFINED PROJECT_NAME) 4 | set(internal TRUE) 5 | ENDIF(DEFINED PROJECT_NAME) 6 | 7 | if(NOT internal) 8 | # external build 9 | PROJECT( MyProject ) 10 | 11 | FIND_PACKAGE(RTABMap REQUIRED COMPONENTS gui) 12 | 13 | endif() 14 | 15 | IF(QT4_FOUND OR Qt5_FOUND OR Qt6_FOUND) 16 | SET(moc_srcs MapBuilder.h) 17 | ENDIF() 18 | 19 | ADD_EXECUTABLE(lidar_mapping main.cpp ${moc_srcs}) 20 | 21 | TARGET_LINK_LIBRARIES(lidar_mapping rtabmap::gui) 22 | 23 | SET_TARGET_PROPERTIES( 24 | lidar_mapping 25 | PROPERTIES 26 | AUTOUIC ON 27 | AUTOMOC ON 28 | AUTORCC ON 29 | ) 30 | 31 | if(internal) 32 | SET_TARGET_PROPERTIES( lidar_mapping 33 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-lidar_mapping) 34 | endif(internal) 35 | -------------------------------------------------------------------------------- /examples/NoEventsExample/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.14) 2 | 3 | if(POLICY CMP0020) 4 | cmake_policy(SET CMP0020 NEW) 5 | endif() 6 | 7 | IF(DEFINED PROJECT_NAME) 8 | set(internal TRUE) 9 | ENDIF(DEFINED PROJECT_NAME) 10 | 11 | if(NOT internal) 12 | # external build 13 | PROJECT( MyProject ) 14 | 15 | FIND_PACKAGE(RTABMap REQUIRED COMPONENTS gui) 16 | endif() 17 | 18 | IF(QT4_FOUND OR Qt5_FOUND OR Qt6_FOUND) 19 | SET(moc_srcs MapBuilder.h) 20 | ENDIF() 21 | 22 | ADD_EXECUTABLE(noEventsExample main.cpp ${moc_srcs}) 23 | 24 | TARGET_LINK_LIBRARIES(noEventsExample rtabmap::gui) 25 | 26 | SET_TARGET_PROPERTIES( 27 | noEventsExample 28 | PROPERTIES 29 | AUTOUIC ON 30 | AUTOMOC ON 31 | AUTORCC ON 32 | ) 33 | 34 | if(internal) 35 | SET_TARGET_PROPERTIES( noEventsExample 36 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-noEventsExample) 37 | endif(internal) 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /examples/RGBDMapping/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.14) 2 | 3 | if(POLICY CMP0020) 4 | cmake_policy(SET CMP0020 NEW) 5 | endif() 6 | 7 | IF(DEFINED PROJECT_NAME) 8 | set(internal TRUE) 9 | ENDIF(DEFINED PROJECT_NAME) 10 | 11 | if(NOT internal) 12 | # external build 13 | PROJECT( MyProject ) 14 | 15 | FIND_PACKAGE(RTABMap REQUIRED COMPONENTS gui) 16 | endif() 17 | 18 | IF(QT4_FOUND OR Qt5_FOUND OR Qt6_FOUND) 19 | SET(moc_srcs MapBuilder.h) 20 | ENDIF() 21 | 22 | ADD_EXECUTABLE(rgbd_mapping main.cpp ${moc_srcs}) 23 | 24 | TARGET_LINK_LIBRARIES(rgbd_mapping rtabmap::gui) 25 | 26 | SET_TARGET_PROPERTIES( 27 | rgbd_mapping 28 | PROPERTIES 29 | AUTOUIC ON 30 | AUTOMOC ON 31 | AUTORCC ON 32 | ) 33 | 34 | if(internal) 35 | SET_TARGET_PROPERTIES( rgbd_mapping 36 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-rgbd_mapping) 37 | endif(internal) 38 | -------------------------------------------------------------------------------- /examples/WifiMapping/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.14) 2 | 3 | if(POLICY CMP0020) 4 | cmake_policy(SET CMP0020 NEW) 5 | endif() 6 | 7 | IF(DEFINED PROJECT_NAME) 8 | set(internal TRUE) 9 | ENDIF(DEFINED PROJECT_NAME) 10 | 11 | if(NOT internal) 12 | # external build 13 | PROJECT( MyProject ) 14 | 15 | FIND_PACKAGE(RTABMap REQUIRED) 16 | endif() 17 | 18 | IF(QT4_FOUND OR Qt5_FOUND OR Qt6_FOUND) 19 | SET(moc_srcs MapBuilder.h MapBuilderWifi.h) 20 | ENDIF() 21 | 22 | SET(srcs 23 | main.cpp) 24 | 25 | set(LIBRARIES "") 26 | 27 | IF(APPLE) 28 | FIND_LIBRARY(CoreWLAN_LIBRARY CoreWLAN) 29 | FIND_LIBRARY(Foundation_LIBRARY Foundation) 30 | MARK_AS_ADVANCED(CoreWLAN_LIBRARY Foundation_LIBRARY) 31 | SET(LIBRARIES 32 | ${LIBRARIES} 33 | ${CoreWLAN_LIBRARY} 34 | ${Foundation_LIBRARY} 35 | ) 36 | SET(srcs 37 | ${srcs} 38 | WifiOSX.mm 39 | ) 40 | ENDIF(APPLE) 41 | 42 | ADD_EXECUTABLE(wifi_mapping ${srcs} ${moc_srcs}) 43 | TARGET_LINK_LIBRARIES(wifi_mapping rtabmap::gui ${LIBRARIES}) 44 | 45 | SET_TARGET_PROPERTIES( 46 | wifi_mapping 47 | PROPERTIES 48 | AUTOUIC ON 49 | AUTOMOC ON 50 | AUTORCC ON 51 | ) 52 | 53 | if(internal) 54 | SET_TARGET_PROPERTIES( wifi_mapping 55 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-wifi_mapping) 56 | endif(internal) 57 | -------------------------------------------------------------------------------- /examples/WifiMapping/WifiOSX.mm: -------------------------------------------------------------------------------- 1 | #import 2 | #include "WifiOSX.h" 3 | 4 | int getRssi(const std::string& interfaceName) 5 | { 6 | NSString* ifName = [NSString stringWithUTF8String:interfaceName.c_str()]; 7 | CWInterface* interface = [CWInterface interfaceWithName:ifName]; 8 | return interface.rssiValue; 9 | } 10 | 11 | std::vector scanAir(const std::string& interfaceName) 12 | { 13 | NSString* ifName = [NSString stringWithUTF8String:interfaceName.c_str()]; 14 | CWInterface* interface = [CWInterface interfaceWithName:ifName]; 15 | 16 | NSError* error = nil; 17 | NSArray* scanResult = [[interface scanForNetworksWithSSID:nil error:&error] allObjects]; 18 | if (error) 19 | { 20 | NSLog(@"%@ (%ld)", [error localizedDescription], [error code]); 21 | } 22 | 23 | std::vector result; 24 | for (CWNetwork* network in scanResult) 25 | { 26 | AccessPoint ap; 27 | ap.ssid = std::string([[network ssid] UTF8String]); 28 | ap.bssid = std::string([[network bssid] UTF8String]); 29 | ap.rssi = [network rssiValue]; 30 | result.push_back(ap); 31 | } 32 | 33 | return result; 34 | } -------------------------------------------------------------------------------- /examples/WifiMapping/screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/examples/WifiMapping/screenshot.jpg -------------------------------------------------------------------------------- /guilib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY( src ) -------------------------------------------------------------------------------- /guilib/include/rtabmap/gui/CloudViewerCellPicker.h: -------------------------------------------------------------------------------- 1 | /* 2 | * CloudViewerCellPicker.h 3 | * 4 | * Created on: Aug 21, 2018 5 | * Author: mathieu 6 | */ 7 | 8 | #ifndef GUILIB_SRC_CLOUDVIEWERCELLPICKER_H_ 9 | #define GUILIB_SRC_CLOUDVIEWERCELLPICKER_H_ 10 | 11 | #include "rtabmap/gui/rtabmap_gui_export.h" // DLL export/import defines 12 | 13 | #include 14 | 15 | namespace rtabmap { 16 | 17 | class RTABMAP_GUI_EXPORT CloudViewerCellPicker : public vtkCellPicker { 18 | public: 19 | public: 20 | static CloudViewerCellPicker *New (); 21 | vtkTypeMacro(CloudViewerCellPicker, vtkCellPicker); 22 | CloudViewerCellPicker(); 23 | virtual ~CloudViewerCellPicker(); 24 | 25 | protected: 26 | // overrided to ignore back faces 27 | virtual double IntersectActorWithLine(const double p1[3], 28 | const double p2[3], 29 | double t1, double t2, 30 | double tol, 31 | vtkProp3D *prop, 32 | vtkMapper *mapper); 33 | 34 | private: 35 | vtkGenericCell * cell_; //used to accelerate picking 36 | vtkIdList * pointIds_; // used to accelerate picking 37 | }; 38 | 39 | } /* namespace rtabmap */ 40 | 41 | #endif /* GUILIB_SRC_CLOUDVIEWERCELLPICKER_H_ */ 42 | -------------------------------------------------------------------------------- /guilib/src/images/IntRoLab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/IntRoLab.png -------------------------------------------------------------------------------- /guilib/src/images/IntRoLabSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/IntRoLabSmall.png -------------------------------------------------------------------------------- /guilib/src/images/Pause.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/Pause.ico -------------------------------------------------------------------------------- /guilib/src/images/PauseLoopRejected.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/PauseLoopRejected.ico -------------------------------------------------------------------------------- /guilib/src/images/PauseNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/PauseNormal.png -------------------------------------------------------------------------------- /guilib/src/images/PauseNormalRed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/PauseNormalRed.png -------------------------------------------------------------------------------- /guilib/src/images/PauseOnLocalLoop.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/PauseOnLocalLoop.ico -------------------------------------------------------------------------------- /guilib/src/images/PauseOnLoop.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/PauseOnLoop.ico -------------------------------------------------------------------------------- /guilib/src/images/Play1Normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/Play1Normal.png -------------------------------------------------------------------------------- /guilib/src/images/Plot.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/Plot.ico -------------------------------------------------------------------------------- /guilib/src/images/Plot16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/Plot16.png -------------------------------------------------------------------------------- /guilib/src/images/Plot48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/Plot48.png -------------------------------------------------------------------------------- /guilib/src/images/RTAB-Map.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/RTAB-Map.ico -------------------------------------------------------------------------------- /guilib/src/images/RTAB-Map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/RTAB-Map.png -------------------------------------------------------------------------------- /guilib/src/images/RTAB-Map100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/RTAB-Map100.png -------------------------------------------------------------------------------- /guilib/src/images/RTAB-Map2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/RTAB-Map2.png -------------------------------------------------------------------------------- /guilib/src/images/Stop1Normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/Stop1Normal.png -------------------------------------------------------------------------------- /guilib/src/images/Stop1NormalYellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/Stop1NormalYellow.png -------------------------------------------------------------------------------- /guilib/src/images/astra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/astra.png -------------------------------------------------------------------------------- /guilib/src/images/bumblebee2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/bumblebee2.png -------------------------------------------------------------------------------- /guilib/src/images/crosshatch_metal_grille_9280154_150.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/crosshatch_metal_grille_9280154_150.JPG -------------------------------------------------------------------------------- /guilib/src/images/d415.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/d415.png -------------------------------------------------------------------------------- /guilib/src/images/d435.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/d435.png -------------------------------------------------------------------------------- /guilib/src/images/document-new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/document-new.png -------------------------------------------------------------------------------- /guilib/src/images/document-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/document-open.png -------------------------------------------------------------------------------- /guilib/src/images/document-properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/document-properties.png -------------------------------------------------------------------------------- /guilib/src/images/document-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/document-save.png -------------------------------------------------------------------------------- /guilib/src/images/k4a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/k4a.png -------------------------------------------------------------------------------- /guilib/src/images/kinect_xbox_360.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/kinect_xbox_360.png -------------------------------------------------------------------------------- /guilib/src/images/kinect_xbox_one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/kinect_xbox_one.png -------------------------------------------------------------------------------- /guilib/src/images/l515.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/l515.png -------------------------------------------------------------------------------- /guilib/src/images/mag_glass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/mag_glass.png -------------------------------------------------------------------------------- /guilib/src/images/metal_7280826_512.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/metal_7280826_512.jpg -------------------------------------------------------------------------------- /guilib/src/images/mynteyes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/mynteyes.png -------------------------------------------------------------------------------- /guilib/src/images/oakd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/oakd.png -------------------------------------------------------------------------------- /guilib/src/images/oakd_lite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/oakd_lite.png -------------------------------------------------------------------------------- /guilib/src/images/oakdpro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/oakdpro.png -------------------------------------------------------------------------------- /guilib/src/images/r200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/r200.png -------------------------------------------------------------------------------- /guilib/src/images/seer_sense_DS80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/seer_sense_DS80.png -------------------------------------------------------------------------------- /guilib/src/images/sense.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/sense.png -------------------------------------------------------------------------------- /guilib/src/images/sr300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/sr300.png -------------------------------------------------------------------------------- /guilib/src/images/system-log-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/system-log-out.png -------------------------------------------------------------------------------- /guilib/src/images/t265.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/t265.png -------------------------------------------------------------------------------- /guilib/src/images/tara.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/tara.png -------------------------------------------------------------------------------- /guilib/src/images/view-refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/view-refresh.png -------------------------------------------------------------------------------- /guilib/src/images/webcam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/webcam.png -------------------------------------------------------------------------------- /guilib/src/images/xtion_pro_live.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/xtion_pro_live.png -------------------------------------------------------------------------------- /guilib/src/images/zed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/zed.png -------------------------------------------------------------------------------- /guilib/src/images/zr300.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/introlab/rtabmap/e19b0c3dc4571a75f60823f6efb622769f764f31/guilib/src/images/zr300.png -------------------------------------------------------------------------------- /guilib/src/qss/default.qss: -------------------------------------------------------------------------------- 1 | 2 | /*QGroupBox { 3 | background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, 4 | stop: 0 #E0E0E0, stop: 1 #FFFFFF); 5 | border: 2px solid gray; 6 | border-radius: 5px; 7 | margin-top: 1ex; /* leave space at the top for the title */ 8 | } 9 | 10 | QGroupBox::title { 11 | subcontrol-origin: margin; 12 | subcontrol-position: top center; 13 | padding: 0 3px; 14 | background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, 15 | stop: 0 #FFOECE, stop: 1 #FFFFFF); 16 | } 17 | */ -------------------------------------------------------------------------------- /mainpage.dox: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | @mainpage 4 | 5 | @htmlinclude manifest.html 6 | 7 | @b rtabmap contains RTAB-Map libraries and standalone application. 8 | See http://www.ros.org/wiki/rtabmap for documentation. 9 | 10 | Currently this package has no public code API. 11 | 12 | */ 13 | -------------------------------------------------------------------------------- /tools/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_SUBDIRECTORY( ConsoleApp ) 3 | ADD_SUBDIRECTORY( ImagesJoiner ) 4 | ADD_SUBDIRECTORY( ExtractObject ) 5 | ADD_SUBDIRECTORY( Camera ) 6 | ADD_SUBDIRECTORY( StereoEval ) 7 | ADD_SUBDIRECTORY( KittiDataset ) 8 | ADD_SUBDIRECTORY( RgbdDataset ) 9 | ADD_SUBDIRECTORY( EurocDataset ) 10 | ADD_SUBDIRECTORY( Recovery ) 11 | ADD_SUBDIRECTORY( Reprocess ) 12 | ADD_SUBDIRECTORY( DetectMoreLoopClosures ) 13 | ADD_SUBDIRECTORY( Export ) 14 | ADD_SUBDIRECTORY( Report ) 15 | ADD_SUBDIRECTORY( Info ) 16 | ADD_SUBDIRECTORY( CleanupLocalGrids ) 17 | ADD_SUBDIRECTORY( GlobalBundleAdjustment ) 18 | 19 | IF(OPENCV_NONFREE_FOUND) 20 | ADD_SUBDIRECTORY( VocabularyComparison ) 21 | ENDIF(OPENCV_NONFREE_FOUND) 22 | 23 | IF(TARGET rtabmap_gui) 24 | ADD_SUBDIRECTORY( CameraRGBD ) 25 | IF(PCL_VERSION VERSION_GREATER_EQUAL "1.8") 26 | ADD_SUBDIRECTORY( LidarViewer ) 27 | ENDIF() 28 | ADD_SUBDIRECTORY( DatabaseViewer ) 29 | ADD_SUBDIRECTORY( EpipolarGeometry ) 30 | ADD_SUBDIRECTORY( OdometryViewer ) 31 | ADD_SUBDIRECTORY( DataRecorder ) 32 | ADD_SUBDIRECTORY( Calibration ) 33 | ADD_SUBDIRECTORY( Matcher ) 34 | ELSE() 35 | MESSAGE(STATUS "RTAB-Map GUI lib is not built, some tools won't be built...") 36 | ENDIF() 37 | 38 | 39 | -------------------------------------------------------------------------------- /tools/Calibration/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(calibration main.cpp) 3 | TARGET_LINK_LIBRARIES(calibration rtabmap_gui) 4 | 5 | SET_TARGET_PROPERTIES( calibration 6 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-calibration) 7 | 8 | INSTALL(TARGETS calibration 9 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 10 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 11 | -------------------------------------------------------------------------------- /tools/Camera/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(camera main.cpp) 3 | TARGET_LINK_LIBRARIES(camera rtabmap_core) 4 | 5 | SET_TARGET_PROPERTIES( camera 6 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-camera) 7 | 8 | INSTALL(TARGETS camera 9 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 10 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) -------------------------------------------------------------------------------- /tools/CameraRGBD/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(rgbd_camera main.cpp) 3 | TARGET_LINK_LIBRARIES(rgbd_camera rtabmap_gui) 4 | 5 | SET_TARGET_PROPERTIES( rgbd_camera 6 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-rgbd_camera) 7 | 8 | INSTALL(TARGETS rgbd_camera 9 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 10 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) -------------------------------------------------------------------------------- /tools/CleanupLocalGrids/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(cleanupLocalGrids main.cpp) 3 | 4 | TARGET_LINK_LIBRARIES(cleanupLocalGrids rtabmap_core) 5 | 6 | SET_TARGET_PROPERTIES( cleanupLocalGrids 7 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-cleanupLocalGrids) 8 | 9 | INSTALL(TARGETS cleanupLocalGrids 10 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 11 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 12 | 13 | 14 | -------------------------------------------------------------------------------- /tools/ConsoleApp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | # Add binary called "consoleApp" that is built from the source file "main.cpp". 3 | # The extension is automatically found. 4 | ADD_EXECUTABLE(consoleApp main.cpp) 5 | TARGET_LINK_LIBRARIES(consoleApp rtabmap_core) 6 | 7 | SET_TARGET_PROPERTIES( consoleApp 8 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-console) 9 | 10 | INSTALL(TARGETS consoleApp 11 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 12 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 13 | 14 | -------------------------------------------------------------------------------- /tools/DataRecorder/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | IF(MINGW) 3 | ADD_EXECUTABLE(dataRecorder WIN32 main.cpp) 4 | ELSE() 5 | ADD_EXECUTABLE(dataRecorder main.cpp) 6 | ENDIF() 7 | TARGET_LINK_LIBRARIES(dataRecorder rtabmap_gui) 8 | 9 | SET_TARGET_PROPERTIES( dataRecorder 10 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-dataRecorder) 11 | 12 | INSTALL(TARGETS dataRecorder 13 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 14 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 15 | -------------------------------------------------------------------------------- /tools/DatabaseViewer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | IF(MINGW) 3 | ADD_EXECUTABLE(databaseViewer WIN32 main.cpp) 4 | ELSE() 5 | ADD_EXECUTABLE(databaseViewer main.cpp) 6 | ENDIF() 7 | 8 | TARGET_LINK_LIBRARIES(databaseViewer rtabmap_gui) 9 | 10 | SET_TARGET_PROPERTIES( databaseViewer 11 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-databaseViewer) 12 | 13 | INSTALL(TARGETS databaseViewer 14 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 15 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 16 | -------------------------------------------------------------------------------- /tools/DetectMoreLoopClosures/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(detectMoreLoopClosures main.cpp) 3 | 4 | TARGET_LINK_LIBRARIES(detectMoreLoopClosures rtabmap_core) 5 | 6 | SET_TARGET_PROPERTIES( detectMoreLoopClosures 7 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-detectMoreLoopClosures) 8 | 9 | INSTALL(TARGETS detectMoreLoopClosures 10 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 11 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 12 | 13 | 14 | -------------------------------------------------------------------------------- /tools/EpipolarGeometry/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | IF(MINGW) 3 | ADD_EXECUTABLE(epipolar_geometry WIN32 main.cpp) 4 | ELSE() 5 | ADD_EXECUTABLE(epipolar_geometry main.cpp) 6 | ENDIF() 7 | TARGET_LINK_LIBRARIES(epipolar_geometry rtabmap_gui) 8 | 9 | SET_TARGET_PROPERTIES( epipolar_geometry 10 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-epipolar_geometry) 11 | 12 | -------------------------------------------------------------------------------- /tools/EurocDataset/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | FIND_PACKAGE(yaml-cpp QUIET) 3 | 4 | IF(yaml-cpp_FOUND) 5 | IF (TARGET yaml-cpp::yaml-cpp) 6 | # yaml-cpp 0.8.0 uses target yaml-cpp::yaml-cpp. 7 | SET(YAML_CPP_LIBRARIES yaml-cpp::yaml-cpp) 8 | ELSEIF (TARGET yaml-cpp) 9 | # yaml-cpp 0.7.0 uses target yaml-cpp (VCPKG). 10 | SET(YAML_CPP_LIBRARIES yaml-cpp) 11 | ENDIF() 12 | ELSE() 13 | find_package(PkgConfig QUIET) 14 | IF(PKG_CONFIG_FOUND) 15 | pkg_check_modules(yaml_cpp QUIET yaml-cpp) 16 | IF(yaml_cpp_FOUND) 17 | SET(YAML_CPP_LIBRARIES ${yaml_cpp_LIBRARIES}) 18 | SET(YAML_CPP_INCLUDE_DIR ${yaml_cpp_INCLUDEDIR}) 19 | SET(yaml-cpp_FOUND ${yaml_cpp_FOUND}) 20 | ENDIF(yaml_cpp_FOUND) 21 | ENDIF(PKG_CONFIG_FOUND) 22 | ENDIF(yaml-cpp_FOUND) 23 | 24 | IF(yaml-cpp_FOUND) 25 | 26 | SET(INCLUDE_DIRS 27 | ${YAML_CPP_INCLUDE_DIR} 28 | ) 29 | 30 | SET(LIBRARIES 31 | ${YAML_CPP_LIBRARIES} 32 | ) 33 | 34 | INCLUDE_DIRECTORIES(${INCLUDE_DIRS} yaml-cpp) 35 | 36 | ADD_EXECUTABLE(euroc_dataset main.cpp) 37 | 38 | TARGET_LINK_LIBRARIES(euroc_dataset rtabmap_core ${LIBRARIES}) 39 | 40 | SET_TARGET_PROPERTIES( euroc_dataset 41 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-euroc_dataset) 42 | 43 | INSTALL(TARGETS euroc_dataset 44 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 45 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 46 | 47 | ELSE() 48 | MESSAGE(STATUS "yaml-cpp not found, euroc_dataset tool won't be built...") 49 | ENDIF() 50 | -------------------------------------------------------------------------------- /tools/Export/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(export main.cpp) 3 | 4 | TARGET_LINK_LIBRARIES(export rtabmap_core) 5 | 6 | SET_TARGET_PROPERTIES( export 7 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-export) 8 | 9 | INSTALL(TARGETS export 10 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 11 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 12 | 13 | 14 | -------------------------------------------------------------------------------- /tools/ExtractObject/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | ADD_EXECUTABLE(extractObject main.cpp) 4 | TARGET_LINK_LIBRARIES(extractObject rtabmap_core) 5 | 6 | SET_TARGET_PROPERTIES( extractObject 7 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-extractObject) 8 | 9 | INSTALL(TARGETS extractObject 10 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 11 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) -------------------------------------------------------------------------------- /tools/GlobalBundleAdjustment/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(globalBundleAdjustment main.cpp) 3 | 4 | TARGET_LINK_LIBRARIES(globalBundleAdjustment rtabmap_core) 5 | 6 | SET_TARGET_PROPERTIES( globalBundleAdjustment 7 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-globalBundleAdjustment) 8 | 9 | INSTALL(TARGETS globalBundleAdjustment 10 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 11 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 12 | 13 | 14 | -------------------------------------------------------------------------------- /tools/ImagesJoiner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(imagesJoiner main.cpp) 3 | TARGET_LINK_LIBRARIES(imagesJoiner rtabmap_core) 4 | 5 | SET_TARGET_PROPERTIES( imagesJoiner 6 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-imagesJoiner) 7 | 8 | -------------------------------------------------------------------------------- /tools/Info/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(info main.cpp) 3 | 4 | TARGET_LINK_LIBRARIES(info rtabmap_core) 5 | 6 | SET_TARGET_PROPERTIES( info 7 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-info) 8 | 9 | INSTALL(TARGETS info 10 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 11 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tools/KittiDataset/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(kitti_dataset main.cpp) 3 | 4 | TARGET_LINK_LIBRARIES(kitti_dataset rtabmap_core) 5 | 6 | SET_TARGET_PROPERTIES( kitti_dataset 7 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-kitti_dataset) 8 | 9 | INSTALL(TARGETS kitti_dataset 10 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 11 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 12 | -------------------------------------------------------------------------------- /tools/LidarViewer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | IF(NOT WITH_QT) 3 | # visualization module required 4 | FIND_PACKAGE(PCL 1.7 REQUIRED QUIET COMPONENTS common io kdtree search surface filters registration sample_consensus segmentation visualization) 5 | ENDIF(NOT WITH_QT) 6 | 7 | SET(INCLUDE_DIRS 8 | ${PROJECT_BINARY_DIR}/corelib/include 9 | ${PROJECT_SOURCE_DIR}/corelib/include 10 | ${PROJECT_SOURCE_DIR}/utilite/include 11 | ${OpenCV_INCLUDE_DIRS} 12 | ${PCL_INCLUDE_DIRS} 13 | ) 14 | 15 | SET(LIBRARIES 16 | ${OpenCV_LIBRARIES} 17 | ${PCL_LIBRARIES} 18 | ) 19 | 20 | add_definitions(${PCL_DEFINITIONS}) 21 | 22 | INCLUDE_DIRECTORIES(${INCLUDE_DIRS}) 23 | 24 | ADD_EXECUTABLE(lidar_viewer main.cpp) 25 | TARGET_LINK_LIBRARIES(lidar_viewer rtabmap_core rtabmap_utilite ${LIBRARIES}) 26 | 27 | SET_TARGET_PROPERTIES( lidar_viewer 28 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-lidar_viewer) 29 | 30 | INSTALL(TARGETS lidar_viewer 31 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 32 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) -------------------------------------------------------------------------------- /tools/Matcher/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(matcher main.cpp) 3 | TARGET_LINK_LIBRARIES(matcher rtabmap_gui) 4 | 5 | SET_TARGET_PROPERTIES( matcher 6 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-matcher) 7 | 8 | -------------------------------------------------------------------------------- /tools/OdometryViewer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | IF(MINGW) 3 | ADD_EXECUTABLE(odometryViewer WIN32 main.cpp) 4 | ELSE() 5 | ADD_EXECUTABLE(odometryViewer main.cpp) 6 | ENDIF() 7 | TARGET_LINK_LIBRARIES(odometryViewer rtabmap_gui) 8 | 9 | SET_TARGET_PROPERTIES( odometryViewer 10 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-odometryViewer) 11 | 12 | INSTALL(TARGETS odometryViewer 13 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 14 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 15 | 16 | -------------------------------------------------------------------------------- /tools/Recovery/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(recovery main.cpp) 3 | 4 | TARGET_LINK_LIBRARIES(recovery rtabmap_core) 5 | 6 | SET_TARGET_PROPERTIES( recovery 7 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-recovery) 8 | 9 | INSTALL(TARGETS recovery 10 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 11 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tools/Report/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | set(LIBRARIES rtabmap_core) 3 | 4 | IF(WITH_QT AND (QT4_FOUND OR Qt5_FOUND)) 5 | ADD_DEFINITIONS("-DWITH_QT") 6 | set(LIBRARIES ${LIBRARIES} rtabmap_gui) 7 | ENDIF(WITH_QT AND (QT4_FOUND OR Qt5_FOUND)) 8 | 9 | ADD_EXECUTABLE(report main.cpp) 10 | 11 | TARGET_LINK_LIBRARIES(report ${LIBRARIES}) 12 | 13 | SET_TARGET_PROPERTIES( report 14 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-report) 15 | 16 | INSTALL(TARGETS report 17 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 18 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 19 | -------------------------------------------------------------------------------- /tools/Reprocess/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(reprocess main.cpp) 3 | 4 | TARGET_LINK_LIBRARIES(reprocess rtabmap_core) 5 | 6 | SET_TARGET_PROPERTIES( reprocess 7 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-reprocess) 8 | 9 | INSTALL(TARGETS reprocess 10 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 11 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tools/RgbdDataset/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(rgbd_dataset main.cpp) 3 | 4 | TARGET_LINK_LIBRARIES(rgbd_dataset rtabmap_core) 5 | 6 | SET_TARGET_PROPERTIES( rgbd_dataset 7 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-rgbd_dataset) 8 | 9 | INSTALL(TARGETS rgbd_dataset 10 | RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime 11 | BUNDLE DESTINATION "${CMAKE_BUNDLE_LOCATION}" COMPONENT runtime) 12 | -------------------------------------------------------------------------------- /tools/StereoEval/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(stereoEval main.cpp) 3 | TARGET_LINK_LIBRARIES(stereoEval rtabmap_core) 4 | 5 | SET_TARGET_PROPERTIES( stereoEval 6 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-stereoEval) 7 | -------------------------------------------------------------------------------- /tools/VocabularyComparison/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | ADD_EXECUTABLE(vocabularyComparison main.cpp) 3 | TARGET_LINK_LIBRARIES(vocabularyComparison rtabmap_core) 4 | 5 | SET_TARGET_PROPERTIES( vocabularyComparison 6 | PROPERTIES OUTPUT_NAME ${PROJECT_PREFIX}-vocabularyComparison) 7 | 8 | -------------------------------------------------------------------------------- /utilite/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET(UTILITE_VERSION "0.3.0") 2 | ADD_DEFINITIONS(-DUTILITE_VERSION="${UTILITE_VERSION}") 3 | 4 | if(UNIX AND NOT ANDROID) 5 | FIND_PACKAGE(Pthreads REQUIRED) 6 | ENDIF(UNIX AND NOT ANDROID) 7 | 8 | ADD_SUBDIRECTORY( src ) 9 | 10 | ADD_SUBDIRECTORY( resource_generator ) 11 | -------------------------------------------------------------------------------- /utilite/include/rtabmap/utilite/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 | 13 | class UEvent; 14 | 15 | class UTILITE_EXPORT UEventsSender 16 | { 17 | public: 18 | UEventsSender(){} 19 | virtual ~UEventsSender(); 20 | 21 | protected: 22 | 23 | /** 24 | * For convenience to post an event. This is the same than calling UEventsManager::post() 25 | * with the sender reference. 26 | */ 27 | void post(UEvent * event, bool async = true) const; 28 | }; 29 | 30 | 31 | #endif /* UEVENTSSENDER_H_ */ 32 | -------------------------------------------------------------------------------- /utilite/include/rtabmap/utilite/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 . 18 | */ 19 | 20 | #ifndef UEXCEPTION_H_ 21 | #define UEXCEPTION_H_ 22 | 23 | #include 24 | 25 | class UException: public std::runtime_error { 26 | public: 27 | 28 | UException(const std::string & what) : 29 | std::runtime_error(what) 30 | {} 31 | }; 32 | 33 | #endif /* UEXCEPTION_H_ */ 34 | -------------------------------------------------------------------------------- /utilite/include/rtabmap/utilite/UProcessInfo.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 . 18 | */ 19 | 20 | #ifndef UPROCESSINFO_H 21 | #define UPROCESSINFO_H 22 | 23 | #include "rtabmap/utilite/utilite_export.h" // DLL export/import defines 24 | 25 | /** 26 | * This class is used to get some informations 27 | * about the current process. 28 | */ 29 | class UTILITE_EXPORT UProcessInfo { 30 | public: 31 | UProcessInfo(); 32 | virtual ~UProcessInfo(); 33 | 34 | /** 35 | * Get the memory used by the current process. 36 | * @return the number of bytes used by the current process. 37 | */ 38 | static long int getMemoryUsage(); 39 | }; 40 | 41 | #endif /* UPROCESSINFO_H */ 42 | -------------------------------------------------------------------------------- /utilite/include/rtabmap/utilite/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 . 18 | */ 19 | 20 | #ifndef UTHREADC_H 21 | #define UTHREADC_H 22 | 23 | #include 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 37 | -------------------------------------------------------------------------------- /utilite/include/rtabmap/utilite/UThreadNode.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 . 18 | */ 19 | 20 | #ifndef UTHREADNODE_H_ 21 | #define UTHREADNODE_H_ 22 | 23 | #include "rtabmap/utilite/UThread.h" 24 | 25 | //For backward compatibility 26 | typedef UThread UThreadNode; 27 | 28 | 29 | #endif /* UTHREADNODE_H_ */ 30 | -------------------------------------------------------------------------------- /utilite/src/UEventsHandler.cpp: -------------------------------------------------------------------------------- 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 . 18 | */ 19 | 20 | #include "rtabmap/utilite/UEventsHandler.h" 21 | #include "rtabmap/utilite/UEventsManager.h" 22 | 23 | UEventsHandler::~UEventsHandler() 24 | { 25 | unregisterFromEventsManager(); 26 | } 27 | 28 | 29 | void UEventsHandler::registerToEventsManager() 30 | { 31 | UEventsManager::addHandler(this); 32 | } 33 | void UEventsHandler::unregisterFromEventsManager() 34 | { 35 | UEventsManager::removeHandler(this); 36 | } 37 | -------------------------------------------------------------------------------- /utilite/src/UEventsSender.cpp: -------------------------------------------------------------------------------- 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 . 18 | */ 19 | 20 | #include "rtabmap/utilite/UEventsSender.h" 21 | #include "rtabmap/utilite/UEventsManager.h" 22 | 23 | UEventsSender::~UEventsSender() 24 | { 25 | UEventsManager::removeAllPipes(this); 26 | } 27 | 28 | void UEventsSender::post(UEvent * event, bool async) const 29 | { 30 | UEventsManager::post(event, async, this); 31 | } 32 | --------------------------------------------------------------------------------