Git Product home page Git Product logo

robond-mapmyworld's Introduction

RGB-D based SLAM via RTAB-Map

This project is about performing SLAM using RGB-D based Real-Time Appearance-Based Mapping via the RTAB-Map algorithm. It utilizes ROS' rtabmap and rtabmap_ros packages and is developed against ROS Kinetic.

To build the project, you can try executing ./run-nvidia.sh to drop into an X11 aware Docker container with NVIDIA GPU support.


The following three pictures show the simulation environment and SLAM results of the RTAB-Map node, as well as the map generated by it. For more information about RTAB-Map, see also the offical website.

The simulated environment:

The Gazebo environment

Nodes of the graph generated by RTAB-Map (after 111 rounds of global loop closure):

The RTAB-Map graph

The occupancy grid generated by RTAB-Map:

The RTAB-Map map

Environment and Robot Control

To run, execute:

roslaunch map_my_world world.launch

We can use keyboard teleop to control the bot manually:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

SLAM

To perform mapping (thereby deleting any already existing map) we can run

roslaunch map_my_world mapping.launch

This will create or overwrite the database file in ~/.ros/rtabmap.db.

If a map already exists, we can also choose to enter localization mode by running

roslaunch map_my_world localization.launch

To obtain an instance of the required rtabmap.db (usually in ~/.ros/rtabmap.db; see the localization.launch file for different paths), see the 0.0.0 release. This file was generated during the development of this project.

To inspect the created map, run

rtabmap-databaseViewer ~/.ros/rtabmap.db

Papers

Distributed as an open source library since 2013, RTAB-Map started as an appearance- based loop closure detection approach with memory management to deal with large-scale and long-term online operation. It then grew to implement Simultaneous Localization and Mapping (SLAM) on various robots and mobile platforms. As each application brings its own set of contraints on sensors, processing capabilities and locomotion, it raises the question of which SLAM approach is the most appropriate to use in terms of cost, accuracy, computation power and ease of integration. Since most of SLAM approaches are either visual or lidar-based, comparison is difficult. Therefore, we decided to extend RTAB-Map to support both visual and lidar SLAM, providing in one package a tool allowing users to implement and compare a variety of 3D and 2D solutions for a wide range of applications with different robots and sensors. This paper presents this extended version of RTAB-Map and its use in comparing, both quantitatively and qualitatively, a large selection of popular real-world datasets (e.g., KITTI, EuRoC, TUM RGB-D, MIT Stata Center on PR2 robot), outlining strengths and limitations of visual and lidar SLAM configurations from a practical perspective for autonomous navigation applications.

Building with CLion IDE

Note: This does not really work, as CLion will be unable to find generated headers. It's still a bit better than doing everything the hard way.

The full requirements for setting up CLion are given in the sunsided/robond-ros-docker repository. In short, run SSHD in Docker, configure a Remote Host build to connect to it, then configure the your build settings for ROS. For this repo and the included Dockerfile, this configuration will do:

CMake options:

-DCATKIN_DEVEL_PREFIX:PATH=/workspace/devel -DCMAKE_PREFIX_PATH=/workspace/devel;/opt/ros/kinetic;/opt/ros/kinetic/share

Environment:

ROS_ROOT=/opt/ros/kinetic/share/ros;ROS_PACKAGE_PATH=/workspace/src:/opt/ros/kinetic/share;ROS_MASTER_URI=http://localhost:11311;ROS_PYTHON_VERSION=2;ROS_VERSION=1;ROSLISP_PACKAGE_DIRECTORIES=/workspace/devel/share/common-lisp;ROS_DISTRO=kinetic;ROS_ETC_DIR=/opt/ros/kinetic/etc/ros;PYTHONPATH=/opt/ros/kinetic/lib/python2.7/dist-packages;PKG_CONFIG_PATH=/workspace/devel/lib/pkgconfig:/opt/ros/kinetic/lib/pkgconfig:/opt/ros/kinetic/lib/x86_64-linux-gnu/pkgconfig;LD_LIBRARY_PATH=/workspace/devel/lib:/opt/ros/kinetic/lib:/opt/ros/kinetic/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH;PATH=/opt/ros/kinetic/bin:$PATH

robond-mapmyworld's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

robond-mapmyworld's Issues

ROS topic is not possible to recieve to rtabmap

Hello sir.

I really love your work. thank you so much to share your project.

I am succeeded to build your project

but your gazebo world publishes this topic..

/camera/depth/camera_info
/camera/depth/image_raw
/camera/depth/points
/camera/parameter_descriptions
/camera/parameter_updates
/camera/rgb/camera_info
/camera/rgb/image_raw
/camera/rgb/image_raw/compressed
/camera/rgb/image_raw/compressed/parameter_descriptions
/camera/rgb/image_raw/compressed/parameter_updates
/camera/rgb/image_raw/compressedDepth
/camera/rgb/image_raw/compressedDepth/parameter_descriptions
/camera/rgb/image_raw/compressedDepth/parameter_updates
/camera/rgb/image_raw/theora
/camera/rgb/image_raw/theora/parameter_descriptions
/camera/rgb/image_raw/theora/parameter_updates
/clicked_point
/clock
/cmd_vel
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/initialpose
/joint_states
/map
/map_updates
/move_base_simple/goal
/odom
/rosout
/rosout_agg
/scan
/statistics
/tf
/tf_static

But when I did run launch file.

roslaunch map_my_world mapping.launch

rtabmap wanna subscribe

/odom
/camera/rgb/image_raw/compressed
/camera/depth/image_raw/compressedDepth
/camera/rgb/camera_info
/scan

I don't know where should I change this compress ...

but gazebo doesn't publish about this topics so my project doesn't work.

could you tell me how can I connect with gazebo<->rtabmap for mapping?

here is screen capture from terminal.

Screenshot from 2022-02-11 14-45-25

Thank you so much

I will wait your answer

I wanna know that how can I change the subscribe topic name just 'raw' data

Or

change the publish gazebo setup

best regards

RGB-D + LiDAR SLAM

Hello sir

I checked your launch file,

it looks like you only use the rgb-d camera for SLAM

Am I right?

if it is true, then did you try to perform RGB-D + LiDAR SLAM for rtabmap?

best regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.