Skip to content

code for the paper "Robust Cooperative Localization with Failed Communication and Biased Measurements"

License

Notifications You must be signed in to change notification settings

RonghaiHe/RobustCL

Repository files navigation

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.

About

code for the paper "Robust Cooperative Localization with Failed Communication and Biased Measurements"

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published