Pole-like Objects Mapping and Long-Term Robot Localization in Dynamic Urban Scenarios

Overview

Long Term Localization

Pole-like Objects Mapping and Long-Term Robot Localization is an algorithm that makes robot or UAV locate itself in Dynamic Urban Scenarios robustly and accurately by correcting the real time Lidar odometry.

avatar

If you use Long Term Localization, please cite:

@misc{2103.13224,
Author = {Zhihao Wang, Silin Li, Ming Cao, Haoyao Chen and Yunhui Liu},
Title = {Pole-like Objects Mapping and Long-Term Robot Localization in Dynamic Urban Scenarios},
Year = {2021},
Eprint = {arXiv:2103.13224},
}

0 Download Self-made Dataset

2020-10-12-demo.bag

https://www.jianguoyun.com/p/DWsN36kQzcSTBxiCn-kD (Access Password:nrsl2021)

2020-11-05-demo.bag

https://www.jianguoyun.com/p/Df4eWSQQzcSTBxiHn-kD (Access Password:nrsl2021)

1 Settings

2 Build

2.1 Install dependencies

Please take a look the README in long-term-localization/src/common folder.

2.2 Build

git clone https://github.com/HITSZ-NRSL/long-term-localization.git
cd long-term-localization/src
git clone https://github.com/lisilin013/third_parities.git

cd ..
# When you build this ws for the first time, it may take a long time, be patient please.
catkin build

3 Run

3.1 Semantic Processing

# terminal 1
roslaunch lio_sam run.launch 

# terminal 2
./sh/record.sh

# terminal 3
rosbag play 2020-10-14-demo.bag --clock 

When the bag run over, shut down the terminal 2 and 3;

Then run below code to extract the semantic

./sh/offline_process.sh

3.2 Mapping

Modify the following code in config file src/long_term_relocalization/config/long_term_relocalization_params.yaml change to localizaion mode.

relocalization:
  mode: localization
# launch mapping nodes.
roslaunch long_term_relocalization mapping.launch

# when you want to save pole cluster map, open another terminal and run the following cmd.
rosrun long_term_relocalization save_cluster_map 

The cluster_map will be saved in "\tmp\clusters_map.bin"

3.3 Localization

  • Notes: The bag to be matched (2020-11-13-demo.bag) need to run the process in 3.1 Semantic Processing to extract the semantic cluster, and then used for matching and localization.

3.3.1 Semantic Processing

# terminal 1
roslaunch lio_sam run.launch 

# terminal 2
./sh/record.sh

# terminal 3
rosbag play 2020-11-13-demo.bag --clock 

When the bag run over, shut down the terminal 2 and 3;

Then run below code to extract the semantic.

./sh/offline_process.sh

3.3.2 Localization

Modify the following code in config file src/long_term_relocalization/config/long_term_relocalization_params.yaml change to relocalization mode.

relocalization:
  mode: relocalization
# copy pole cluster map to folder "src/long_term_relocalization/maps".
cp src/long_term_relocalization/maps/clusters_map.bin /tmp/

# launch relocalization nodes.
roslaunch long_term_relocalization relocalization.launch

Then play the processed bag to match with "clusters_map.bin".

cd ~/offline_process/sequences/00
rosbag play semantic.bag --clock   
Issues
  • No such file:

    No such file: "arch_cfg.yaml"

    Hello @lisilin013.

    Thanks for your outstanding work. I have successfully built this project and run the first step. But when I try to run ./sh/offline_process.sh it would have the error:

    [Errno 2] No such file or directory: '../../../model/trunk_pole/arch_cfg.yaml'
    

    Would you like to provide that file? Thanks a lot.

    opened by yutouwd 4
  • Bag Unindexed Exception

    Bag Unindexed Exception

    Hello,

    When running the offline_process.sh and after getting the label, it seems still has some error on writing the semantic topic into the rosbag. The command line output is as followed:

    Infered seq 00 scan 000230.label in 5.8387532234191895 sec
    /home/yutouwd/logs/sequences/00/predictions/000230.label
    Infered seq 00 scan 000231.label in 5.711495637893677 sec
    /home/yutouwd/logs/sequences/00/predictions/000231.label
    Finished Infering
    copy predictions to labels...
    write semantic cloud and pose to rosbag...
    terminate called after throwing an instance of 'rosbag::BagUnindexedException'
      what():  Bag unindexed
    ./sh/offline_process.sh: line 21: 29778 Aborted                 (core dumped) rosrun long_term_relocalization semantic_bag_writer_main --dataset_dir ~/offline_process/sequences/00/
    offline process done
    

    Could you please give some suggestions to fix it?

    opened by yutouwd 2
Owner
Networked Robotics and Sytems Lab
Networked Robotics and Sytems Lab
Free open-source modern C++17 / C++20 framework to create console, forms (GUI like WinForms) and unit test applications on Microsoft Windows, Apple macOS and Linux.

