{"id":13613101,"url":"https://github.com/felixendres/rgbdslam_v2","last_synced_at":"2025-04-13T15:32:36.927Z","repository":{"id":16698617,"uuid":"19455240","full_name":"felixendres/rgbdslam_v2","owner":"felixendres","description":"RGB-D SLAM for ROS","archived":false,"fork":false,"pushed_at":"2023-07-18T08:43:02.000Z","size":5629,"stargazers_count":947,"open_issues_count":62,"forks_count":399,"subscribers_count":51,"default_branch":"kinetic","last_synced_at":"2024-11-07T21:41:45.137Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/felixendres.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2014-05-05T12:39:55.000Z","updated_at":"2024-10-26T04:56:59.000Z","dependencies_parsed_at":"2022-07-26T08:48:03.100Z","dependency_job_id":"605677bc-d0b6-40a4-8b5c-bdc28022aef5","html_url":"https://github.com/felixendres/rgbdslam_v2","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixendres%2Frgbdslam_v2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixendres%2Frgbdslam_v2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixendres%2Frgbdslam_v2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/felixendres%2Frgbdslam_v2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/felixendres","download_url":"https://codeload.github.com/felixendres/rgbdslam_v2/tar.gz/refs/heads/kinetic","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248735954,"owners_count":21153508,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T20:00:39.761Z","updated_at":"2025-04-13T15:32:36.063Z","avatar_url":"https://github.com/felixendres.png","language":"C++","funding_links":[],"categories":["Dense map","OpenSource-SLAM","C++","Table of Contents","四 视觉SLAM从入门到进阶","视觉SLAM","算法优缺点"],"sub_categories":["Code","缺点"],"readme":"# RGBDSLAM\u003ci\u003ev2\u003c/i\u003e \n... is a state-of-the-art SLAM system for RGB-D cameras, e.g., the Microsoft\nKinect or the Asus Xtion Pro Live.  You can use it to create 3D point clouds or\nOctoMaps. \n\nRGBDSLAMv2 is based on the open source projects, ROS, OpenCV, OpenGL, PCL,\nOctoMap, SiftGPU, g2o, and more - Thanks!\n\nA journal article with a system description and performance evaluation \ncan be found in the following publication:\n\n\"3D Mapping with an RGB-D Camera\",\u003cbr/\u003e\n*F. Endres, J. Hess, J. Sturm, D. Cremers, W. Burgard*,\u003cbr/\u003e\nIEEE Transactions on Robotics, 2014.\n\nEven more information can be found in my [PhD thesis](http://www2.informatik.uni-freiburg.de/~endres/files/publications/felix-endres-phd-thesis.pdf)\n\nAdditional information can be found here:\u003cbr/\u003e\n* www.informatik.uni-freiburg.de/~endres\n* http://www.ros.org/wiki/rgbdslam\n* http://answers.ros.org/questions/tags:rgbdslam\n\n\u003cimg src=\"http://raw.githubusercontent.com/felixendres/rgbdslam_v2/hydro/media/rgbdslamv2_fr2desk.jpg\" alt=\"RGBDSLAM on the RGB-D Benchmark Dataset\" width=\"600\"\u003e\n\n# Prerequisites  ################################################################\n- Ubuntu 16.04 \n- [ROS kinetic](http://wiki.ros.org/kinetic/)\n- Amd64 processor (there are known problems with ARM, mostly related to qt and opengl)\nOther versions may work, but are not tested. Please report success if you use other versions.\n\n# Installation ################################################################\nThis is a canonical way, feel free to adapt if you known what you are doing.\n\n1. Put RGBDSLAMv2 in a catkin workspace: See [the catkin tutorial](http://wiki.ros.org/catkin/Tutorials/create_a_workspace) \n  for details. Use git to clone this repository into your workspace's \"src/\" directory. Or download RGBDSLAMv2 as an [archive](http://codeload.github.com/felixendres/rgbdslam_v2/zip/kinetic) and extract it to \"src/\".\n\n2. Download my [g2o fork|https://github.com/felixendres/g2o], put it in some other directory. \n   Build and install. Export the environment variable `$G2O_DIR` to the installation directory to\n   let rgbdslam_v2 know where to find it (see Installation from Scratch for an example).\n\n2. Use rosdep (i.e. \"rosdep install rgbdslam\") to install missing \n  dependencies. For details see http://wiki.ros.org/ROS/Tutorials/rosdep\n\n4. To build RGBDSLAMv2 go to your catkin workspace and execute \"catkin_make\". \n   If you get an error about the missing siftgpu library, execute \"catkin_make\" again.\n\n\n## Installation from Scratch  #####################################################\nThere is now an install.sh script, which can be executed (`bash install.sh`).\nIt installs everything required below ~/Code (you can change the location in the script).\n\nThe script is short and not complicated, so you can also use it as a manual.\n\nIf you want to use the install script, it is sufficient to \n[download it directly](https://raw.githubusercontent.com/felixendres/rgbdslam_v2/kinetic/install.sh). \nThere is no need to clone this repository then, as the script will do that for you.\n\nIf you have a multi-core machine with 4GB RAM or more, you can speed up the compilation\nby increasing the two occurences of \"-j2\" to, e.g., \"-j4\".\n\n# Installation done! What's next?\nSee the sections below for more details on the usage. \nBut to get you started quickly here's the most important pointers:\n\n-   If you want to use RGBDSLAMv2 with an RGB-D camera you may have\n    to install openni (sudo apt-get install ros-kinetic-openni-launch)\n    or something similar\n\n-   Check out the launch files in \"launch/\" for examples and specific \n    use cases. roslaunch rgbdslam openni+rgbdslam.launch is a good starting \n    point for live mapping.\n\n-   You probably need to adapt the parameters for the input topics depending\n    on your camera driver node.\n\n-   Check out the README in \"test/\" for running, testing and evaluating\n    RGBDSLAMv2 on Juergen Sturm's RGB-D SLAM Dataset and Benchmark:\n    http://vision.in.tum.de/data/datasets/rgbd-dataset\n    You need cython for the evaluation scripts (sudo apt-get install cython).\n\n-   If you want to use SURF or SIFT, you will need to build OpenCV from source,\n    including the non-free module (this does not include SIFTGPU, which is\n    included, but needs to be enabled in CMakeLists.txt). In the CMakeLists.txt \n    of RGBDSLAMv2 you can set the build directory of OpenCV and enable the\n    non-free functionality.  Note that SIFT and SURF are not the best choice.\n    Due to new (software) features in RGBDSLAMv2, ORB outperforms both.\n\n\u003cimg src=\"http://raw.githubusercontent.com/felixendres/rgbdslam_v2/hydro/media/rgbdslamv2_empty.jpg\" alt=\"RGBDSLAM right after startup\" width=\"600\"\u003e\n\n## IMPORTANT NOTE ################################################################\nThis software is an update of the ROS Fuerte version of RGBDSLAM. However\nmany things have changed, so some of the DOCUMENTATION BELOW MAY BE OUTDATED.\nPlease report problems with the documentation. Thanks.\n\n# Configuration ##############################################################\n\nThere are several example launch-files that set the parameters of RGB-D SLAM\nfor certain use cases. For a definitive list of all settings and their default\nsettings have a look at their quite readable definition in\nsrc/parameter_server.cpp or (with the current settings instead of the default)\nin the GUI Menu Settings-\u003eView Current Settings.\n\nThe various use-case launch-files might not work correctly yet, as they are not\nregularly tested. You should get them running if you fiddle with the topics\n(\"rostopic list\" and \"rosnode info\" will help you. \"rqt_graph\" is great too).\n\n\n\n# Usage ##############################################################\n\nMost people seem to want the registered point cloud. It is by default sent out\non /rgbdslam/batch_clouds when you command RGB-D SLAM to do so (see below). The\nclouds sent are actually the same as before, but the according transformation -\nby default from /map to /openni_camera - is sent out on /tf.\n\nThe octoMap library is compiled into the rgbdslam node. This allows to create\nthe octomap directly. In the GUI this can be done by selecting \"Save Octomap\"\nfrom the \"Data\" Menu. Online octomapping is possible, but not recommended.\n\n\u003cimg src=\"http://raw.githubusercontent.com/felixendres/rgbdslam_v2/hydro/media/rgbdslamv2_fr2desk_octomap.jpg\" width=\"600\" alt=\"OctoMap created from the RGB-D Benchmark sequence fr2/desk\"\u003e\n\n## Usage with GUI #################################################################\n\nTo start RGBDSLAMv2 launch, e.g.,\n$ roslaunch rgbdslam openni+rgbdslam.launch\n\nAlternatively you can start the openni nodes and RGBDSLAMv2 separately, e.g.:\nroslaunch openni_camera openni_node.launch \nroslaunch rgbdslam rgbdslam.launch\n\nTo capture models either press space to start recording a continuous stream or\npress enter to record a single frame. To reduce data redundancy, sequential\nframes from (almost) the same position are not included in the final model.\n\nParameters\nRGBDSLAMv2 is customizable by parameters. These should be set in the launch\nfile. Parameters can be changed during operation from the GUI, however, \nchanges from the GUI may have no effect for many parameters.\n\nVisualization\nThe 3D visualization shows the globally optimized model (you might have\nto click into it to update the view after optimization). Neighbouring\npoints can be triangulated except at missing values and depth jumps. With\nthe shortcut \"t\", triangulation can be toggled. Since raw points render\nslightly faster the parameter \"cloud_display_type\" controls whether \ntriangulation is computed at all - at the time the cloud is received.\nThe parameter \"gl_point_size\" may be useful to most users.\n\n\n## Usage without GUI ##############################################################\n\nThe RosUI is an alternative to the Grapical_UI to run the rgbdslam headless,\nfor example on the PR2.  rgbdslam can then be used via service-calls.\nThe possible calls are:\n * /rgbdslam/ros_ui   {reset,  quick_save,  send_all,  delete_frame,  optimize,  reload_config, save_trajectory}\n * /rgbdslam/ros_ui_b {pause, record} {true, false}\n * /rgbdslam/ros_ui_f {set_max} {float}\n * /rgbdslam/ros_ui_s {save_octomap,  save_cloud,  save_g2o_graph,  save_trajectory,  save_features,  save_individual} {filename}\n\nTo start the rgbdslam headless use the headless.launch: \n$ roslaunch rgbdslam headless.launch\n\nCapture single frames via: \n$ rosservice call /rgbdslam/ros_ui frame\n\nCapture a stream of data: \n$ rosservice call /rgbdslam/ros_ui_b pause false\n\nSend point clouds with computed transformations (e.g., to rviz or octomap_server): \n$ rosservice call /rgbdslam/ros_ui send_all\n\nSave data using one of the following:\n\nAll pointclouds in one file quicksave.pcd in rgbdslam/bin-directory: \n$ rosservice call /rgbdslam/ros_ui_s save_cloud\n\nEvery pointcloud in its own file in rgbdslam/bin-directory: \n$ rosservice call /rgbdslam/ros_ui save_individual\n\n/rgbdslam/ros_ui: \n\t\n * reset\t''resets the graph, delets all nodes (refreshes only when capturing new images)''\n * frame\t''capture one frame from the sensor''\n * optimize\t''trigger graph optimizer''\n * reload_config\t''reloads the paramters from the ROS paramter server''\n * quick_save ''saves all pointclouds in one file quicksave.pcd in rgbdslam/bin-directory''\n * send_all\t''sends all pointclouds to /rgbdslam/transformed_cloud (can be visualized with rviz)''\n * delete_frame\t''delete the last frame from the graph (refreshes only when capturing new images)''\n\t\n/rgbdslam/ros_ui_b: \n\n * pause \u003cflag\u003e\t''pauses or resumes the capturing of images'' \n * record \u003cflag\u003e  ''pauses or stops the recording of bag-files, can be found in the rgbdslam/bin-directory''\n\t\n/rgbdslam/ros_ui_f: \n\n * set_max \u003cfloat\u003e\t''filters out all datapoints further away than this value (in cm, only for saving to files)''\n\n/rgbdslam/ros_ui_s: \n\n * save_features \u003cfilname\u003e ''saves the feature locations and descriptors in a yaml file with the given filename''\n * save_cloud\t\u003cfilename\u003e ''saves the cloud to the given filename (should end with .ply or .pcd)''\n * save_individual \u003cfileprefix\u003e\t''saves every scan in its own file (appending a suffix to the given prefix)''\n * save_octomap\t\u003cfilename\u003e ''saves the cloud to the given filename''\n * save_trajectory\t\u003cfileprefix\u003e ''saves the sensor trajectory to the file \u003cfileprefix\u003e_estimate.txt''\n\n\n\n# Further Help ##################################################################\nThe compilation may take a lot of memory, particularly if the environment variable\n$ROS_PARALLEL_JOBS is set.\n\nIf you are located in Germany and get errors loading the saved ply files\ninto meshlab, try switching to U.S. locale or replace the decimal point with a\ncomma in your .ply file \n\nIf you have questions regarding installation or usage of RGBDSLAM please refer\nto http://answers.ros.org/questions/?tags=RGBDSLAM For further questions,\nsuggestions, corrections of this README or to submit patches, please contact\nFelix Endres (endres@informatik.uni-freiburg.de).\n\nApart from this manual, code documentation can be created using rosdoc\n(\"rosrun rosdoc rosdoc rgbdslam\"), which will create a \"doc\" folder in your\ncurrent directory.\n\n\n\n## GICP and SIFTGPU ###############################################################\n\nIf there are problems related to the compilation or linking of GICP or SIFTGPU,\nyou can deactivate these features at the top of CMakeLists.txt. You might get\neven faster GPU features setting the parameter \"siftgpu_with_cuda\" but you will\nneed to install the proprietary CUDA drivers that may require a NVidia GPU \n(see http://www.nvidia.com/object/cuda_gpus.html).  For installing the\ndevelopment drivers and the CUDA SDK you can use the following tutorial:\nhttp://sublimated.wordpress.com/2011/03/25/installing-cuda-4-0-rc-on-ubuntu-10-10-64-bit/\nor for ubuntu 10.04: http://ubuntuforums.org/showthread.php?t=1625433 (tested\non Ubuntu 10.04 x64) To use SiftGPU you should install \"libdevil-dev\".\n  \n  Additional compiling information can be changed in\n  external/siftgpu/linux/makefile.\n  \n  If you get an error that the siftgpu library is not found, execute \"make\" manually\n  in the directory external/siftgpu/ and rerun catkin_make.\n\n  GICP Generalized ICP can be (de)activated for refining the registration. For\n  more information see http://stanford.edu/~avsegal/generalized_icp.html\n\n\n\n# License Information ############################################################\n\nThis software is distributed in the hope that it will be useful, but WITHOUT\nANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\nFOR A PARTICULAR PURPOSE.\n\nRGBDSLAM is licenced under GPL v.3. See the accompanying file \"COPYING\".\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelixendres%2Frgbdslam_v2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffelixendres%2Frgbdslam_v2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffelixendres%2Frgbdslam_v2/lists"}