Code Monkey home page Code Monkey logo

ground_aware_cartographer's Introduction

Ground Aware Cartographer Project

1. Introduction

This is a ground aware version of cartographer(3D) project!

In this project, ground points are detected and used to construct ground-alignment constraints, which help to get better roll&pitch estimate.
To be more specific, an efficient online ground segmentation method is adopted to detect ground points for each scan, and a local map of ground points is maintained with ikd-Tree (中文解析) structure. During the correlative scan match, a scan-to-submap alignment is first conducted to adjust x, y, z and yaw, then a scan-to-local map manner ground plane alignment is conducted to optimize roll and pitch.

The performance of ground_aware_cartographer has been verified, the gif below shows the result of a 200*100 square meters dataset.
all test video

It is important to realize that taking ground constraint into consideration do help to reduce Z drift! See the picture below: the original Google cartographer suffers from severe z drift when passing through a valley-like area, while ground_aware_cartographer does not have that problem.
compare

Picture below shows how local map works in low playback speed: it only contain ground pionts of nearby key frames, and always move with robot. With the help of ikd-Tree, maintaining such a local map is not expensive at all.
ikdtree local map

2. Dependencies

Please follow the official guidelines (Compiling Cartographer ROS) to install dependencies, since this project was developed totally based on the official Google Cartographer project.
Note That this project was developed and tested on ubuntu 16.04 only, so you are highly recommended to use the same ubuntu distribution.

3. Compile & Run

Compile

Compared with original Google cartographer, compiling ground_aware_cartographer is a little bit different. The source code of cartographer has not been released in this repository, so you need to tell cmake to use pre-compiled cartographer package by appending "-DUSE_THIRDPARTY_CARTOGRAPHER=true".

catkin_make_isolated --install --use-ninja -DUSE_THIRDPARTY_CARTOGRAPHER=true 

Run

Before running the roslaunch command below, you should configure wgh_demo_backpack_3d.launch by yourself.

roslaunch cartographer_ros wgh_demo_backpack_3d.launch  

4. Availiable Datasets

The ground detection algorithm requires lidar elevation angle info and static transform info, however I haven't provided a way to configure these info yet, so currently ground_aware_cartographer cannot work with any public datasets.
To successfully run ground_aware_cartographer, you may have to used this home-made dataset: 2022-03-31-04-GateRoadDync.bag. Note that this dataset is just a simple sample to run ground_aware_cartographer, while it cannot fully show the performance and advantage of ground_aware_cartographer.

5. TODO

  • Support public datasets.

ground_aware_cartographer's People

Contributors

alireza-hosseini avatar bochen87 avatar damienrg avatar damonkohler avatar drigz avatar fprott avatar gaschler avatar jihoonl avatar macmason avatar mgladkova avatar michaelgrupp avatar mikaelarguedas avatar mohamedsayed18 avatar ojura avatar pifon2a avatar redkite avatar rohbotics avatar rsmallegoor avatar schwoere avatar sebastianklose avatar sirver avatar skohlbr avatar spielawa avatar stribor14 avatar tfoote avatar thiagodefreitas avatar wohe avatar yutakaoka avatar zhenzhenxiang avatar zjwoody 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.