Giter Club home page Giter Club logo

dddmr_lego_loam_bor's Introduction

DDDMR LeGO LOAM BOR

This repo is based on the LeGO-LOAM-BOR , and has been modified for ground vehicles. We did not fork the repo due to significant modifications, variant features and frameworks are implemented.

The original authors deserve all the credits, we just stand on the shoulders of giants.

The following features are provided and are different from original version:

  • ROS2 version (Humble) of LeGO LOAM BOR, support online and offline(bag) mapping, IMU/Odometry is optional.
  • Pose graph visualization.
  • Conditional loop closure mechanism for a more stable mapping result.
  • The result is saved as a pose graph, users can leverage our pose graph editor to modify the result ex: manual loop closure.
  • Our pose graph editor allow users to merge two pose graphs.
  • The pose graph can be used in DDDMR MCL localization.

Watch more videos on Youtube of 3D navigation stack -> DDDMobilerobot channel.

RUN The Demo

1. Create docker image

The package runs in the docker, so we need to build the image first. We support both x64 (tested in intel NUC) and arm64 (tested in nvidia jetson jpack6).

cd ~
git clone https://github.com/dddmobilerobot/dddmr_navigation.git
cd ~/dddmr_navigation && git submodule update --init dddmr_docker src/dddmr_lego_loam_bor src/dddmr_rviz_tools
cd ~/dddmr_navigation/dddmr_docker/docker_file && ./build.bash

2. Download bag files

To play SLAM, you will need to download bag file (4.0GB). To play pose graph editor, you will need to download pose graph folder (2.6MB).

cd ~/dddmr_navigation/src/dddmr_lego_loam_bor && ./download_files.bash

3. Run demo

Create a docker container

Note

The following command will create an interactive docker container using the image we built. The we can launch the demo in the container.

cd ~/dddmr_navigation/dddmr_docker && ./run_demo.bash

Play mapping using bag files in docker container

cd ~/dddmr_navigation && source /opt/ros/humble/setup.bash && colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bash
ros2 launch lego_loam_bor lego_loam_bag.launch

Play pose graph editor in docker container

cd ~/dddmr_navigation && source /opt/ros/humble/setup.bash && colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bash
ros2 launch lego_loam_bor pose_graph_editor.launch

Cite LeGO-LOAM

Many thanks to LeGO-LOAM paper:

@inproceedings{legoloam2018,
  title={LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain},
  author={Tixiao Shan and Brendan Englot},
  booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={4758-4765},
  year={2018},
  organization={IEEE}
}

Pose Graph Editor Tutorial

Edit the First Pose Graph

Open a pose graph folder

Select first key frame

Press "shift" and select a pose, the selected key frame will be red

Select second key frame

Select a pose without press any key, the selected key frame will be green

Use ICP to find an edge between the first key frame and the second key frame

The buttons px+, px-, py+, py-, .... are used to fine tune the icp result. When the result is satified, click "Accept", an edge will be added


Edit the Second Pose Graph

Open another pose graph folder

Tick the second radio button so you will be able to work on the second pose graph. All operations will be activated on the second pose graph.


Merge two pose graphs

Switch to merge panel

The Merge ICP button will match the first key frame of each pose graph. i.e.: Merge red key frame of the first pose graph and the red key frame of the second pose graph. After click accept merge, there will be a pop up window to ask thenew directory to save the merged result. Once the result is saved, you can go back to pose graph panel to keep working on the merge result. Steps:

  1. Switch to the first pose graph, and pressed "shift" to select the first key frame of pose graph 1.
  2. Switch to the second pose graph, and pressed "shift" to select the first key frame of pose graph 2.
  3. Tick Merge visualization on the Rviz, then you will see two key frames. You can ICP them and fine tune the result.
  4. Click accpet to save the result.

dddmr_lego_loam_bor's People

Contributors

pstsengb avatar tsengapola avatar

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.