IMU-Based 6-DOF Odometry
By João Paulo Lima, Hideaki Uchiyama, Rin-ichiro Taniguchi.
This repository contains the code for the paper "End-to-End Learning Framework for IMU-Based 6-DOF Odometry". You can find a demonstration video here.
Prerequisites
- Python 3
- TensorFlow
- Keras
- NumPy
- Matplotlib
- scikit-learn
- Pandas
- SciPy
- numpy-quaternion
- tfquaternion
Training
We provide training code that can use OxIOD or EuRoC MAV datasets.
- Download the desired dataset and unzip it into the project folder (the path should be
"<project folder>/Oxford Inertial Odometry Dataset/handheld/data<id>/"
for OxIOD and"<project folder>/<sequence name>/mav0/"
for EuRoC MAV) - Run
python train.py dataset output
, wheredataset
is eitheroxiod
oreuroc
andoutput
is the model output name (output.hdf5
).
Pretrained models
Pretrained models can be downloaded here:
Testing
We provide code for trajectory prediction and visual comparison with ground truth trajectories from OxIOD or EuRoC MAV datasets.
- Download the desired dataset and unzip it into the project folder (the path should be
"<project folder>/Oxford Inertial Odometry Dataset/handheld/data<id>/"
for OxIOD and"<project folder>/<sequence name>/mav0/"
for EuRoC MAV) - Run
python test.py dataset model input gt
, where:
dataset
is eitheroxiod
oreuroc
;model
is the trained model file path (e.g.6dofio_oxiod.hdf5
);input
is the input sequence path (e.g."Oxford Inertial Odometry Dataset/handheld/data4/syn/imu1.csv"
for OxIOD,"MH_02_easy/mav0/imu0/data.csv\"
for EuRoC MAV);gt
is the ground truth path (e.g."Oxford Inertial Odometry Dataset/handheld/data4/syn/vi1.csv"
for OxIOD,"MH_02_easy/mav0/state_groundtruth_estimate0/data.csv"
for EuRoC MAV).
Evaluation
We provide code for computing trajectory RMSE for testing sequences from OxIOD or EuRoC MAV datasets.
- Download the desired dataset and unzip it into the project folder (the path should be
"<project folder>/Oxford Inertial Odometry Dataset/handheld/data<id>/"
for OxIOD and"<project folder>/<sequence name>/mav0/"
for EuRoC MAV) - Run
python evaluate.py dataset model
, wheredataset
is eitheroxiod
oreuroc
andmodel
is the trained model file path (e.g.6dofio_oxiod.hdf5
).
Citation
If you use this method in your research, please cite:
@article{lima2019end,
title={End-to-End Learning Framework for IMU-Based 6-DOF Odometry},
author={Silva do Monte Lima, Jo{\~a}o Paulo and Uchiyama, Hideaki and Taniguchi, Rin-ichiro},
journal={Sensors},
volume={19},
number={17},
pages={3777},
year={2019},
publisher={Multidisciplinary Digital Publishing Institute}
}
License
BSD