Skip to content

kmazrolina/fokz_nav

 
 

Repository files navigation

FOKZ Navigation (Backend Server)

Inertial Navigation System

This system uses RoNIN model to predict trajectory based on accelerometer and gyroscope data.

Current system can be intergated with our FOKZ Nav Mobile Application for Inertial Navigation. Our application uses Android raw accelerometer and gyroscope signals paired with rotation to map local (phone based) frame into global navigation frame.

The server takes 200Hz imu data and start position and returns new estimated position.

Quick start

pip install -r requirements.txt
python app.py # runs flask server with model inference

#in separate terminal
python client.py # this will make test prediction on the app server using ronin neural model

RoNIN: Robust Neural Inertial Navigation in the Wild

FOKZ Nav uses RoNIN model for inertial navigation based on accelerometer and gyroscope data.

The RoNIN model was trained on data collected using Google Tango device which is specifically designed for inertial navigation. Therefore in Android only setup a decreased performance can be observed.

alt text

Instructions on how to use the model are listed below (copied from original RoNIN repository) Paper: ICRA 2020, arXiv
Website: http://ronin.cs.sfu.ca/
Demo: https://youtu.be/JkL3O9jFYrE


Requirements

python3, numpy, scipy, pandas, h5py, numpy-quaternion, matplotlib, torch, torchvision, tensorboardX, numba, plyfile, tqdm, scikit-learn

Data

The dataset used by this project is collected using an App for Google Tango Device and an App for any Android Device, and pre_processed to the data format specified here Please refer to our paper for more details on data collection.

You can download the RoNIN dataset from our project website or HERE. Unfortunately, due to security concerns we were unable to publish 50% of our dataset.

Optionally, you can write a custom dataloader (E.g: soure/data_ridi.py) to load a different dataset.

Usage:

  1. Clone the repository.
  2. (Optional) Download the dataset and the pre-trained models1 from HERE.

To train/test RoNIN ResNet model: * run source/ronin_resnet.py with mode argument. Please refer to the source code for the full list of command line arguments. * Example training command: python ronin_resnet.py --mode train --train_list <path-to-train-list> --root_dir <path-to-dataset-folder> --out_dir <path-to-output-folder>. * Example testing command: python ronin_resnet.py --mode test --test_list <path-to-train-list> --root_dir <path-to-dataset-folder> --out_dir <path-to-output-folder> --model_path <path-to-model-checkpoint>.

Citation

Please cite the following paper is you use the code, paper or data:
Herath, S., Yan, H. and Furukawa, Y., 2020, May. RoNIN: Robust Neural Inertial Navigation in the Wild: Benchmark, Evaluations, & New Methods. In 2020 IEEE International Conference on Robotics and Automation (ICRA) (pp. 3146-3152). IEEE.

About

Inertial Navigation: HackYeah2025 DEFENCE

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%