xtd Modern C++17/20 framework to create console (CLI), forms (GUI like WinForms) and tunit (unit tests like Microsoft Unit Testing Framework) applicat

Gammasoft 292 May 14, 2022
crypted admin shell: SSH-like strong crypto remote admin shell for Linux, BSD, Android, Solaris and OSX

crypted admin shell: SSH-like strong crypto remote admin shell for Linux, BSD, Android, Solaris and OSX

Sebastian 129 May 11, 2022
Rizin - UNIX-like reverse engineering framework and command-line toolset.

Rizin - UNIX-like reverse engineering framework and command-line toolset.

Rizin Organization 1.4k May 12, 2022
Fegeya Freud, CLI FPaper renderer, based on Totem (`less`-like tool without `--help`)

Fegeya Freud, CLI FPaper renderer, based on Totem (`less`-like tool without `--help`)

Ferhat Geçdoğan 3 Jun 11, 2021
Simple Unix Terminal Football Manager-like game.

Superleage 2020/2021 It is a "work in progress" simple game based on some mechanics of Football Manager. The game is in a very early stage of Developm

sewe2000 2 Oct 14, 2021
CuteCom is a graphical serial terminal, like minicom

CuteCom is a graphical serial terminal, like minicom. Currently it runs on Linux (tested) and should run on FreeBSD, Mac OS X and maybe other systems as well (untested).

欧阳锦洪 1 Nov 10, 2021
This C program imitates what an 'ls' command does in UNIX like operating systems.

This C program imitates what an 'ls' command does in UNIX like operating systems. Arguments can be passed to the program to modify and filter the results from the command

Yusuf Ghodiwala 1 Nov 22, 2021
CLI to play a word-guessing game like Wordle

Lexeme What is this? Python program to play a word-guessing game like Wordle, but… More addictive because you can play it over and over and over, not

Dan Lenski 6 Feb 7, 2022
A small self-contained alternative to readline and libedit that supports UTF-8 and Windows and is BSD licensed.

Linenoise Next Generation A small, portable GNU readline replacement for Linux, Windows and MacOS which is capable of handling UTF-8 characters. Unlik

ArangoDB 334 May 3, 2022
A readline and libedit replacement that supports UTF-8, syntax highlighting, hints and Windows and is BSD licensed.

Read Evaluate Print Loop ++ A small, portable GNU readline replacement for Linux, Windows and MacOS which is capable of handling UTF-8 characters. Unl

Marcin Konarski 570 May 7, 2022
A simple header-only C++ argument parser library. Supposed to be flexible and powerful, and attempts to be compatible with the functionality of the Python standard argparse library (though not necessarily the API).

args Note that this library is essentially in maintenance mode. I haven't had the time to work on it or give it the love that it deserves. I'm not add

Taylor C. Richberger 963 May 2, 2022
CLI11 is a command line parser for C++11 and beyond that provides a rich feature set with a simple and intuitive interface.

CLI11: Command line parser for C++11 What's new • Documentation • API Reference CLI11 is a command line parser for C++11 and beyond that provides a ri

null 2.1k May 10, 2022
A (relatively) small node library to clone and pull git repositories in a standalone manner thanks to libgit2, powered by WebAssembly and Emscripten

simple-git-wasm A (relatively) small node library to clone and pull git repositories in a standalone manner thanks to libgit2, powered by WebAssembly

Powercord 19 Mar 28, 2022
A simple header-only C++ argument parser library. Supposed to be flexible and powerful, and attempts to be compatible with the functionality of the Python standard argparse library (though not necessarily the API).

args Note that this library is essentially in maintenance mode. I haven't had the time to work on it or give it the love that it deserves. I'm not add

Taylor C. Richberger 896 Aug 31, 2021
Yori is a CMD replacement shell that supports backquotes, job control, and improves tab completion, file matching, aliases, command history, and more.

Yori is a CMD replacement shell that supports backquotes, job control, and improves tab completion, file matching, aliases, command history, and more.

Malcolm Smith 1k May 8, 2022
Flexible and fast Z-shell plugin manager that will allow installing everything from GitHub and other sites.

ZINIT News Zinit Wiki Quick Start Install Automatic Installation (Recommended) Manual Installation Usage Introduction Plugins and snippets Upgrade Zin

z-shell 25 Apr 18, 2022
2021 Fall Comp2012h Final Project. A Plant-Vs-Zombie style desktop game with beautiful graphics and sound effects. Developer: thomas914, mitester and tiliuau.

Underperforming Students vs Teachers Table of Contents Underperforming Students vs Teachers Table of Contents Authors Code Conventions Workflow Class

null 3 Apr 14, 2022
Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers.

What is it? Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers. The Java version is

Google 13.8k May 13, 2022
A CLI program that helps you find classes and plan pre-requisites. Written in C++ and Python.

CourseHelper A CLI program created to help you prepare for course registration. Note: At the moment, this project is built specifically for other UCLA

Kyle Chui 1 Jan 25, 2022