mirror of
https://gitlab.com/orbital-debris-research/directed-study/final-report.git
synced 2025-06-15 22:56:52 +00:00
stuff
This commit is contained in:
parent
b15dc55b7a
commit
8d3aebc70c
1
.jupyter_cache/__version__.txt
Normal file
1
.jupyter_cache/__version__.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
0.5.0
|
@ -0,0 +1,248 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"id": "a45c1344",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"\n",
|
||||||
|
"(process:28652): GLib-GIO-WARNING **: 12:50:31.472: Unexpectedly, UWP app `KDEe.V.Okular_21.1203.941.0_x64__7vt06qxq7ptv8' (AUMId `KDEe.V.Okular_7vt06qxq7ptv8!KDEe.V.Okular') supports 5 extensions but has no verbs\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"import IJulia\n",
|
||||||
|
"\n",
|
||||||
|
"# The julia kernel has built in support for Revise.jl, so this is the \n",
|
||||||
|
"# recommended approach for long-running sessions:\n",
|
||||||
|
"# https://github.com/JuliaLang/IJulia.jl/blob/9b10fa9b879574bbf720f5285029e07758e50a5e/src/kernel.jl#L46-L51\n",
|
||||||
|
"\n",
|
||||||
|
"# Users should enable revise within .julia/config/startup_ijulia.jl:\n",
|
||||||
|
"# https://timholy.github.io/Revise.jl/stable/config/#Using-Revise-automatically-within-Jupyter/IJulia-1\n",
|
||||||
|
"\n",
|
||||||
|
"# clear console history\n",
|
||||||
|
"IJulia.clear_history()\n",
|
||||||
|
"\n",
|
||||||
|
"# Intialize Plots w/ default fig width/height\n",
|
||||||
|
"try\n",
|
||||||
|
" fig_width = 7\n",
|
||||||
|
" fig_height = 5\n",
|
||||||
|
" fig_format = :retina\n",
|
||||||
|
" fig_dpi = 96\n",
|
||||||
|
" # no retina format type, use svg for high quality type/marks\n",
|
||||||
|
" if fig_format == :retina\n",
|
||||||
|
" fig_format = :svg\n",
|
||||||
|
" # IJulia doesn't support PDF output so use png (if the DPI \n",
|
||||||
|
" # remains the default of 300 then set to 96)\n",
|
||||||
|
" elseif fig_format == :pdf\n",
|
||||||
|
" fig_format = :png\n",
|
||||||
|
" fig_dpi = 96\n",
|
||||||
|
" end\n",
|
||||||
|
" # convert inches to pixels\n",
|
||||||
|
" fig_width = fig_width * fig_dpi\n",
|
||||||
|
" fig_height = fig_height * fig_dpi\n",
|
||||||
|
" using Plots\n",
|
||||||
|
" gr(size=(fig_width, fig_height), fmt = fig_format, dpi = fig_dpi)\n",
|
||||||
|
"catch e\n",
|
||||||
|
" # @warn \"Plots init\" exception=(e, catch_backtrace())\n",
|
||||||
|
"end\n",
|
||||||
|
"\n",
|
||||||
|
"# Set run_path if specified\n",
|
||||||
|
"try\n",
|
||||||
|
" run_path = \"\"\n",
|
||||||
|
" if !isempty(run_path)\n",
|
||||||
|
" cd(run_path)\n",
|
||||||
|
" end\n",
|
||||||
|
"catch e\n",
|
||||||
|
" @warn \"Run path init:\" exception=(e, catch_backtrace())\n",
|
||||||
|
"end\n",
|
||||||
|
"\n",
|
||||||
|
"# don't return kernel dependencies (b/c Revise should take care of dependencies)\n",
|
||||||
|
"nothing\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"id": "189db2ad",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"#| code-fold: true\n",
|
||||||
|
"#| output: false\n",
|
||||||
|
"using FileIO\n",
|
||||||
|
"using MeshIO\n",
|
||||||
|
"\n",
|
||||||
|
"using stlProcess\n",
|
||||||
|
"\n",
|
||||||
|
"using CSV\n",
|
||||||
|
"using DataFrames\n",
|
||||||
|
"\n",
|
||||||
|
"using LinearAlgebra"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"id": "5e47d862",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
"<div class=\"data-frame\"><p>0 rows × 8 columns (omitted printing of 1 columns)</p><table class=\"data-frame\"><thead><tr><th></th><th>surface_area</th><th>characteristic_length</th><th>sbx</th><th>sby</th><th>sbz</th><th>Ix</th><th>Iy</th></tr><tr><th></th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th></tr></thead><tbody></tbody></table></div>"
|
||||||
|
],
|
||||||
|
"text/latex": [
|
||||||
|
"\\begin{tabular}{r|cccccccc}\n",
|
||||||
|
"\t& surface\\_area & characteristic\\_length & sbx & sby & sbz & Ix & Iy & \\\\\n",
|
||||||
|
"\t\\hline\n",
|
||||||
|
"\t& Float64 & Float64 & Float64 & Float64 & Float64 & Float64 & Float64 & \\\\\n",
|
||||||
|
"\t\\hline\n",
|
||||||
|
"\\end{tabular}\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"\u001b[1m0×8 DataFrame\u001b[0m"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 3,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"# local path to https://gitlab.com/orbital-debris-research/fake-satellite-dataset\n",
|
||||||
|
"dataset_path = raw\"C:\\Coding\\fake-satellite-dataset\"\n",
|
||||||
|
"\n",
|
||||||
|
"folders = [\"1_5U\", \"assembly1\", \"cubesat\"]\n",
|
||||||
|
"\n",
|
||||||
|
"df = DataFrame(;\n",
|
||||||
|
" surface_area=Float64[],\n",
|
||||||
|
" characteristic_length=Float64[],\n",
|
||||||
|
" sbx=Float64[],\n",
|
||||||
|
" sby=Float64[],\n",
|
||||||
|
" sbz=Float64[],\n",
|
||||||
|
" Ix=Float64[],\n",
|
||||||
|
" Iy=Float64[],\n",
|
||||||
|
" Iz=Float64[],\n",
|
||||||
|
")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"id": "6c55224d",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Processing Path: C:\\Coding\\fake-satellite-dataset\\1_5U\n",
|
||||||
|
"Processing Path: C:\\Coding\\fake-satellite-dataset\\assembly1\n",
|
||||||
|
"Processing Path: C:\\Coding\\fake-satellite-dataset\\cubesat\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"┌ Warning: Characteristic Length Algorithm failed to converge, this usually means stl is flat. Setting length in dir to 0.\n",
|
||||||
|
"└ @ stlProcess C:\\Users\\albig\\.julia\\packages\\stlProcess\\8rsc7\\src\\stlProcess.jl:153\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"for path in dataset_path * \"\\\\\" .* folders\n",
|
||||||
|
" println(\"Processing Path: \", path)\n",
|
||||||
|
" Threads.@threads for file in readdir(path)\n",
|
||||||
|
" stl = load(path * \"\\\\\" * file)\n",
|
||||||
|
" scale = find_scale(stl)\n",
|
||||||
|
" props = get_mass_properties(stl; scale=scale)\n",
|
||||||
|
"\n",
|
||||||
|
" eigs = eigvals(props.inertia)\n",
|
||||||
|
" sort_index = sortperm(eigs)\n",
|
||||||
|
" Ix, Iy, Iz = eigs[sort_index]\n",
|
||||||
|
" sbx, sby, sbz = props.sb_values[sort_index]\n",
|
||||||
|
"\n",
|
||||||
|
" push!(\n",
|
||||||
|
" df,\n",
|
||||||
|
" [props.surface_area, props.characteristic_length, sbx, sby, sbz, Ix, Iy, Iz],\n",
|
||||||
|
" )\n",
|
||||||
|
" end\n",
|
||||||
|
"end"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"id": "2e520bb3",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
"<div class=\"data-frame\"><p>8 rows × 7 columns</p><table class=\"data-frame\"><thead><tr><th></th><th>variable</th><th>mean</th><th>min</th><th>median</th><th>max</th><th>nmissing</th><th>eltype</th></tr><tr><th></th><th title=\"Symbol\">Symbol</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Int64\">Int64</th><th title=\"DataType\">DataType</th></tr></thead><tbody><tr><th>1</th><td>surface_area</td><td>25.2002</td><td>5.60865</td><td>13.3338</td><td>159.406</td><td>0</td><td>Float64</td></tr><tr><th>2</th><td>characteristic_length</td><td>79.5481</td><td>0.158521</td><td>1.55816</td><td>1582.23</td><td>0</td><td>Float64</td></tr><tr><th>3</th><td>sbx</td><td>1.40222</td><td>0.0417367</td><td>0.967078</td><td>10.0663</td><td>0</td><td>Float64</td></tr><tr><th>4</th><td>sby</td><td>3.3367</td><td>0.0125824</td><td>2.68461</td><td>9.68361</td><td>0</td><td>Float64</td></tr><tr><th>5</th><td>sbz</td><td>3.91184</td><td>0.29006</td><td>1.8185</td><td>14.7434</td><td>0</td><td>Float64</td></tr><tr><th>6</th><td>Ix</td><td>1.58725</td><td>0.0311782</td><td>0.23401</td><td>11.1335</td><td>0</td><td>Float64</td></tr><tr><th>7</th><td>Iy</td><td>3.74345</td><td>0.178598</td><td>1.01592</td><td>24.6735</td><td>0</td><td>Float64</td></tr><tr><th>8</th><td>Iz</td><td>5.20207</td><td>0.178686</td><td>1.742</td><td>32.0083</td><td>0</td><td>Float64</td></tr></tbody></table></div>"
|
||||||
|
],
|
||||||
|
"text/latex": [
|
||||||
|
"\\begin{tabular}{r|ccccccc}\n",
|
||||||
|
"\t& variable & mean & min & median & max & nmissing & eltype\\\\\n",
|
||||||
|
"\t\\hline\n",
|
||||||
|
"\t& Symbol & Float64 & Float64 & Float64 & Float64 & Int64 & DataType\\\\\n",
|
||||||
|
"\t\\hline\n",
|
||||||
|
"\t1 & surface\\_area & 25.2002 & 5.60865 & 13.3338 & 159.406 & 0 & Float64 \\\\\n",
|
||||||
|
"\t2 & characteristic\\_length & 79.5481 & 0.158521 & 1.55816 & 1582.23 & 0 & Float64 \\\\\n",
|
||||||
|
"\t3 & sbx & 1.40222 & 0.0417367 & 0.967078 & 10.0663 & 0 & Float64 \\\\\n",
|
||||||
|
"\t4 & sby & 3.3367 & 0.0125824 & 2.68461 & 9.68361 & 0 & Float64 \\\\\n",
|
||||||
|
"\t5 & sbz & 3.91184 & 0.29006 & 1.8185 & 14.7434 & 0 & Float64 \\\\\n",
|
||||||
|
"\t6 & Ix & 1.58725 & 0.0311782 & 0.23401 & 11.1335 & 0 & Float64 \\\\\n",
|
||||||
|
"\t7 & Iy & 3.74345 & 0.178598 & 1.01592 & 24.6735 & 0 & Float64 \\\\\n",
|
||||||
|
"\t8 & Iz & 5.20207 & 0.178686 & 1.742 & 32.0083 & 0 & Float64 \\\\\n",
|
||||||
|
"\\end{tabular}\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"\u001b[1m8×7 DataFrame\u001b[0m\n",
|
||||||
|
"\u001b[1m Row \u001b[0m│\u001b[1m variable \u001b[0m\u001b[1m mean \u001b[0m\u001b[1m min \u001b[0m\u001b[1m median \u001b[0m\u001b[1m max \u001b[0m\u001b[1m nmis\u001b[0m ⋯\n",
|
||||||
|
"\u001b[1m \u001b[0m│\u001b[90m Symbol \u001b[0m\u001b[90m Float64 \u001b[0m\u001b[90m Float64 \u001b[0m\u001b[90m Float64 \u001b[0m\u001b[90m Float64 \u001b[0m\u001b[90m Int6\u001b[0m ⋯\n",
|
||||||
|
"─────┼──────────────────────────────────────────────────────────────────────────\n",
|
||||||
|
" 1 │ surface_area 25.2002 5.60865 13.3338 159.406 ⋯\n",
|
||||||
|
" 2 │ characteristic_length 79.5481 0.158521 1.55816 1582.23\n",
|
||||||
|
" 3 │ sbx 1.40222 0.0417367 0.967078 10.0663\n",
|
||||||
|
" 4 │ sby 3.3367 0.0125824 2.68461 9.68361\n",
|
||||||
|
" 5 │ sbz 3.91184 0.29006 1.8185 14.7434 ⋯\n",
|
||||||
|
" 6 │ Ix 1.58725 0.0311782 0.23401 11.1335\n",
|
||||||
|
" 7 │ Iy 3.74345 0.178598 1.01592 24.6735\n",
|
||||||
|
" 8 │ Iz 5.20207 0.178686 1.742 32.0083\n",
|
||||||
|
"\u001b[36m 2 columns omitted\u001b[0m"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 5,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"describe(df)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Julia 1.8.0-beta3",
|
||||||
|
"language": "julia",
|
||||||
|
"name": "julia-1.8"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"file_extension": ".jl",
|
||||||
|
"mimetype": "application/julia",
|
||||||
|
"name": "julia",
|
||||||
|
"version": "1.8.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
@ -0,0 +1,237 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"id": "129f639c",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import IJulia\n",
|
||||||
|
"\n",
|
||||||
|
"# The julia kernel has built in support for Revise.jl, so this is the \n",
|
||||||
|
"# recommended approach for long-running sessions:\n",
|
||||||
|
"# https://github.com/JuliaLang/IJulia.jl/blob/9b10fa9b879574bbf720f5285029e07758e50a5e/src/kernel.jl#L46-L51\n",
|
||||||
|
"\n",
|
||||||
|
"# Users should enable revise within .julia/config/startup_ijulia.jl:\n",
|
||||||
|
"# https://timholy.github.io/Revise.jl/stable/config/#Using-Revise-automatically-within-Jupyter/IJulia-1\n",
|
||||||
|
"\n",
|
||||||
|
"# clear console history\n",
|
||||||
|
"IJulia.clear_history()\n",
|
||||||
|
"\n",
|
||||||
|
"# Intialize Plots w/ default fig width/height\n",
|
||||||
|
"try\n",
|
||||||
|
" fig_width = 7\n",
|
||||||
|
" fig_height = 5\n",
|
||||||
|
" fig_format = :retina\n",
|
||||||
|
" fig_dpi = 96\n",
|
||||||
|
" # no retina format type, use svg for high quality type/marks\n",
|
||||||
|
" if fig_format == :retina\n",
|
||||||
|
" fig_format = :svg\n",
|
||||||
|
" # IJulia doesn't support PDF output so use png (if the DPI \n",
|
||||||
|
" # remains the default of 300 then set to 96)\n",
|
||||||
|
" elseif fig_format == :pdf\n",
|
||||||
|
" fig_format = :png\n",
|
||||||
|
" fig_dpi = 96\n",
|
||||||
|
" end\n",
|
||||||
|
" # convert inches to pixels\n",
|
||||||
|
" fig_width = fig_width * fig_dpi\n",
|
||||||
|
" fig_height = fig_height * fig_dpi\n",
|
||||||
|
" using Plots\n",
|
||||||
|
" gr(size=(fig_width, fig_height), fmt = fig_format, dpi = fig_dpi)\n",
|
||||||
|
"catch e\n",
|
||||||
|
" # @warn \"Plots init\" exception=(e, catch_backtrace())\n",
|
||||||
|
"end\n",
|
||||||
|
"\n",
|
||||||
|
"# Set run_path if specified\n",
|
||||||
|
"try\n",
|
||||||
|
" run_path = \"\"\n",
|
||||||
|
" if !isempty(run_path)\n",
|
||||||
|
" cd(run_path)\n",
|
||||||
|
" end\n",
|
||||||
|
"catch e\n",
|
||||||
|
" @warn \"Run path init:\" exception=(e, catch_backtrace())\n",
|
||||||
|
"end\n",
|
||||||
|
"\n",
|
||||||
|
"# don't return kernel dependencies (b/c Revise should take care of dependencies)\n",
|
||||||
|
"nothing\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"id": "8b15e8a8",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"#| code-fold: true\n",
|
||||||
|
"#| output: false\n",
|
||||||
|
"\n",
|
||||||
|
"using FileIO\n",
|
||||||
|
"using MeshIO\n",
|
||||||
|
"\n",
|
||||||
|
"using stlProcess\n",
|
||||||
|
"\n",
|
||||||
|
"using CSV\n",
|
||||||
|
"using DataFrames\n",
|
||||||
|
"\n",
|
||||||
|
"using LinearAlgebra"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"id": "f40c9594",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
"<div class=\"data-frame\"><p>0 rows × 8 columns (omitted printing of 1 columns)</p><table class=\"data-frame\"><thead><tr><th></th><th>surface_area</th><th>characteristic_length</th><th>sbx</th><th>sby</th><th>sbz</th><th>Ix</th><th>Iy</th></tr><tr><th></th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th></tr></thead><tbody></tbody></table></div>"
|
||||||
|
],
|
||||||
|
"text/latex": [
|
||||||
|
"\\begin{tabular}{r|cccccccc}\n",
|
||||||
|
"\t& surface\\_area & characteristic\\_length & sbx & sby & sbz & Ix & Iy & \\\\\n",
|
||||||
|
"\t\\hline\n",
|
||||||
|
"\t& Float64 & Float64 & Float64 & Float64 & Float64 & Float64 & Float64 & \\\\\n",
|
||||||
|
"\t\\hline\n",
|
||||||
|
"\\end{tabular}\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"\u001b[1m0×8 DataFrame\u001b[0m"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 14,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"#| code-fold: true\n",
|
||||||
|
"#| output: false\n",
|
||||||
|
"\n",
|
||||||
|
"# local path to https://gitlab.com/orbital-debris-research/fake-satellite-dataset\n",
|
||||||
|
"dataset_path = raw\"C:\\Coding\\fake-satellite-dataset\"\n",
|
||||||
|
"\n",
|
||||||
|
"folders = [\"1_5U\", \"assembly1\", \"cubesat\"]\n",
|
||||||
|
"\n",
|
||||||
|
"df = DataFrame(;\n",
|
||||||
|
" surface_area=Float64[],\n",
|
||||||
|
" characteristic_length=Float64[],\n",
|
||||||
|
" sbx=Float64[],\n",
|
||||||
|
" sby=Float64[],\n",
|
||||||
|
" sbz=Float64[],\n",
|
||||||
|
" Ix=Float64[],\n",
|
||||||
|
" Iy=Float64[],\n",
|
||||||
|
" Iz=Float64[],\n",
|
||||||
|
")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"id": "bb8f7086",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Processing Path: C:\\Coding\\fake-satellite-dataset\\1_5U\n",
|
||||||
|
"Processing Path: C:\\Coding\\fake-satellite-dataset\\assembly1\n",
|
||||||
|
"Processing Path: C:\\Coding\\fake-satellite-dataset\\cubesat\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"┌ Warning: Characteristic Length Algorithm failed to converge, this usually means stl is flat. Setting length in dir to 0.\n",
|
||||||
|
"└ @ stlProcess C:\\Users\\albig\\.julia\\packages\\stlProcess\\8rsc7\\src\\stlProcess.jl:153\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"for path in dataset_path * \"\\\\\" .* folders\n",
|
||||||
|
" println(\"Processing Path: \", path)\n",
|
||||||
|
" Threads.@threads for file in readdir(path)\n",
|
||||||
|
" stl = load(path * \"\\\\\" * file)\n",
|
||||||
|
" scale = find_scale(stl)\n",
|
||||||
|
" props = get_mass_properties(stl; scale=scale)\n",
|
||||||
|
"\n",
|
||||||
|
" eigs = eigvals(props.inertia)\n",
|
||||||
|
" sort_index = sortperm(eigs)\n",
|
||||||
|
" Ix, Iy, Iz = eigs[sort_index]\n",
|
||||||
|
" sbx, sby, sbz = props.sb_values[sort_index]\n",
|
||||||
|
"\n",
|
||||||
|
" push!(\n",
|
||||||
|
" df,\n",
|
||||||
|
" [props.surface_area, props.characteristic_length, sbx, sby, sbz, Ix, Iy, Iz],\n",
|
||||||
|
" )\n",
|
||||||
|
" end\n",
|
||||||
|
"end"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"id": "a51a601f",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
"<div class=\"data-frame\"><p>8 rows × 7 columns</p><table class=\"data-frame\"><thead><tr><th></th><th>variable</th><th>mean</th><th>min</th><th>median</th><th>max</th><th>nmissing</th><th>eltype</th></tr><tr><th></th><th title=\"Symbol\">Symbol</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Float64\">Float64</th><th title=\"Int64\">Int64</th><th title=\"DataType\">DataType</th></tr></thead><tbody><tr><th>1</th><td>surface_area</td><td>25.2002</td><td>5.60865</td><td>13.3338</td><td>159.406</td><td>0</td><td>Float64</td></tr><tr><th>2</th><td>characteristic_length</td><td>79.5481</td><td>0.158521</td><td>1.55816</td><td>1582.23</td><td>0</td><td>Float64</td></tr><tr><th>3</th><td>sbx</td><td>1.40222</td><td>0.0417367</td><td>0.967078</td><td>10.0663</td><td>0</td><td>Float64</td></tr><tr><th>4</th><td>sby</td><td>3.3367</td><td>0.0125824</td><td>2.68461</td><td>9.68361</td><td>0</td><td>Float64</td></tr><tr><th>5</th><td>sbz</td><td>3.91184</td><td>0.29006</td><td>1.8185</td><td>14.7434</td><td>0</td><td>Float64</td></tr><tr><th>6</th><td>Ix</td><td>1.58725</td><td>0.0311782</td><td>0.23401</td><td>11.1335</td><td>0</td><td>Float64</td></tr><tr><th>7</th><td>Iy</td><td>3.74345</td><td>0.178598</td><td>1.01592</td><td>24.6735</td><td>0</td><td>Float64</td></tr><tr><th>8</th><td>Iz</td><td>5.20207</td><td>0.178686</td><td>1.742</td><td>32.0083</td><td>0</td><td>Float64</td></tr></tbody></table></div>"
|
||||||
|
],
|
||||||
|
"text/latex": [
|
||||||
|
"\\begin{tabular}{r|ccccccc}\n",
|
||||||
|
"\t& variable & mean & min & median & max & nmissing & eltype\\\\\n",
|
||||||
|
"\t\\hline\n",
|
||||||
|
"\t& Symbol & Float64 & Float64 & Float64 & Float64 & Int64 & DataType\\\\\n",
|
||||||
|
"\t\\hline\n",
|
||||||
|
"\t1 & surface\\_area & 25.2002 & 5.60865 & 13.3338 & 159.406 & 0 & Float64 \\\\\n",
|
||||||
|
"\t2 & characteristic\\_length & 79.5481 & 0.158521 & 1.55816 & 1582.23 & 0 & Float64 \\\\\n",
|
||||||
|
"\t3 & sbx & 1.40222 & 0.0417367 & 0.967078 & 10.0663 & 0 & Float64 \\\\\n",
|
||||||
|
"\t4 & sby & 3.3367 & 0.0125824 & 2.68461 & 9.68361 & 0 & Float64 \\\\\n",
|
||||||
|
"\t5 & sbz & 3.91184 & 0.29006 & 1.8185 & 14.7434 & 0 & Float64 \\\\\n",
|
||||||
|
"\t6 & Ix & 1.58725 & 0.0311782 & 0.23401 & 11.1335 & 0 & Float64 \\\\\n",
|
||||||
|
"\t7 & Iy & 3.74345 & 0.178598 & 1.01592 & 24.6735 & 0 & Float64 \\\\\n",
|
||||||
|
"\t8 & Iz & 5.20207 & 0.178686 & 1.742 & 32.0083 & 0 & Float64 \\\\\n",
|
||||||
|
"\\end{tabular}\n"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
"\u001b[1m8×7 DataFrame\u001b[0m\n",
|
||||||
|
"\u001b[1m Row \u001b[0m│\u001b[1m variable \u001b[0m\u001b[1m mean \u001b[0m\u001b[1m min \u001b[0m\u001b[1m median \u001b[0m\u001b[1m max \u001b[0m\u001b[1m nmis\u001b[0m ⋯\n",
|
||||||
|
"\u001b[1m \u001b[0m│\u001b[90m Symbol \u001b[0m\u001b[90m Float64 \u001b[0m\u001b[90m Float64 \u001b[0m\u001b[90m Float64 \u001b[0m\u001b[90m Float64 \u001b[0m\u001b[90m Int6\u001b[0m ⋯\n",
|
||||||
|
"─────┼──────────────────────────────────────────────────────────────────────────\n",
|
||||||
|
" 1 │ surface_area 25.2002 5.60865 13.3338 159.406 ⋯\n",
|
||||||
|
" 2 │ characteristic_length 79.5481 0.158521 1.55816 1582.23\n",
|
||||||
|
" 3 │ sbx 1.40222 0.0417367 0.967078 10.0663\n",
|
||||||
|
" 4 │ sby 3.3367 0.0125824 2.68461 9.68361\n",
|
||||||
|
" 5 │ sbz 3.91184 0.29006 1.8185 14.7434 ⋯\n",
|
||||||
|
" 6 │ Ix 1.58725 0.0311782 0.23401 11.1335\n",
|
||||||
|
" 7 │ Iy 3.74345 0.178598 1.01592 24.6735\n",
|
||||||
|
" 8 │ Iz 5.20207 0.178686 1.742 32.0083\n",
|
||||||
|
"\u001b[36m 2 columns omitted\u001b[0m"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 16,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"describe(df)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Julia 1.8.0-beta3",
|
||||||
|
"language": "julia",
|
||||||
|
"name": "julia-1.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 5
|
||||||
|
}
|
BIN
.jupyter_cache/global.db
Normal file
BIN
.jupyter_cache/global.db
Normal file
Binary file not shown.
1012
Manifest.toml
Normal file
1012
Manifest.toml
Normal file
File diff suppressed because it is too large
Load Diff
8
Project.toml
Normal file
8
Project.toml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[deps]
|
||||||
|
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
|
||||||
|
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
|
||||||
|
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
|
||||||
|
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
|
||||||
|
MeshIO = "7269a6da-0436-5bbc-96c2-40638cbb6118"
|
||||||
|
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
|
||||||
|
stlProcess = "68914fc9-42cf-4b37-b06f-0b65edf9b8fa"
|
199
report.html
199
report.html
File diff suppressed because one or more lines are too long
72
report.qmd
72
report.qmd
@ -7,21 +7,85 @@ latex-auto-install: true
|
|||||||
format:
|
format:
|
||||||
html:
|
html:
|
||||||
self-contained: true
|
self-contained: true
|
||||||
|
title-block-banner: true
|
||||||
pdf: default
|
pdf: default
|
||||||
|
|
||||||
# reference-location: margin
|
reference-location: margin
|
||||||
citation-location: margin
|
citation-location: margin
|
||||||
bibliography: citations.bib
|
bibliography: citations.bib
|
||||||
|
|
||||||
|
execute:
|
||||||
|
cache: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
```{julia}
|
||||||
|
#| code-fold: true
|
||||||
|
#| output: false
|
||||||
|
|
||||||
|
using FileIO
|
||||||
|
using MeshIO
|
||||||
|
|
||||||
|
using stlProcess
|
||||||
|
|
||||||
|
using CSV
|
||||||
|
using DataFrames
|
||||||
|
|
||||||
|
using LinearAlgebra
|
||||||
|
```
|
||||||
|
|
||||||
|
```{julia}
|
||||||
|
#| code-fold: true
|
||||||
|
#| output: false
|
||||||
|
|
||||||
|
# local path to https://gitlab.com/orbital-debris-research/fake-satellite-dataset
|
||||||
|
dataset_path = raw"C:\Coding\fake-satellite-dataset"
|
||||||
|
|
||||||
|
folders = ["1_5U", "assembly1", "cubesat"]
|
||||||
|
|
||||||
|
df = DataFrame(;
|
||||||
|
surface_area=Float64[],
|
||||||
|
characteristic_length=Float64[],
|
||||||
|
sbx=Float64[],
|
||||||
|
sby=Float64[],
|
||||||
|
sbz=Float64[],
|
||||||
|
Ix=Float64[],
|
||||||
|
Iy=Float64[],
|
||||||
|
Iz=Float64[],
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
```{julia}
|
||||||
|
for path in dataset_path * "\\" .* folders
|
||||||
|
println("Processing Path: ", path)
|
||||||
|
Threads.@threads for file in readdir(path)
|
||||||
|
stl = load(path * "\\" * file)
|
||||||
|
scale = find_scale(stl)
|
||||||
|
props = get_mass_properties(stl; scale=scale)
|
||||||
|
|
||||||
|
eigs = eigvals(props.inertia)
|
||||||
|
sort_index = sortperm(eigs)
|
||||||
|
Ix, Iy, Iz = eigs[sort_index]
|
||||||
|
sbx, sby, sbz = props.sb_values[sort_index]
|
||||||
|
|
||||||
|
push!(
|
||||||
|
df,
|
||||||
|
[props.surface_area, props.characteristic_length, sbx, sby, sbz, Ix, Iy, Iz],
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
```{julia}
|
||||||
|
describe(df)
|
||||||
|
```
|
||||||
|
|
||||||
## Gathering Data
|
## Gathering Data
|
||||||
|
|
||||||
To get started on the project before any scans of the actual debris are made available, I opted to
|
To get started on the project before any scans of the actual debris are made available, I opted to
|
||||||
find 3D models online and process them as if they were data collected by my team. GrabCAD is an
|
find 3D models online and process them as if they were data collected by my team. GrabCAD is an
|
||||||
excellent source of high-quality 3D models, and all the models have, at worst, a non-commercial
|
excellent source of high-quality 3D models, and all the models have, at worst, a non-commercial
|
||||||
^[This is a test] license making them suitable for this study. The current dataset uses three
|
license making them suitable for this study. The current dataset uses three separate satellite
|
||||||
separate satellite assemblies found on GrabCAD, below is an example of one of the satellites that
|
assemblies found on GrabCAD, below is an example of one of the satellites that was used.
|
||||||
was used.
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user