Code for "Propeller Damage Detection: Adapting Models to Diverse UAV Sizes" Submitted to IEEE Robotics and Automation Letters.
This study introduces a methodology to train a model for detecting propeller damage in unmanned aerial vehicles (UAVs), and demonstrates how this model can be modified for use in various UAV sizes through a novel domain adaptation method anchored in the vehicles' physics. The damage detection model is trained by simulating propeller failure, specifically by chipping away the tip of a propeller. A key feature is that the detection model leverages only inertial sensors that are standard in commercial UAVs, making it broadly applicable without the need for additional hardware.
https://www.youtube.com/watch?v=i1G_ICewvB0
-
Clone this repository.
-
Install Python3 dependencies,
matplotlib
,numpy
,pytorch
,scikit-learn
,scipy
,seaborn
,torch
,lightning
,tqdm
-
Run
model_train.py
with the following configuration for each experiment:
Use the quadcarbono_datamodule
inside model_train.py
data_module = quadcarbono_datamodule
Use the affine_datamodule
inside model_train.py
affine_datamodule = affine_DataModule(
source_path="data/garage_manual/",
target_path="data/quadcarbono/",
source_fs=222,
target_fs=222,
)
data_module = affine_datamodule
For the naive use no scaling, set self.scale_factor = 1.0
inside affine.py
For the scaled experiment, set self.scale_factor = 0.734
inside affine.py
For this experiment use the data in quadcarbono_weight_shift
as test instead of Hasymm164_inertial
Use the affine_datamodule
inside model_train.py
affine_datamodule = affine_DataModule(
source_path="data/quadcarbono/",
target_path="data/quadcarbono_1000/",
source_fs=222,
target_fs=222,
)
data_module = affine_datamodule
For the naive use no scaling, set self.scale_factor = 1.0
inside affine.py
For the scaled experiment, set self.scale_factor = 1.12
inside affine.py
For this experiment use quadcarbono_water
as test
affine_datamodule = affine_DataModule(
source_path="data/quadcarbono/",
target_path="data/hexaF550/",
source_fs=222,
target_fs=222,
)
data_module = affine_datamodule