/Event-Triggered-Diffusion-Kalman-Filters

Localization using event-triggered diffusion kalman filter based on UWB realdata

Primary LanguageMATLAB

Event-Triggered-Diffusion-Kalman-Filters

The presentation of the our paper at ICCPS - CPS week 2020 can be found at the following video.
Presentation

The next video is for localizing a Quadrotor in 9x10m lab while saving the resources by using an event-triggered algorithm. The data and the code structure can be used for testing other estimation and localization algorithms.The used algorithm is Event-Triggered Diffusion Kalman Filter. The blue rectangular is the Quadrotor real position using the Motion Capture system which is used to get the ground-truth location of the Quadrotor. The red plus is the estimated position of the Quadrotor. The ellipses are based on the diffusion error covariance matrix. The complete experimental setup is shown in our paper (arxiv).

Localization

To regenerate the video, follow these steps:
1- run the main file "run_event_DEKF.m" which runs based on the real data at log ped01 in the logs folder
3- To save the movie, set
SAVEMOVIE = true; at to save the generated movie under the video folder.
4- This generates mat file (temp by default) under the cache folder.
5- run "plot_snapshot.m" to plot event-triggered localization results. This plots a figure close to the following figure Subject Pronouns

5- If you run "run_event_DEKF.m" for many thresholds and would like to get a figure showing the statiscs in Figure 7 and 8 in our paper, run Generate_reports.m over the the chosen thresholds then run statisticsAll.m.


To run the data set using traditional centralized Extended Kalman filter run "run_EKF.m" then run "plot_EKF.m"

The class folder has the following main classes
1- DataParserROS.m: parses the log files.
2- Measurement.m: each measurement in the log file would make an object of this class
3- Node.m: every node would make an object of this class
4- NetworkManager.m: distributes the measurements and the estimates between nodes

Under the logs folder, you can find one folder for each scenario. For example, "ped01 " contains:
1- mocap.cvs: The ground truth location of a flying quadrotor
2- ntbtiming.cvs: The timing frames sent between the nodes to calculate the relative distances.

Our paper (arxiv) BibTex:

@INPROCEEDINGS{9095983,  
author={A. {Alanwar} and H. {Said} and A. {Mehta} and M. {Althoff}},  
booktitle={2020 ACM/IEEE 11th International Conference on Cyber-Physical Systems (ICCPS)},   
title={Event-Triggered Diffusion Kalman Filters},   
year={2020},  
volume={},  
number={},  
pages={206-215},}

The early version of this code was in the following work in collaboration with Dr. Paul Martin.

@inproceedings{alanwar2017d,
  title={D-slats: Distributed simultaneous localization and time synchronization},
  author={Alanwar, Amr and Ferraz, Henrique and Hsieh, Kevin and Thazhath, Rohit and Martin, Paul and Hespanha, Joao and Srivastava, Mani},
  booktitle={Proceedings of the 18th ACM International Symposium on Mobile Ad Hoc Networking and Computing},
  pages={14},
  year={2017},
  organization={ACM}
}