Finish experimental description, start work on final eval

This commit is contained in:
Peter 2024-11-12 04:47:24 +08:00
parent fc308c6507
commit a5555b47a4
6 changed files with 70513 additions and 310 deletions

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 1.7 MiB

3
images/hpr-workflow.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 2.8 MiB

View File

@ -6,7 +6,7 @@
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<cc:Work> <cc:Work>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:date>2024-11-11T04:21:51.751037</dc:date> <dc:date>2024-11-12T03:20:36.256760</dc:date>
<dc:format>image/svg+xml</dc:format> <dc:format>image/svg+xml</dc:format>
<dc:creator> <dc:creator>
<cc:Agent> <cc:Agent>
@ -42,16 +42,16 @@ z
<g id="line2d_1"> <g id="line2d_1">
<path d="M 115.134304 359.517188 <path d="M 115.134304 359.517188
L 115.134304 26.877187 L 115.134304 26.877187
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_2"> <g id="line2d_2">
<defs> <defs>
<path id="m9e08932c06" d="M 0 0 <path id="mb06905985f" d="M 0 0
L 0 3.5 L 0 3.5
" style="stroke: #000000; stroke-width: 0.8"/> " style="stroke: #000000; stroke-width: 0.8"/>
</defs> </defs>
<g> <g>
<use xlink:href="#m9e08932c06" x="115.134304" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#mb06905985f" x="115.134304" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_1"> <g id="text_1">
@ -99,11 +99,11 @@ z
<g id="line2d_3"> <g id="line2d_3">
<path d="M 216.588849 359.517188 <path d="M 216.588849 359.517188
L 216.588849 26.877187 L 216.588849 26.877187
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_4"> <g id="line2d_4">
<g> <g>
<use xlink:href="#m9e08932c06" x="216.588849" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#mb06905985f" x="216.588849" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_2"> <g id="text_2">
@ -147,11 +147,11 @@ z
<g id="line2d_5"> <g id="line2d_5">
<path d="M 318.043395 359.517188 <path d="M 318.043395 359.517188
L 318.043395 26.877187 L 318.043395 26.877187
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_6"> <g id="line2d_6">
<g> <g>
<use xlink:href="#m9e08932c06" x="318.043395" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#mb06905985f" x="318.043395" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_3"> <g id="text_3">
@ -190,11 +190,11 @@ z
<g id="line2d_7"> <g id="line2d_7">
<path d="M 419.49794 359.517188 <path d="M 419.49794 359.517188
L 419.49794 26.877187 L 419.49794 26.877187
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_8"> <g id="line2d_8">
<g> <g>
<use xlink:href="#m9e08932c06" x="419.49794" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#mb06905985f" x="419.49794" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_4"> <g id="text_4">
@ -244,11 +244,11 @@ z
<g id="line2d_9"> <g id="line2d_9">
<path d="M 520.952486 359.517188 <path d="M 520.952486 359.517188
L 520.952486 26.877187 L 520.952486 26.877187
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_10"> <g id="line2d_10">
<g> <g>
<use xlink:href="#m9e08932c06" x="520.952486" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#mb06905985f" x="520.952486" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_5"> <g id="text_5">
@ -307,11 +307,11 @@ z
<g id="line2d_11"> <g id="line2d_11">
<path d="M 622.407031 359.517188 <path d="M 622.407031 359.517188
L 622.407031 26.877187 L 622.407031 26.877187
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_12"> <g id="line2d_12">
<g> <g>
<use xlink:href="#m9e08932c06" x="622.407031" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#mb06905985f" x="622.407031" y="359.517188" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_6"> <g id="text_6">
@ -503,23 +503,23 @@ z
<g id="matplotlib.axis_2"> <g id="matplotlib.axis_2">
<g id="ytick_1"> <g id="ytick_1">
<g id="line2d_13"> <g id="line2d_13">
<path d="M 64.407031 337.263189 <path d="M 64.407031 333.751102
L 622.407031 337.263189 L 622.407031 333.751102
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_14"> <g id="line2d_14">
<defs> <defs>
<path id="md761b3708c" d="M 0 0 <path id="m6b71974648" d="M 0 0
L -3.5 0 L -3.5 0
" style="stroke: #000000; stroke-width: 0.8"/> " style="stroke: #000000; stroke-width: 0.8"/>
</defs> </defs>
<g> <g>
<use xlink:href="#md761b3708c" x="64.407031" y="337.263189" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#m6b71974648" x="64.407031" y="333.751102" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_8"> <g id="text_8">
<!-- 50 --> <!-- 50 -->
<g transform="translate(25.75 342.962017) scale(0.15 -0.15)"> <g transform="translate(25.75 339.44993) scale(0.15 -0.15)">
<defs> <defs>
<path id="DejaVuSans-2212" d="M 678 2272 <path id="DejaVuSans-2212" d="M 678 2272
L 4684 2272 L 4684 2272
@ -562,18 +562,18 @@ z
</g> </g>
<g id="ytick_2"> <g id="ytick_2">
<g id="line2d_15"> <g id="line2d_15">
<path d="M 64.407031 278.142046 <path d="M 64.407031 275.298928
L 622.407031 278.142046 L 622.407031 275.298928
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_16"> <g id="line2d_16">
<g> <g>
<use xlink:href="#md761b3708c" x="64.407031" y="278.142046" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#m6b71974648" x="64.407031" y="275.298928" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_9"> <g id="text_9">
<!-- 40 --> <!-- 40 -->
<g transform="translate(25.75 283.840874) scale(0.15 -0.15)"> <g transform="translate(25.75 280.997756) scale(0.15 -0.15)">
<use xlink:href="#DejaVuSans-2212"/> <use xlink:href="#DejaVuSans-2212"/>
<use xlink:href="#DejaVuSans-34" x="83.789062"/> <use xlink:href="#DejaVuSans-34" x="83.789062"/>
<use xlink:href="#DejaVuSans-30" x="147.412109"/> <use xlink:href="#DejaVuSans-30" x="147.412109"/>
@ -582,18 +582,18 @@ L 622.407031 278.142046
</g> </g>
<g id="ytick_3"> <g id="ytick_3">
<g id="line2d_17"> <g id="line2d_17">
<path d="M 64.407031 219.020903 <path d="M 64.407031 216.846754
L 622.407031 219.020903 L 622.407031 216.846754
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_18"> <g id="line2d_18">
<g> <g>
<use xlink:href="#md761b3708c" x="64.407031" y="219.020903" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#m6b71974648" x="64.407031" y="216.846754" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_10"> <g id="text_10">
<!-- 30 --> <!-- 30 -->
<g transform="translate(25.75 224.719731) scale(0.15 -0.15)"> <g transform="translate(25.75 222.545582) scale(0.15 -0.15)">
<defs> <defs>
<path id="DejaVuSans-33" d="M 2597 2516 <path id="DejaVuSans-33" d="M 2597 2516
Q 3050 2419 3304 2112 Q 3050 2419 3304 2112
@ -636,18 +636,18 @@ z
</g> </g>
<g id="ytick_4"> <g id="ytick_4">
<g id="line2d_19"> <g id="line2d_19">
<path d="M 64.407031 159.89976 <path d="M 64.407031 158.394579
L 622.407031 159.89976 L 622.407031 158.394579
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_20"> <g id="line2d_20">
<g> <g>
<use xlink:href="#md761b3708c" x="64.407031" y="159.89976" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#m6b71974648" x="64.407031" y="158.394579" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_11"> <g id="text_11">
<!-- 20 --> <!-- 20 -->
<g transform="translate(25.75 165.598588) scale(0.15 -0.15)"> <g transform="translate(25.75 164.093408) scale(0.15 -0.15)">
<use xlink:href="#DejaVuSans-2212"/> <use xlink:href="#DejaVuSans-2212"/>
<use xlink:href="#DejaVuSans-32" x="83.789062"/> <use xlink:href="#DejaVuSans-32" x="83.789062"/>
<use xlink:href="#DejaVuSans-30" x="147.412109"/> <use xlink:href="#DejaVuSans-30" x="147.412109"/>
@ -656,18 +656,18 @@ L 622.407031 159.89976
</g> </g>
<g id="ytick_5"> <g id="ytick_5">
<g id="line2d_21"> <g id="line2d_21">
<path d="M 64.407031 100.778616 <path d="M 64.407031 99.942405
L 622.407031 100.778616 L 622.407031 99.942405
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_22"> <g id="line2d_22">
<g> <g>
<use xlink:href="#md761b3708c" x="64.407031" y="100.778616" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#m6b71974648" x="64.407031" y="99.942405" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_12"> <g id="text_12">
<!-- 10 --> <!-- 10 -->
<g transform="translate(25.75 106.477445) scale(0.15 -0.15)"> <g transform="translate(25.75 105.641233) scale(0.15 -0.15)">
<use xlink:href="#DejaVuSans-2212"/> <use xlink:href="#DejaVuSans-2212"/>
<use xlink:href="#DejaVuSans-31" x="83.789062"/> <use xlink:href="#DejaVuSans-31" x="83.789062"/>
<use xlink:href="#DejaVuSans-30" x="147.412109"/> <use xlink:href="#DejaVuSans-30" x="147.412109"/>
@ -676,18 +676,18 @@ L 622.407031 100.778616
</g> </g>
<g id="ytick_6"> <g id="ytick_6">
<g id="line2d_23"> <g id="line2d_23">
<path d="M 64.407031 41.657473 <path d="M 64.407031 41.490231
L 622.407031 41.657473 L 622.407031 41.490231
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"/>
</g> </g>
<g id="line2d_24"> <g id="line2d_24">
<g> <g>
<use xlink:href="#md761b3708c" x="64.407031" y="41.657473" style="stroke: #000000; stroke-width: 0.8"/> <use xlink:href="#m6b71974648" x="64.407031" y="41.490231" style="stroke: #000000; stroke-width: 0.8"/>
</g> </g>
</g> </g>
<g id="text_13"> <g id="text_13">
<!-- 0 --> <!-- 0 -->
<g transform="translate(47.863281 47.356301) scale(0.15 -0.15)"> <g transform="translate(47.863281 47.189059) scale(0.15 -0.15)">
<use xlink:href="#DejaVuSans-30"/> <use xlink:href="#DejaVuSans-30"/>
</g> </g>
</g> </g>
@ -873,155 +873,229 @@ z
</g> </g>
</g> </g>
<g id="line2d_25"> <g id="line2d_25">
<path d="M 55.952768 42.450685 <path d="M 55.952768 42.274467
L 64.407313 42.021414 L 64.407313 41.850054
L 72.861859 43.850576 L 72.861859 43.658519
L 81.316404 44.249341 L 81.316404 44.052771
L 89.77095 40.060823 L 89.77095 39.911647
L 98.225495 44.323182 L 98.225495 44.125776
L 106.680041 43.101666 L 106.680041 42.918082
L 115.134586 42.284945 L 115.134586 42.110603
L 123.589132 43.099007 L 123.589132 42.915453
L 132.043677 61.320605 L 132.043677 60.93087
L 140.498223 88.044346 L 140.498223 87.352226
L 148.952768 101.637048 L 148.952768 100.791124
L 157.407313 121.289429 L 157.407313 120.221134
L 165.861859 144.987765 L 165.861859 143.651317
L 174.316404 161.142101 L 174.316404 159.622864
L 182.77095 174.523853 L 182.77095 172.853198
L 191.225495 192.752986 L 191.225495 190.876064
L 199.680041 210.904952 L 199.680041 208.822637
L 208.134586 224.097422 L 208.134586 221.865831
L 216.589132 235.535292 L 216.589132 233.174279
L 225.043677 258.006234 L 225.043677 255.390957
L 233.498223 268.185831 L 233.498223 265.45537
L 241.952768 272.568929 L 241.952768 269.788872
L 250.407313 289.376885 L 250.407313 286.406642
L 258.861859 300.688477 L 258.861859 297.590241
L 267.316404 306.91783 L 267.316404 303.749107
L 275.77095 311.289308 L 275.77095 308.071122
L 284.225495 322.723967 L 284.225495 319.376394
L 292.680041 330.469039 L 292.680041 327.033829
L 301.134586 324.085947 L 301.134586 320.722964
L 309.589132 335.533019 L 309.589132 332.040509
L 318.043677 332.896636 L 318.043677 329.433957
L 326.498223 338.053137 L 326.498223 334.532111
L 334.952768 330.172964 L 334.952768 326.741104
L 343.407313 330.888595 L 343.407313 327.448638
L 351.861859 326.689493 L 351.861859 323.29705
L 360.316404 324.059497 L 360.316404 320.696813
L 368.77095 318.292606 L 368.77095 314.995175
L 377.225495 311.823795 L 377.225495 308.59956
L 385.680041 299.156953 L 385.680041 296.076046
L 394.134586 290.221989 L 394.134586 287.242183
L 402.589132 286.706456 L 402.589132 283.76643
L 411.043677 267.997505 L 411.043677 265.269175
L 419.498223 255.485033 L 419.498223 252.898284
L 427.952768 244.510382 L 427.952768 242.047814
L 436.407313 232.970176 L 436.407313 230.638188
L 444.861859 213.483239 L 444.861859 211.37175
L 453.316404 196.158532 L 453.316404 194.243076
L 461.77095 186.419547 L 461.77095 184.61429
L 470.225495 165.675835 L 470.225495 164.105297
L 478.680041 145.193348 L 478.680041 143.854574
L 487.134586 129.009071 L 487.134586 127.853425
L 495.589132 109.006208 L 495.589132 108.0769
L 504.043677 94.534031 L 504.043677 93.768479
L 512.498223 68.483117 L 512.498223 68.012336
L 520.952768 64.411407 L 520.952768 63.986699
L 529.407313 14.344547 L 529.407313 14.486356
L 530.636149 -1 L 530.661699 -1
M 570.124235 -1 M 570.099439 -1
L 571.680041 19.018027 L 571.680041 19.106955
L 574.9184 -1 L 574.970012 -1
" clip-path="url(#p2460b9deef)" style="fill: none; stroke: #ff0000; stroke-width: 1.5; stroke-linecap: square"/> " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke: #ff0000; stroke-width: 1.5; stroke-linecap: square"/>
</g> </g>
<g id="line2d_26"> <g id="line2d_26">
<path d="M 115.134304 41.657473 <path d="M 115.134304 41.490231
L 142.046671 90.698605 L 137.984427 92.919497
L 156.264525 116.143628 L 150.171159 119.792805
L 168.451257 137.501654 L 160.326769 141.665219
L 179.114648 155.746369 L 169.466818 160.825052
L 188.762478 171.82704 L 177.591306 177.357578
L 197.902527 186.633728 L 185.208014 192.37007
L 206.534795 200.192191 L 192.316941 205.909609
L 214.659284 212.539972 L 198.918088 218.03712
L 222.275991 223.723769 L 205.519234 229.703695
L 229.892699 234.502524 L 211.6126 240.037362
L 237.001626 244.176089 L 217.705967 249.929323
L 243.602772 252.807642 L 223.291552 258.590113
L 250.203919 261.086347 L 228.877138 266.845052
L 256.805066 268.998372 L 234.462723 274.678709
L 262.898432 275.964877 L 239.540528 281.422301
L 268.991798 282.597753 L 244.618333 287.795194
L 275.085164 288.887553 L 249.696139 293.787543
L 280.67075 294.344163 L 254.266163 298.847626
L 286.256335 299.498435 L 258.836188 303.585628
L 291.841921 304.344201 L 263.406212 307.99562
L 297.427506 308.875665 L 267.976237 312.072082
L 302.505311 312.717864 L 272.038481 315.411469
L 307.583116 316.292025 L 276.100725 318.479988
L 312.660922 319.594611 L 280.162969 321.274605
L 317.738727 322.622357 L 284.225213 323.792554
L 322.816532 325.37227 L 288.287457 326.031348
L 327.386556 327.60739 L 292.349701 327.988771
L 331.956581 329.613469 L 295.904165 329.469176
L 336.526605 331.388899 L 299.458628 330.731551
L 341.09663 332.932258 L 303.013092 331.774938
L 345.666655 334.24231 L 306.567555 332.598549
L 350.236679 335.318006 L 310.122019 333.20176
L 354.806704 336.158484 L 313.676483 333.584114
L 359.376728 336.763071 L 317.230946 333.745321
L 363.946753 337.131282 L 320.78541 333.68526
L 368.516777 337.262824 L 324.339873 333.403976
L 373.086802 337.157589 L 327.894337 332.901682
L 377.656826 336.815663 L 331.4488 332.178758
L 382.226851 336.23732 L 335.003264 331.235752
L 386.796876 335.423022 L 338.557727 330.073377
L 391.3669 334.373422 L 342.112191 328.692514
L 395.936925 333.089361 L 345.666655 327.094207
L 400.506949 331.571868 L 349.728899 325.002875
L 405.076974 329.822157 L 353.791143 322.631189
L 409.646998 327.84163 L 357.853387 319.981496
L 414.217023 325.631873 L 361.915631 317.056414
L 418.787048 323.194658 L 365.977875 313.858838
L 423.864853 320.222247 L 370.040119 310.391928
L 428.942658 316.974376 L 374.610143 306.173996
L 434.020463 313.454257 L 379.180168 301.624814
L 439.098268 309.665369 L 383.750193 296.750075
L 444.176073 305.611461 L 388.320217 291.555881
L 449.761659 300.850854 L 392.890242 286.04873
L 455.347244 295.780124 L 397.968047 279.571024
L 460.93283 290.405337 L 403.045852 272.725479
L 466.518415 284.732925 L 408.123657 265.522672
L 472.611781 278.213382 L 413.709243 257.200244
L 478.705148 271.357008 L 419.294828 248.474564
L 484.798514 264.173564 L 425.388194 238.51492
L 491.39966 256.034285 L 431.48156 228.116956
L 498.000807 247.536768 L 438.082707 216.384714
L 505.109734 238.001261 L 444.683854 204.195851
L 512.218661 228.08524 L 451.792781 190.595248
L 519.835369 217.060523 L 459.409488 175.523298
L 527.452076 205.645588 L 467.533976 158.934383
L 535.576564 193.068178 L 476.166245 140.801316
L 544.208833 179.285503 L 485.814075 120.014151
L 553.348882 164.264313 L 496.985246 95.405583
L 562.996712 147.983518 L 511.710881 62.381553
L 573.660103 129.549872 L 539.799506 -1
L 585.846835 108.018417 L 539.799506 -1
L 600.064689 82.429583 " clip-path="url(#pb3d46efa2c)" style="fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #0000ff; stroke-width: 1.5"/>
L 620.88369 44.446239 </g>
L 622.407031 41.657473 <g id="line2d_27">
L 622.407031 41.657473 <path d="M 115.134304 41.490231
" clip-path="url(#p2460b9deef)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #000000; stroke-width: 1.5"/> L 142.046671 89.976452
L 156.264525 115.133559
L 168.451257 136.249913
L 179.114648 154.288185
L 188.762478 170.1869
L 197.902527 184.826047
L 206.534795 198.231093
L 214.659284 210.439156
L 222.275991 221.496406
L 229.892699 232.153197
L 237.001626 241.717303
L 244.110553 250.893369
L 250.7117 259.05099
L 257.312846 266.845052
L 263.406212 273.70561
L 269.499578 280.235517
L 275.592944 286.425474
L 281.17853 291.793429
L 286.764116 296.861897
L 292.349701 301.624814
L 297.935287 306.076482
L 303.013092 309.84887
L 308.090897 313.355891
L 313.168702 316.594075
L 318.246507 319.560222
L 323.324312 322.251397
L 327.894337 324.43615
L 332.464361 326.394266
L 337.034386 328.124179
L 341.60441 329.624502
L 346.174435 330.894034
L 350.74446 331.931757
L 355.314484 332.736841
L 359.884509 333.30864
L 364.454533 333.646697
L 369.024558 333.750741
L 373.594582 333.620688
L 378.164607 333.256643
L 382.734632 332.658897
L 387.304656 331.827929
L 391.874681 330.764405
L 396.444705 329.469176
L 401.01473 327.943281
L 405.584754 326.18794
L 410.154779 324.204561
L 414.724804 321.994731
L 419.802609 319.275935
L 424.880414 316.282448
L 429.958219 313.017231
L 435.036024 309.483513
L 440.113829 305.684789
L 445.191634 301.624814
L 450.77722 296.861897
L 456.362805 291.793429
L 461.948391 286.425474
L 467.533976 280.764456
L 473.627342 274.26253
L 479.720709 267.429159
L 485.814075 260.274074
L 492.415221 252.171512
L 499.016368 243.716887
L 506.125295 234.234397
L 513.234222 224.378368
L 520.85093 213.425538
L 528.467637 202.090204
L 536.592125 189.606005
L 545.224394 175.931499
L 554.364443 161.034759
L 564.520053 144.035818
L 575.183444 125.751726
L 587.370176 104.410531
L 602.095811 78.156704
L 622.407031 41.490231
L 622.407031 41.490231
" clip-path="url(#pb3d46efa2c)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #000000; stroke-width: 1.5"/>
</g> </g>
<g id="patch_3"> <g id="patch_3">
<path d="M 64.407031 359.517188 <path d="M 64.407031 359.517187
L 64.407031 26.877187 L 64.407031 26.877187
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> " style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
</g> </g>
<g id="patch_4"> <g id="patch_4">
<path d="M 622.407031 359.517188 <path d="M 622.407031 359.517187
L 622.407031 26.877187 L 622.407031 26.877187
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> " style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
</g> </g>
@ -1198,27 +1272,27 @@ z
</g> </g>
<g id="legend_1"> <g id="legend_1">
<g id="patch_7"> <g id="patch_7">
<path d="M 386.501563 352.017188 <path d="M 230.704297 104.92875
L 611.907031 352.017188 L 456.109766 104.92875
Q 614.907031 352.017188 614.907031 349.017188 Q 459.109766 104.92875 459.109766 101.92875
L 614.907031 306.482813 L 459.109766 37.377187
Q 614.907031 303.482813 611.907031 303.482813 Q 459.109766 34.377187 456.109766 34.377187
L 386.501563 303.482813 L 230.704297 34.377187
Q 383.501563 303.482813 383.501563 306.482813 Q 227.704297 34.377187 227.704297 37.377187
L 383.501563 349.017188 L 227.704297 101.92875
Q 383.501563 352.017188 386.501563 352.017188 Q 227.704297 104.92875 230.704297 104.92875
z z
" style="fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter"/> " style="fill: #ffffff; opacity: 0.8; stroke: #cccccc; stroke-linejoin: miter"/>
</g> </g>
<g id="line2d_27"> <g id="line2d_28">
<path d="M 389.501563 315.630469 <path d="M 233.704297 46.524844
L 404.501563 315.630469 L 248.704297 46.524844
L 419.501563 315.630469 L 263.704297 46.524844
" style="fill: none; stroke: #ff0000; stroke-width: 1.5; stroke-linecap: square"/> " style="fill: none; stroke: #ff0000; stroke-width: 1.5; stroke-linecap: square"/>
</g> </g>
<g id="text_16"> <g id="text_16">
<!-- response (shaker table) --> <!-- response (shaker table) -->
<g transform="translate(431.501563 320.880469) scale(0.15 -0.15)"> <g transform="translate(275.704297 51.774844) scale(0.15 -0.15)">
<defs> <defs>
<path id="DejaVuSans-70" d="M 1159 525 <path id="DejaVuSans-70" d="M 1159 525
L 1159 -1331 L 1159 -1331
@ -1272,15 +1346,91 @@ z
<use xlink:href="#DejaVuSans-29" x="1143.685547"/> <use xlink:href="#DejaVuSans-29" x="1143.685547"/>
</g> </g>
</g> </g>
<g id="line2d_28"> <g id="line2d_29">
<path d="M 389.501563 337.647656 <path d="M 233.704297 68.542031
L 404.501563 337.647656 L 248.704297 68.542031
L 419.501563 337.647656 L 263.704297 68.542031
" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #000000; stroke-width: 1.5"/> " style="fill: none; stroke-dasharray: 9.6,2.4,1.5,2.4; stroke-dashoffset: 0; stroke: #0000ff; stroke-width: 1.5"/>
</g> </g>
<g id="text_17"> <g id="text_17">
<!-- realised profile -->
<g transform="translate(275.704297 73.792031) scale(0.15 -0.15)">
<defs>
<path id="DejaVuSans-64" d="M 2906 2969
L 2906 4863
L 3481 4863
L 3481 0
L 2906 0
L 2906 525
Q 2725 213 2448 61
Q 2172 -91 1784 -91
Q 1150 -91 751 415
Q 353 922 353 1747
Q 353 2572 751 3078
Q 1150 3584 1784 3584
Q 2172 3584 2448 3432
Q 2725 3281 2906 2969
z
M 947 1747
Q 947 1113 1208 752
Q 1469 391 1925 391
Q 2381 391 2643 752
Q 2906 1113 2906 1747
Q 2906 2381 2643 2742
Q 2381 3103 1925 3103
Q 1469 3103 1208 2742
Q 947 2381 947 1747
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-66" d="M 2375 4863
L 2375 4384
L 1825 4384
Q 1516 4384 1395 4259
Q 1275 4134 1275 3809
L 1275 3500
L 2222 3500
L 2222 3053
L 1275 3053
L 1275 0
L 697 0
L 697 3053
L 147 3053
L 147 3500
L 697 3500
L 697 3744
Q 697 4328 969 4595
Q 1241 4863 1831 4863
L 2375 4863
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-72"/>
<use xlink:href="#DejaVuSans-65" x="38.863281"/>
<use xlink:href="#DejaVuSans-61" x="100.386719"/>
<use xlink:href="#DejaVuSans-6c" x="161.666016"/>
<use xlink:href="#DejaVuSans-69" x="189.449219"/>
<use xlink:href="#DejaVuSans-73" x="217.232422"/>
<use xlink:href="#DejaVuSans-65" x="269.332031"/>
<use xlink:href="#DejaVuSans-64" x="330.855469"/>
<use xlink:href="#DejaVuSans-20" x="394.332031"/>
<use xlink:href="#DejaVuSans-70" x="426.119141"/>
<use xlink:href="#DejaVuSans-72" x="489.595703"/>
<use xlink:href="#DejaVuSans-6f" x="528.458984"/>
<use xlink:href="#DejaVuSans-66" x="589.640625"/>
<use xlink:href="#DejaVuSans-69" x="624.845703"/>
<use xlink:href="#DejaVuSans-6c" x="652.628906"/>
<use xlink:href="#DejaVuSans-65" x="680.412109"/>
</g>
</g>
<g id="line2d_30">
<path d="M 233.704297 90.559219
L 248.704297 90.559219
L 263.704297 90.559219
" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #000000; stroke-width: 1.5"/>
</g>
<g id="text_18">
<!-- qualification profile --> <!-- qualification profile -->
<g transform="translate(431.501563 342.897656) scale(0.15 -0.15)"> <g transform="translate(275.704297 95.809219) scale(0.15 -0.15)">
<defs> <defs>
<path id="DejaVuSans-71" d="M 947 1747 <path id="DejaVuSans-71" d="M 947 1747
Q 947 1113 1208 752 Q 947 1113 1208 752
@ -1329,27 +1479,6 @@ z
M 1991 3584 M 1991 3584
L 1991 3584 L 1991 3584
z z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-66" d="M 2375 4863
L 2375 4384
L 1825 4384
Q 1516 4384 1395 4259
Q 1275 4134 1275 3809
L 1275 3500
L 2222 3500
L 2222 3053
L 1275 3053
L 1275 0
L 697 0
L 697 3053
L 147 3053
L 147 3500
L 697 3500
L 697 3744
Q 697 4328 969 4595
Q 1241 4863 1831 4863
L 2375 4863
z
" transform="scale(0.015625)"/> " transform="scale(0.015625)"/>
</defs> </defs>
<use xlink:href="#DejaVuSans-71"/> <use xlink:href="#DejaVuSans-71"/>
@ -1379,7 +1508,7 @@ z
</g> </g>
</g> </g>
<defs> <defs>
<clipPath id="p2460b9deef"> <clipPath id="pb3d46efa2c">
<rect x="64.407031" y="26.877187" width="558" height="332.64"/> <rect x="64.407031" y="26.877187" width="558" height="332.64"/>
</clipPath> </clipPath>
</defs> </defs>

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 41 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 37 KiB

BIN
main.pdf

Binary file not shown.

248
main.tex
View File

@ -1119,7 +1119,7 @@ However, the OBDH was completely changed to use a Raspberry Pi Zero W in the sec
Some systems were simplified, such as the differential GNSS not being used on the final DAQ. RS-485 was also removed for board to board communication, except between the camera payload and the DAQ, since it was unnecessary given the short distance between DAQ boards. Some systems were simplified, such as the differential GNSS not being used on the final DAQ. RS-485 was also removed for board to board communication, except between the camera payload and the DAQ, since it was unnecessary given the short distance between DAQ boards.
\chapter{Final design of DAQ system} \chapter{Final design of DAQ}
The final DAQ system design is implemented using the design process described in \secref{sec:design-process}. The final DAQ system design is implemented using the design process described in \secref{sec:design-process}.
@ -1601,7 +1601,11 @@ Since POEM provides the location of the CubeSat and due to the speed and altitud
A differential GNSS (DGNSS) solution was considered and tested based on the u-blox ZED-F9P, however the drone test did not require the centimetre level precision of the ZED-F9P, so it was not used in the final design. A differential GNSS (DGNSS) solution was considered and tested based on the u-blox ZED-F9P, however the drone test did not require the centimetre level precision of the ZED-F9P, so it was not used in the final design.
\section{High-Power Rocket} \chapter{Final experiment design for HPR evaluation}
The design of the DAQ system is a precursor for the experiment to compare HPR to shaker table testing. Note that the results of the HPR and shaker table tests will also be used for evaluating the DAQ system in addition to the goal of evaluating the usefulness of HPR launches for qualifying CubeSats.
\section{High-Power Rocket Flight}
A custom rocket named \textit{UNO} was designed and built by another project member (Jamir Khan) from scratch, it has a height of 290 cm, diameter of $\SI{16.3}{\centi\metre}$ and a dry mass of $\SI{14.42}{\kilo\gram}$ without a motor. It was designed to fly with an M impulse class motor, however due to changes in United States export regulations it was not possible to obtain this motor in the time of this research, and therefore it was only possible to launch with a K impulse class motor which has about 1/10th of the total impulse of the N motor as shown in table \ref{tabl:impulseclasses}. All analysis following this assume a K1100T motor. A custom rocket named \textit{UNO} was designed and built by another project member (Jamir Khan) from scratch, it has a height of 290 cm, diameter of $\SI{16.3}{\centi\metre}$ and a dry mass of $\SI{14.42}{\kilo\gram}$ without a motor. It was designed to fly with an M impulse class motor, however due to changes in United States export regulations it was not possible to obtain this motor in the time of this research, and therefore it was only possible to launch with a K impulse class motor which has about 1/10th of the total impulse of the N motor as shown in table \ref{tabl:impulseclasses}. All analysis following this assume a K1100T motor.
@ -1642,7 +1646,7 @@ The rocket was simulated using OpenRocket \cite{openrocket,niskanen2009}, an ope
As shown in \ref{fig:openrocket-k-launch} the rocket reaches an apogee of \SI{413}{\metre} at \SI{9.74}{\second} and the total flight time is \SI{30}{\second}. As shown in \ref{fig:openrocket-k-launch} the rocket reaches an apogee of \SI{413}{\metre} at \SI{9.74}{\second} and the total flight time is \SI{30}{\second}.
\begin{figure}[H] \begin{figure}[H]
\includesvg[width=\textwidth]{images/k-ork-vertical.svg} \includesvg[width=0.8\textwidth]{images/k-ork-vertical.svg}
\caption{Flight profile of \textit{UNO} using a K1100T motor. Simulated in OpenRocket.} \caption{Flight profile of \textit{UNO} using a K1100T motor. Simulated in OpenRocket.}
\label{fig:openrocket-k-launch} \label{fig:openrocket-k-launch}
\end{figure} \end{figure}
@ -1653,7 +1657,7 @@ As shown in \ref{fig:openrocket-k-launch} the rocket reaches an apogee of \SI{41
As shown in figure \ref{fig:openrocket-k-stability}, the stability is above 2.0 calibres for the coast and launch phase, which is a general rule to ensure the rocket is stable and will not veer off course \cite{canepa2005modern}. The short moment of stability below 2.0 occurs when the rocket reaches apogee, which is not an issue since the parachutes are immediately deployed at this point. As shown in figure \ref{fig:openrocket-k-stability}, the stability is above 2.0 calibres for the coast and launch phase, which is a general rule to ensure the rocket is stable and will not veer off course \cite{canepa2005modern}. The short moment of stability below 2.0 occurs when the rocket reaches apogee, which is not an issue since the parachutes are immediately deployed at this point.
\begin{figure}[H] \begin{figure}[H]
\includesvg[width=\textwidth]{images/k-ork-stability.svg} \includesvg[width=0.8\textwidth]{images/k-ork-stability.svg}
\caption{Stability of \textit{UNO} using a K1100T motor. Simulated in OpenRocket.} \caption{Stability of \textit{UNO} using a K1100T motor. Simulated in OpenRocket.}
\label{fig:openrocket-k-stability} \label{fig:openrocket-k-stability}
\end{figure} \end{figure}
@ -1663,14 +1667,162 @@ As shown in figure \ref{fig:openrocket-k-stability}, the stability is above 2.0
As stated, since OpenRocket does not model the vibration environment in the rocket and models the rocket as one solid body, only the acceleration of the whole rocket can be modelled. Pyroshock events are not modelled by OpenRocket. The launch phase lasts only \SI{1.6}{\second} and has a high average acceleration of \SI{5.77}{\gacc}, as shown in \ref{fig:openrocket-k-acceleration}. During the coast phase, the rocket is decelerated by gravity as expected and after parachute deployment the rocket only has a small deceleration force. As stated, since OpenRocket does not model the vibration environment in the rocket and models the rocket as one solid body, only the acceleration of the whole rocket can be modelled. Pyroshock events are not modelled by OpenRocket. The launch phase lasts only \SI{1.6}{\second} and has a high average acceleration of \SI{5.77}{\gacc}, as shown in \ref{fig:openrocket-k-acceleration}. During the coast phase, the rocket is decelerated by gravity as expected and after parachute deployment the rocket only has a small deceleration force.
\begin{figure}[H] \begin{figure}[H]
\includesvg[width=\textwidth]{images/k-ork-acceleration.svg} \includesvg[width=0.8\textwidth]{images/k-ork-acceleration.svg}
\includesvg[width=\textwidth]{images/k-ork-acceleration-launch.svg} \includesvg[width=0.8\textwidth]{images/k-ork-acceleration-launch.svg}
\caption{Acceleration of \textit{UNO} using a K1100T motor over (top) the whole flight and (bottom) the thrust phase. Simulated in OpenRocket.} \caption{Acceleration of \textit{UNO} using a K1100T motor over (top) the whole flight and (bottom) the thrust phase. Simulated in OpenRocket.}
\label{fig:openrocket-k-acceleration} \label{fig:openrocket-k-acceleration}
\end{figure} \end{figure}
\chapter{Final design evaluation results and experiment results} \subsection{HPR Experiement Setup}
The CubeSat is mounted in the rocket \textit{UNO} payload bay through two wooden plates as shown in figure \ref{fig:hpr-mounting}. The rocket splits into multiple parts on the ground for assembly: the payload bay is in the middle of two parts, both have wooden bulkheads epoxied to the body. The payload assembly and the payload bay tube is placed in between the two rocket parts. The payload assembly is fixed to the top and bottom wooden bulkheads to fix it in place.
\begin{figure}[H]
\begin{subfigure}{0.495\textwidth}
\centering
\includegraphics[width=\linewidth]{images/cubesat-payload-bay.jpg}
\caption{CubeSat mounting hardware before mounting in \textit{UNO}.}
\end{subfigure}
\begin{subfigure}{0.495\textwidth}
\centering
\includegraphics[width=\linewidth]{images/camera-holes.jpg}
\caption{Camera holes in the side of the rocket body.}
\end{subfigure}
\caption{CubeSat in \textit{UNO} before launch.}
\label{fig:hpr-mounting}
\end{figure}
After mounting the DAQ payload and setting up recovery electronics and parachutes, the K1100T motor was mounted in the motor tube. The rocket was then transported to the launch pad where it was mounted vertically on a launch rail and a motor igniter was attached.
The rocket was launched remotely, and the DAQ continued to save accelerometer data during the flight. A video was taken during flight to label the response to certain flight events.
Once the rocket landed, it was safed by switching off power to the recovery electronics and the DAQ. The recovered rocket was transported back for disassembly and retrieval of the CubeSat.
\subsection{HPR data analysis}
After the rocket landed, the accelerometer data files were extracted from the Raspberry Pi's SD card and transferred to a computer. A Python notebook was created to process the data as follows:
\begin{itemize}
\item Unpack the binary flat file into a CSV.
\item Plot the CSV.
\item Visually identify the start of the flight which is characterised by a sustained increase acceleration for a few seconds.
\item Using video of the flight, identify the end of the flight and all key phases (including boost, coast and pyrotechnic events).
\item Separate the CSV into smaller CSVs which contain the boost and coast phases and pyroshock events.
\item For the boost and coast phases, which represent quasi-static acceleration and random vibration respectively, use Welch's method to obtain an estimation of the power spectral density.
\item For the pyroshock events, originally Welch's method would be used, however it was found that plotting the time-domain shock response was more valuable for this analysis due to frequency limitations of the both accelerometers in the DAQ and shaker table.
\end{itemize}
This process is summarised in figure \ref{fig:hpr-data-processing}.
\begin{figure}[H]
\centering
\includesvg[width=0.85\linewidth]{images/hpr-workflow.svg}
\caption{Data processing workflow for HPR accelerometer data.}
\label{fig:hpr-data-processing}
\end{figure}
\subsection{Shaker table experiment setup}
\section{Shaker table}
\label{sec:shaker-table-method}
The shaker table tests were performed at AVI on the \DTMdate{2024-09-25} using a Brüel \& Kjær LDS V8800 electrodynamic shaker table. The CubeSat was fixed to the shaker table using three bolts which went through the bottom plate.
A Brüel \& Kjær type 4533-B integrated electronics piezoelectric (IEPE) accelerometer was used as the control and data accelerometer, which were mounted to the shaker table and the payload respectively. This accelerometer has a frequency range of \SI{0.016}{\hertz} to \SI{1250}{\kilo\hertz} and a resonance frequency of \SI{36.7}{\kilo\hertz}, which is well above the range of the tests. The accelerometers were attached to mounting studs which were fixed to the CubeSat using bisphenol-A epoxy.
The table was first mounted in the vertical configuration and the CubeSat was mounted axially as shown in figure \ref{fig:shaker-axis-setup}. Random, sine-sweep and shock tests were performed, then the table was rotated manually \SI{90}{\degree} and the CubeSat re-mounted to conduct the same tests in the x-axis. The CubeSat was rotated \SI{90}{\degree} to finally test the y-axis.
\begin{figure}[H]
\begin{subfigure}{0.32\textwidth}
\includegraphics[width=\linewidth]{images/z-axis-setup.jpg}
\caption{z-axis}
\end{subfigure}
\begin{subfigure}{0.32\textwidth}
\includegraphics[width=\linewidth]{images/y-axis-setup.jpg}
\caption{y-axis}
\end{subfigure}
\begin{subfigure}{0.32\textwidth}
\includegraphics[width=\linewidth]{images/x-axis-setup.jpg}
\caption{x-axis}
\end{subfigure}
\caption{CubeSat setup in on the shaker table.}
\label{fig:shaker-axis-setup}
\end{figure}
\subsection{Random}
The IIST recommended random vibration profile described in table \ref{tabl:random-vibration-profile-iist} is used.
\subsection{Sine-sweep}
The sine-sweep profile described in table \ref{tabl:sine-sweep-profile-iist} was found to not be realisable on the shaker table since the profile described requires all three axes to be simultaneously driven. To replicate shaker table test where all three axes are simultaneously driven using one axis, the single axis must be driven with 2.5 times the $g_\text{rms}$ \cite{nath2022study}. A second attempt used the single-axis modified test shown in table \ref{tabl:sine-sweep-mod1}
\begin{table}[H]
\centering
\begin{tabular}{|c|c|c|c|}
\hline
\textbf{Frequency} & \textbf{Level} & \textbf{Sweep Rate} & \textbf{Axis} \\\hline
\SI{10}{\hertz} & \SI{13.198}{\gacc} & \SI{4}{\octave\per\minute} & Longitudinal \\\hline
\SI{12}{\hertz} & \SI{19.006}{\gacc} & \SI{4}{\octave\per\minute} & Longitudinal \\\hline
\SI{14}{\hertz} & \SI{25.869}{\gacc} & \SI{4}{\octave\per\minute} & Longitudinal \\\hline
\SIrange{16}{100}{\hertz} & \SI{32.79}{\gacc} & \SI{4}{\octave\per\minute} & Longitudinal \\\hline
\end{tabular}
\caption{First modification of IIST 3-axis sine-sweep profile to a single axis.}
\label{tabl:sine-sweep-mod1}
\end{table}
Due to the low frequencies with high acceleration, this profile was not realisable by the shaker table and resulted in an alarm being raised by the machine. Through trial and error it was found the profile described in table \ref{tabl:sine-sweep-mod2} was realisable. This profile discarded the low frequencies below \SI{30}{\hertz}.
\begin{table}[H]
\centering
\begin{tabular}{|c|c|c|c|}
\hline
\textbf{Frequency} & \textbf{Level} & \textbf{Sweep Rate} & \textbf{Axis} \\\hline
\SIrange{30}{100}{\hertz} & \SI{32.79}{\gacc} & \SI{4}{\octave\per\minute} & Longitudinal \\\hline
\end{tabular}
\caption{Realisable modification of IIST 3-axis sine-sweep profile.}
\label{tabl:sine-sweep-mod2}
\end{table}
\subsection{Shock}
Due to limitations of the shaker table, the shock time had to be reduced from \SI{10}{\milli\second} to \SI{8}{\milli\second}, which produced a shock which would over-qualify the CubeSat compared to the IIST recommended profile. The profile is shown in figure \ref{fig:shock-table-profile}
\begin{figure}[H]
\centering
\includesvg[width=\linewidth]{images/shock_table_profiel.svg}
\caption{Realised shock profile.}
\label{fig:shock-table-profile}
\end{figure}
\section{Evaluation of HPR as a CubeSat qualification platform}
Each part of flight is compared to one type of shaker table test as shown in table \ref{tabl:compare-tests}:
\begin{table}[H]
\centering
\begin{tabular}{|c|c|c|}
\hline
\textbf{HPR flight} & \textbf{Shaker table} & \textbf{Representation} \\\hline
Boost/launch & Sine-sweep (Quasi-static acceleration) & PSD \\\hline
Coast & Random vibration & PSD \\\hline
Pyroshock/parachute deployment & Shock & Time domain \\\hline
\end{tabular}
\caption{Comparisons between the two tests and their representation.}
\label{tabl:compare-tests}
\end{table}
Since the shaker table profiles are at or above the IIST recommended qualification level, for this research it will be assumed this is adequate to qualify for launch conditions.
HPR will be a successful qualification platform if:
\begin{itemize}
\item For PSD measurements the HPR PSD trace is equal to or greater than the PSD trace from the corresponding shaker table test.
\item For shock, the HPR pyroshock events should produce a shock response which has a half-sine profile time which is less than the shaker table response, and a peak acceleration which is greater than the shaker table response.
\end{itemize}
\chapter{DAQ evaluation and discussion}
\section{Drone tests} \section{Drone tests}
\subsection{First drone test} \subsection{First drone test}
@ -1796,25 +1948,6 @@ Thermal vacuum testing would be required to qualify the DAQ for space operations
\section{High-power rocket test flight} \section{High-power rocket test flight}
The CubeSat is mounted in the rocket \textit{UNO} payload bay through two wooden plates as shown in figure \ref{fig:hpr-mounting}. The rocket splits into multiple parts on the ground for assembly: the payload bay is in the middle of two parts, both have wooden bulkheads epoxied to the body. The payload assembly and the payload bay tube is placed in between the two rocket parts. The payload assembly is fixed to the top and bottom wooden bulkheads to fix it in place.
\begin{figure}[H]
\begin{subfigure}{0.495\textwidth}
\centering
\includegraphics[width=\linewidth]{images/cubesat-payload-bay.jpg}
\caption{CubeSat mounting hardware before mounting in \textit{UNO}.}
\end{subfigure}
\begin{subfigure}{0.495\textwidth}
\centering
\includegraphics[width=\linewidth]{images/camera-holes.jpg}
\caption{Camera holes in the side of the rocket body.}
\end{subfigure}
\caption{CubeSat in \textit{UNO} before launch.}
\label{fig:hpr-mounting}
\end{figure}
As stated due to motor supply issues, the only motor which was available for purchase was a K1100T motor which limited the height and acceleration of the rocket.
\textit{UNO} launched with the CubeSat on board on \DTMdate{2024-09-22} at \DTMdisplaytime{12}{52}. The launch and recovery was successful and the DAQ did capture accelerometer data and periodically broadcast uptime messages to the ground station. However, an issue is that the camera payload appears to have booted in an invalid state, resulting in no image being captured or transmitted. An LED on the camera payload was found to be constantly on, which indicates power that is being received, however this LED is only meant to be monetarily on at the beginning of an image capture. \textit{UNO} launched with the CubeSat on board on \DTMdate{2024-09-22} at \DTMdisplaytime{12}{52}. The launch and recovery was successful and the DAQ did capture accelerometer data and periodically broadcast uptime messages to the ground station. However, an issue is that the camera payload appears to have booted in an invalid state, resulting in no image being captured or transmitted. An LED on the camera payload was found to be constantly on, which indicates power that is being received, however this LED is only meant to be monetarily on at the beginning of an image capture.
Good acceleration data was captured from the LSM6DSOX accelerometer as shown in figure \ref{fig:flight-16g-time-domain}, however the ADXL375 accelerometer did not produce good data therefore its data was not used in the final analysis. As shown in figure \ref{fig:flight-200g-time-domain}, the data from the ADXL375 is not correlated with any major flight events and is highly noisy. Due to time limitations the cause of the bad data has not been determined. Good acceleration data was captured from the LSM6DSOX accelerometer as shown in figure \ref{fig:flight-16g-time-domain}, however the ADXL375 accelerometer did not produce good data therefore its data was not used in the final analysis. As shown in figure \ref{fig:flight-200g-time-domain}, the data from the ADXL375 is not correlated with any major flight events and is highly noisy. Due to time limitations the cause of the bad data has not been determined.
@ -1841,30 +1974,7 @@ It is speculated in post flight discussion that the camera failure was caused by
\section{Shaker table} \section{Shaker table}
The shaker table tests were performed at AVI on the \DTMdate{2024-09-25} using a Brüel \& Kjær LDS V8800 electrodynamic shaker table. The CubeSat was fixed to the shaker table using three bolts which went through the bottom plate. The shaker table tests were performed at AVI on the \DTMdate{2024-09-25} using the procedure described in \secref{sec:shaker-table-method}.
A Brüel \& Kjær type 4533-B integrated electronics piezoelectric (IEPE) accelerometer was used as the control and data accelerometer, which were mounted to the shaker table and the payload respectively. This accelerometer has a frequency range of \SI{0.016}{\hertz} to \SI{1250}{\kilo\hertz} and a resonance frequency of \SI{36.7}{\kilo\hertz}, which is well above the range of the tests. The accelerometers were attached to mounting studs which were fixed to the CubeSat using bisphenol-A epoxy.
The table was first mounted in the vertical configuration and the CubeSat was mounted axially as shown in figure \ref{fig:shaker-axis-setup}. Random, sine-sweep and shock tests were performed, then the table was rotated manually \SI{90}{\degree} and the CubeSat re-mounted to conduct the same tests in the x-axis. The CubeSat was rotated \SI{90}{\degree} to finally test the y-axis.
\begin{figure}[H]
\begin{subfigure}{0.32\textwidth}
\includegraphics[width=\linewidth]{images/z-axis-setup.jpg}
\caption{z-axis}
\end{subfigure}
\begin{subfigure}{0.32\textwidth}
\includegraphics[width=\linewidth]{images/y-axis-setup.jpg}
\caption{y-axis}
\end{subfigure}
\begin{subfigure}{0.32\textwidth}
\includegraphics[width=\linewidth]{images/x-axis-setup.jpg}
\caption{x-axis}
\end{subfigure}
\caption{CubeSat setup in on the shaker table.}
\label{fig:shaker-axis-setup}
\end{figure}
\subsection{Random} \subsection{Random}
@ -1879,41 +1989,11 @@ The random vibration profile described in table \ref{tabl:random-vibration-profi
\subsection{Sine-sweep} \subsection{Sine-sweep}
The sine-sweep profile described in table \ref{tabl:sine-sweep-profile-iist} was found to not be realisable on the shaker table since the profile described requires all three axes to be simultaneously driven. To replicate shaker table test where all three axes are simultaneously driven using one axis, the single axis must be driven with 2.5 times the $g_\text{rms}$ \cite{nath2022study}. A second attempt used the single-axis modified test shown in table \ref{tabl:sine-sweep-mod1}
\begin{table}[H]
\centering
\begin{tabular}{|c|c|c|c|}
\hline
\textbf{Frequency} & \textbf{Level} & \textbf{Sweep Rate} & \textbf{Axis} \\\hline
\SI{10}{\hertz} & \SI{13.198}{\gacc} & \SI{4}{\octave\per\minute} & Longitudinal \\\hline
\SI{12}{\hertz} & \SI{19.006}{\gacc} & \SI{4}{\octave\per\minute} & Longitudinal \\\hline
\SI{14}{\hertz} & \SI{25.869}{\gacc} & \SI{4}{\octave\per\minute} & Longitudinal \\\hline
\SIrange{16}{100}{\hertz} & \SI{32.79}{\gacc} & \SI{4}{\octave\per\minute} & Longitudinal \\\hline
\end{tabular}
\caption{First modification of IIST 3-axis sine-sweep profile to a single axis.}
\label{tabl:sine-sweep-mod1}
\end{table}
Due to the low frequencies with high acceleration, this profile was not realisable by the shaker table and resulted in an alarm being raised by the machine. Through trial and error it was found the profile described in table \ref{tabl:sine-sweep-mod2} was realisable. This profile discarded the low frequencies below \SI{30}{\hertz}.
\begin{table}[H]
\centering
\begin{tabular}{|c|c|c|c|}
\hline
\textbf{Frequency} & \textbf{Level} & \textbf{Sweep Rate} & \textbf{Axis} \\\hline
\SIrange{30}{100}{\hertz} & \SI{32.79}{\gacc} & \SI{4}{\octave\per\minute} & Longitudinal \\\hline
\end{tabular}
\caption{Realisable modification of IIST 3-axis sine-sweep profile.}
\label{tabl:sine-sweep-mod2}
\end{table}
Since this profile was heavily modified from the original IIST profile, the results of this test were not factored into the final experiment. Since this profile was heavily modified from the original IIST profile, the results of this test were not factored into the final experiment.
\subsection{Shock} \subsection{Shock}
Due to limitations of the shaker table, the shock time had to be reduced from \SI{10}{\milli\second} to \SI{8}{\milli\second}, which produced a shock which would over-qualify the CubeSat according to the IIST recommended profile. An example is shown in figure \ref{fig:shock-table-resp} The shock produced the response as shown in figure \ref{fig:shock-table-resp}.
\begin{figure}[H] \begin{figure}[H]
\centering \centering
@ -1935,8 +2015,11 @@ A result of the shock test is one of the 18650 batteries becoming unmounted from
Typically, during shaker table tests on the ground, a CubeSat may be supported with external equipment when it is supported by services provided by the satellite bus. This test shows that the concept is viable as an alternative to external equipment, however the DAQ system needs more work to protect it from high vibration environments, including spot welding batteries to the PCB instead of relying on leaf spring terminals. In this particular test, the batteries were not a problem since the two batteries on the sides were held by a cable tie. The reboot of the computer during the random vibration test likely indicates an issue with the quality of wiring harness or some loose element short-circuiting and causing issues. Typically, during shaker table tests on the ground, a CubeSat may be supported with external equipment when it is supported by services provided by the satellite bus. This test shows that the concept is viable as an alternative to external equipment, however the DAQ system needs more work to protect it from high vibration environments, including spot welding batteries to the PCB instead of relying on leaf spring terminals. In this particular test, the batteries were not a problem since the two batteries on the sides were held by a cable tie. The reboot of the computer during the random vibration test likely indicates an issue with the quality of wiring harness or some loose element short-circuiting and causing issues.
\chapter{Comparison of shaker table and HPR flight} \chapter{Evaluation of HPR flight as a qualification platform}
This chapter will answer the question of whether a HPR launch is an viable qualification platform and will evaluate the success of the experiement design.
TODO:
The system will be used for the vibration tests on a shaker table, and the rocket test. The data will be recorded as a time series on the OBDH memory. The time series data will be transformed into the frequency domain since existing studies have presented frequency domain plots to present and analyse the response of the system to a test \cite{nasa-pyroshock,nieto2019cubesat}. For the rocket test, the analysis will be split over the several phases of flight - launch, thrust, coast and parachute deployment events, since the forces involved are different in all of these phases. The system will be used for the vibration tests on a shaker table, and the rocket test. The data will be recorded as a time series on the OBDH memory. The time series data will be transformed into the frequency domain since existing studies have presented frequency domain plots to present and analyse the response of the system to a test \cite{nasa-pyroshock,nieto2019cubesat}. For the rocket test, the analysis will be split over the several phases of flight - launch, thrust, coast and parachute deployment events, since the forces involved are different in all of these phases.
\section{Shock} \section{Shock}
@ -1997,6 +2080,7 @@ Code and material from this research is available at the following git repositor
\begin{itemize} \begin{itemize}
\item \url{https://git.petertanner.dev/peter/Honours-DAQ-software} \item \url{https://git.petertanner.dev/peter/Honours-DAQ-software}
\item \url{https://git.petertanner.dev/peter/Honours-DAQ-PCB} \item \url{https://git.petertanner.dev/peter/Honours-DAQ-PCB}
\item \url{https://git.petertanner.dev/peter/Honours-Data-Processing}
\item \url{https://git.petertanner.dev/peter/Honours-Thesis} \item \url{https://git.petertanner.dev/peter/Honours-Thesis}
\end{itemize} \end{itemize}