mirror of
https://gitlab.com/orbital-debris-research/directed-study/report-2.git
synced 2025-06-15 22:46:45 +00:00
report 2 finished
This commit is contained in:
parent
8f318a5586
commit
c05a9b89d2
61
README.md
61
README.md
@ -1,8 +1,4 @@
|
|||||||
---
|
Most up to date version: https://projects.ansonbiggs.com/posts/2022-04-03-machine-learning-directed-study-report-2/
|
||||||
title: "Machine Learning Methods for Orbital Debris Characterization: Report 2"
|
|
||||||
author: Anson Biggs
|
|
||||||
date: 2022-02-14
|
|
||||||
---
|
|
||||||
|
|
||||||
## Gathering Data
|
## Gathering Data
|
||||||
|
|
||||||
@ -19,37 +15,39 @@ is an example of one of the satellites that was used.
|
|||||||
## Data Preparation
|
## Data Preparation
|
||||||
|
|
||||||
The models were processed in Blender, which quickly converted the
|
The models were processed in Blender, which quickly converted the
|
||||||
assemblies to `stl` files, giving 108 unique parts to be processed. Since
|
assemblies to `stl` files, giving 108 unique parts to be processed.
|
||||||
the expected final size of the dataset is expected to be in the
|
Since the expected final size of the dataset is expected to be in the
|
||||||
magnitude of the thousands, an algorithm capable of getting the required
|
magnitude of the thousands, an algorithm capable of getting the required
|
||||||
properties of each part is the only feasible solution. From the analysis
|
properties of each part is the only feasible solution. From the analysis
|
||||||
performed in [Report 1](https://gitlab.com/orbital-debris-research/directed-study/report-1/-/blob/main/README.md),
|
performed in [Report
|
||||||
we know that the essential part of the data is the moments of inertia
|
1](https://gitlab.com/orbital-debris-research/directed-study/report-1/-/blob/main/README.md),
|
||||||
|
we know that the essential debris property is the moments of inertia
|
||||||
which helped narrow down potential algorithms. Unfortunately, this is
|
which helped narrow down potential algorithms. Unfortunately, this is
|
||||||
one of the more complicated things to calculate from a mesh, but thanks
|
one of the more complicated things to calculate from a mesh, but thanks
|
||||||
to a paper from David Eberly in 2002 titled [Polyhedral Mass Properties](https://www.geometrictools.com/Documentation/PolyhedralMassProperties.pdf),
|
to a paper from [@eberlyPolyhedralMassProperties2002] titled [Polyhedral
|
||||||
I could replicate his algorithm in the Julia programming language. The
|
Mass
|
||||||
current implementation of the algorithm calculates a moment of inertia
|
Properties](https://www.geometrictools.com/Documentation/PolyhedralMassProperties.pdf),
|
||||||
tensor, volume, and center of gravity in a few milliseconds per part.
|
his algorithm was able to be implemented in the Julia programming
|
||||||
|
language. The current implementation of the algorithm calculates a
|
||||||
|
moment of inertia tensor, volume, and center of gravity in a few
|
||||||
|
milliseconds per part.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
The algorithm\'s speed is critical not only for the eventually large
|
The algorithm's speed is critical not only for the eventually large
|
||||||
number of debris pieces that have to be processed, but many of the data
|
number of debris pieces that have to be processed, but many of the data
|
||||||
science algorithms we plan on performing on the compiled data need the
|
science algorithms we plan on performing on the compiled data need the
|
||||||
data to be normalized. I have decided that it makes the most sense to
|
data to be normalized. I have decided that it makes the most sense to
|
||||||
normalize the dataset based on volume. I chose volume for a few reasons,
|
normalize the dataset based on volume. I chose volume for a few reasons,
|
||||||
namely because it was easy to come up with an efficient algorithm to
|
namely because it was easy to implement an efficient algorithm to
|
||||||
calculate volume, and currently, volume seems to be the least essential
|
calculate volume, and currently, volume seems to be the least essential
|
||||||
property for the data analysis. Scaling all the models to have the same
|
property for the data analysis. Unfortunately, scaling a model to have a
|
||||||
volume can be done very efficiently using derivative-free numerical
|
specific volume is an iterative process, but can be done very
|
||||||
root-finding algorithms. The current implementation can scale and
|
efficiently using derivative-free numerical root-finding algorithms. The
|
||||||
process all the properties using only 30% more time than getting the
|
current implementation can scale and process all the properties using
|
||||||
properties without first scaling. Finding the correct scale is an
|
only 30% more time than getting the properties without first scaling.
|
||||||
iterative process, so scaling may become significantly more expensive as
|
|
||||||
more complex models become available.
|
|
||||||
|
|
||||||
```txt
|
```{.txt}
|
||||||
Row │ variable mean min median max
|
Row │ variable mean min median max
|
||||||
│ Symbol Float64 Float64 Float64 Float64
|
│ Symbol Float64 Float64 Float64 Float64
|
||||||
─────┼────────────────────────────────────────────────────────────
|
─────┼────────────────────────────────────────────────────────────
|
||||||
@ -62,15 +60,16 @@ more complex models become available.
|
|||||||
7 │ Iz 0.0111086 1.05596e-17 2.1906e-8 1.15363
|
7 │ Iz 0.0111086 1.05596e-17 2.1906e-8 1.15363
|
||||||
```
|
```
|
||||||
|
|
||||||
Above is a summary of the current dataset without scaling. The max
|
Above is a summary of the current 108 part dataset without scaling. The
|
||||||
values are well above the median, and given the dataset\'s small size,
|
max values are well above the median, and given the dataset's small
|
||||||
there are still significant outliers in the dataset. For now, any
|
size, there are still significant outliers in the dataset. For now, any
|
||||||
significant outliers will be removed, with more explanation below, but
|
significant outliers will be removed, with more explanation below, but
|
||||||
hopefully, this will not become as necessary or shrink the dataset as
|
hopefully, this will not become as necessary or shrink the dataset as
|
||||||
much as the dataset grows. As mentioned before, a raw and a normalized
|
much as the dataset grows. As mentioned before, a raw and a normalized
|
||||||
dataset were prepared, and the data can be found here:
|
dataset were prepared, and the data can be found below:
|
||||||
|
|
||||||
[dataset.csv](https://gitlab.com/orbital-debris-research/directed-study/report-2/-/blob/main/dataset.csv), [scaled_dataset.csv](https://gitlab.com/orbital-debris-research/directed-study/report-2/-/blob/main/scaled_dataset.csv)
|
- [dataset.csv](https://gitlab.com/orbital-debris-research/directed-study/report-2/-/blob/main/dataset.csv)
|
||||||
|
- [scaled_dataset.csv](https://gitlab.com/orbital-debris-research/directed-study/report-2/-/blob/main/scaled_dataset.csv)
|
||||||
|
|
||||||
## Characterization
|
## Characterization
|
||||||
|
|
||||||
@ -82,7 +81,7 @@ different from the previous one, it is essential to ensure inertia is
|
|||||||
still the most important. We begin by using the `pca` function in Matlab
|
still the most important. We begin by using the `pca` function in Matlab
|
||||||
on our scaled dataset.
|
on our scaled dataset.
|
||||||
|
|
||||||
```matlab
|
```{.matlab}
|
||||||
[coeff,score,latent] = pca(scaled_data);
|
[coeff,score,latent] = pca(scaled_data);
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -105,7 +104,7 @@ time will be spent analyzing the properties.
|
|||||||
Now that it has been determined that inertia will be used, k-means
|
Now that it has been determined that inertia will be used, k-means
|
||||||
clustering can be performed on the raw, unscaled dataset.
|
clustering can be performed on the raw, unscaled dataset.
|
||||||
|
|
||||||
```matlab
|
```{.matlab}
|
||||||
[IDX, C] = kmeans(inertia,3);
|
[IDX, C] = kmeans(inertia,3);
|
||||||
|
|
||||||
histcounts(IDX) % Get the size of each cluster
|
histcounts(IDX) % Get the size of each cluster
|
||||||
@ -119,7 +118,7 @@ groups. Therefore, to get a better view, only the smallest magnitude
|
|||||||
group will be kept since it seems to have the most variation and k-means
|
group will be kept since it seems to have the most variation and k-means
|
||||||
will be performed again to understand the data better.
|
will be performed again to understand the data better.
|
||||||
|
|
||||||
```matlab
|
```{.matlab}
|
||||||
inertia = inertia(IDX == 1,:);
|
inertia = inertia(IDX == 1,:);
|
||||||
[IDX, C] = kmeans(inertia,3);
|
[IDX, C] = kmeans(inertia,3);
|
||||||
|
|
||||||
|
11
citations.bib
Normal file
11
citations.bib
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
@misc{eberlyPolyhedralMassProperties2002,
|
||||||
|
title = {Polyhedral {{Mass Properties}} ({{Revisited}})},
|
||||||
|
author = {Eberly, David},
|
||||||
|
year = {2002},
|
||||||
|
month = dec,
|
||||||
|
copyright = {CC BY 4.0},
|
||||||
|
url = "https://www.geometrictools.com/Documentation/PolyhedralMassProperties.pdf"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
BIN
report2AnsonBiggs.docx
Normal file
BIN
report2AnsonBiggs.docx
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user