Skip to content

Latest commit

 

History

History
244 lines (182 loc) · 9.28 KB

README.md

File metadata and controls

244 lines (182 loc) · 9.28 KB

Contributors Forks Stargazers Issues MIT License

Robust Cooperative localization simulation

A simulation code for the paper "Robust Cooperative Localization with Failed Communication and Biased Measurements",
published in IEEE Robotics and Automation Letters with a supplemental video that is also in bilibili
View Demo · Report Bug OR Request Feature

Table of Contents
  1. Introduction

Introduction

Cooperative Localization (CL) plays a crucial role in achieving precise localization without relying on localization sensors. However, the performance of CL can be significantly affected by failed communication and biased measurements. This code shows a robust decentralized CL method that addresses these challenges effectively.

Please cite this work when referencing:

@ARTICLE{RobustCL_RAL,
  author={He, Ronghai and Shan, Yunxiao and Huang, Kai},
  journal={IEEE Robotics and Automation Letters}, 
  title={Robust Cooperative Localization With Failed Communication and Biased Measurements}, 
  year={2024},
  volume={9},
  number={3},
  pages={2997-3004}
}

About this paper: there are a few mistakes shown in the Errata part.

Getting Started

  1. Since this is a Python program, you will need Python3. Please Make sure you have it installed.
  2. Simply clone the repo
    git clone https://github.com/RonghaiHe/RobustCL.git
  3. Install the Python libraries that this program depends on through requirements.txt:
    pip install -r requirements.txt

Usage

  • If runinng the program with specific failed communication probability(e.g. 0.5):

    python3 main_fix.py --comm_fail_prob 0.5
  • If runinng the program with multiple failed communication probability simultaneously:

    bash shell_main_fix.sh
  • If runinng the mission(e.g. 1) with multiple failed communication probability simultaneously:

    bash shell_main.sh 1

    Details of missions are:

    0 Draw the sample trajectory, for Response;

    1 ARMSE over time, for Fig. 1 & Fig. 2 in the paper;

    2 weight of M-estimation over time, for Fig. 3 in the paper;

    3 ARMSE over tau, for Fig. 4 in the paper;

    4 animation about ARMSE over time, for videos about the paper;

    5 animation about ARMSE over tau, for videos about the paper

Structure

Repository contains:

  • algorithms, a directory containing all algorithms used et al, off the record temporarilyup to date.
    • BDA.py: "BDA" algorithm in the paper;
    • CI.py: "CI" algorithm in the paper;
    • CU.py: "BDA-CU", "CI+CU" algorithms in the paper;
    • DCL_GS.py: Our proposed method in the paper;
    • DMV.py: "DMV" algorithm in the paper;
    • DR.py: "DR" method in the paper;
    • func_detect_fault.py: multiple functions about detecting the fault measurement;
  • others, a directory containing other calculation in the paper
    • KL_calc.py: calulate the numerical KL-divergence;
    • video_output.py: multiple figures -> video;
  • draw.py: draw the final figures;
  • main_fix.py: main function. Set the fix running parameters here;
  • parameters.py: sets the system parameters;
  • requirements.txt, a file containing all Python libraries needed;
  • shell_main.fix.sh: a shell file to run the program simultaneously;
  • utils.py: execute the whole simulation

Roadmap

  • Whole codes uploaded
  • Formatted with pep8
  • Complete Python project structure

See Changelog.md for the change at each version

Errata

The conclusion of the paper isn't wrong, whereas there are a few mistakes in this paper. Sorry about that and declare here:

  1. In formulas (17) and (20), the dimension of $\boldsymbol{I}$ should be $3N\times 3N$ rather than $N\times N$ (By Chang Liu)
  2. Formula (26) is wrong, $\boldsymbol{S}_ {t+1} \to \boldsymbol{M}_{t+1}$ (By Chang Liu)
  3. (Confusion Part)In the formula (23), the variable $\hat{\boldsymbol{X}}_ {t+1 \mid t}^i$ is shown for explanation. During the iteration, it is replaced by the result after $n$-th iterations. Specifically, we use the latest iteration result, X_all, to calculate the residual item in this code (By Chang Liu)
  4. The serial numbers of references used for comparison in Fig. 1, Fig. 2, Fig. 4 and TABLE II haven't been updated. The right serial numbers can be seen in the last paragraph of section V-A: DMV [13], BDA [12], BDA-CU [4] and CI+CU [17] (By a professor).

Still updating ...

License

Distributed under the MIT License. See LICENSE for more information.

Contact

RonghaiHe - E-mail

Project Link: RobustCL

Acknowledgments

  • All authors of this paper;
  • Readers pointing out errors or improvements about the paper: professors, Chang liu;
  • Inspired by this repository;
  • A recommended template. This README.md is modified from that.