zhangkunyi / DIDO

Project page of 《DIDO:Deep Inertial Quadrotor Dynamical Odometry》
46 stars 6 forks source link

DIDO:Deep Inertial Quadrotor Dynamical Odometry

Dataset

​ (1)time ts

​ (2)Ground truth value of IMU frame in the gravity frame:acceleration gt_acc,position gt_p,linear velocity gt_v,attitude gt_q (in w,x,y,z form)

​ (3)Ground truth value of IMU frame in the IMU frame:angular velocity gt_gyr

​ (4)IMU measurements:acceleration acc,angular velocity gyr

NOTE: The content in the existed train.txt, val.txt and test.txt are just examples. You can choose your own training, validation and testing data.

De_bias_acc

The neural network to reduce bias of the accelerator measurments

Execute De_bias_acc_main.py for training


cd De_bias_acc/src
python3 De_bias_acc_main.py \
--mode train \
--root_dir ../../dataset \
--train_list ../../dataset/train.txt \
--val_list ../../dataset/val.txt \
--out_dir ../train_outputs

Execute De_bias_acc_main.py for testing

cd De_bias_acc/src
python3 De_bias_acc_main.py \
--mode test \
--root_dir ../../dataset \
--test_list ../../dataset/test.txt \
--model_path ../train_outputs/checkpoints/checkpoint_*.pt \
--out_dir ../test_outputs

De_bias_gyr

The neural network to reduce bias of the gyroscope measurments

Execute the De_bias_gyr_main.py for training

cd De_bias_gyr/src
python3 De_bias_gyr_main.py \
--mode train \
--root_dir ../../dataset \
--train_list ../../dataset/train.txt \
--val_list ../../dataset/val.txt \
--out_dir ../train_outputs

Rotation_ekf

First, using the De_bias_net to estimate the acceleration and angular velocity.

cd Rotation_ekf/src
python3 generate_net_acc_net_gyr.py \
--root_dir ../../dataset \
--network_acc_path ../../De_bias_acc/train_outputs/checkpoints/checkpoint_*.pt \
--network_gyr_path ../../De_bias_gyr/train_outputs/checkpoints/checkpoint_*.pt \
--test_list ../../dataset/gen_list.txt \
--out_dir ../output

NOTE: The produced acceleration and angular velocity will be saved in directory “../output/net_acc” and “../output/net_gyr

Second, obtain the attitude after gravity alignment update.

cd Rotation_ekf/src
python3 Rotation_stage.py \
--root_dir ../../dataset \
--network_acc_out_path ../output/net_acc/ \
--network_gyr_out_path ../output/net_gyr/ \
--test_list ../../dataset/test.txt \
--out_dir ../output

NOTE: There are some results in the output directory

V_P_net

The attitude estimated from rotation_ekf is used in validation and testing

1、Training

# training x axis
cd V_P_net/src
python3 V_P_net_main.py \
--mode train \
--root_dir ../../dataset \
--train_list ../../dataset/train.txt \
--val_list ../../dataset/val.txt \
--out_dir ../train_outputs_x \
--train_axis x_axis
# training y axis
cd V_P_net/src
python3 V_P_net_main.py \
--mode train \
--root_dir ../../dataset \
--train_list ../../dataset/train.txt \
--val_list ../../dataset/val.txt \
--out_dir ../train_outputs_y \
--train_axis y_axis
# training z axis
cd V_P_net/src
python3 V_P_net_main.py \
--mode train \
--root_dir ../../dataset \
--train_list ../../dataset/train.txt \
--val_list ../../dataset/val.txt \
--out_dir ../train_outputs_z \
--train_axis z_axis

2、Testing

cd V_P_net/src
python3 V_P_net_main.py \
--mode test \
--root_dir ../../dataset \
--test_list ../../dataset/train.txt \
--out_dir ../test_outputs \
--x_model ../train_outputs_x/checkpoints/checkpoint_*.pt \
--y_model ../train_outputs_y/checkpoints/checkpoint_*.pt \
--z_model ../train_outputs_z/checkpoints/checkpoint_*.pt

NOTE: There are some results in the output directory

Res_dynamic

Training


cd Res_dynamic/src
python3 Res_dynamic_main.py \
--mode train \
--root_dir ../../dataset \
--train_list ../../dataset/train.txt \
--val_list ../../dataset/val.txt \
--out_dir ../train_outputs

Translation_ekf

cd Translation_ekf/src
python3 Translation_stage.py \
--root_dir ../../dataset \
--test_list ../../dataset/test.txt \
--out_dir ../output \
--network_dyn_path ../../Res_dynamic/train_outputs/checkpoints/checkpoint_*.pt \
--network_v_p_path ../../V_P_net/src/test_outputs/vp/ \
--network_acc_path ../../Rotation_ekf/output/net_acc/ \
--network_gyr_path ../../Rotation_ekf/output/net_gyr/ \
--network_q_path ../../Rotation_ekf/output/ekf_q/ \