-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Codebase for the accepted version of the paper
- Loading branch information
0 parents
commit dc45313
Showing
89 changed files
with
18,492 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
name: Pylint | ||
|
||
on: [push] | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-20.04 | ||
strategy: | ||
matrix: | ||
python-version: ["3.8"] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Set up Python ${{ matrix.python-version }} | ||
uses: actions/setup-python@v3 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
#Current changes from default are: camelCase (preference), line length 100 -> 200 (wide monitors and preference), | ||
#Regex to make variable names 3-40 characters, gives hint | ||
#Removed i,j,k,ex,Run,_ as good names. Added dt and ax, as they are widely used and universal in python. | ||
#import-error disabled (since running on github we assume the user will set up their environment) | ||
#too-many-arguments disabled for now (consider refactoring later to have more compact parameter passing, currently think it is fine) | ||
#Same with too-many-function-args | ||
#too-many-locals disabled for now (consider refactoring later along with less arguments, as the lead to each other. Currently think it is fine) | ||
#ignored-argument-names used as a hack for dummy arguments for now. | ||
- name: Install dependencies and configure | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install pylint | ||
pylint --generate-rcfile > ~/.pylintrc | ||
sed -i 's/snake_case/camelCase/g' ~/.pylintrc | ||
sed -i 's/max-line-length=100/max-line-length=200/g' ~/.pylintrc | ||
sed -i 's/good-names-rgxs=/good-names-rgxs=[a-z_][a-z0-9_]{2,40}/g' ~/.pylintrc | ||
sed -i 's/include-naming-hint=no/include-naming-hint=yes/g' ~/.pylintrc | ||
sed -i 's/good-names=i,/good-names=dt,ax,iii,/g' ~/.pylintrc | ||
sed -i 's/ j,/ jjj,/g' ~/.pylintrc | ||
sed -i 's/ k,/ kkk,/g' ~/.pylintrc | ||
sed -i 's/ ex,/ exx,/g' ~/.pylintrc | ||
sed -i 's/ Run,/ run,/g' ~/.pylintrc | ||
sed -i 's/ _/ iii/g' ~/.pylintrc | ||
sed -i 's/ j,/ jjj,/g' ~/.pylintrc | ||
sed -i 's/bad-names=/bad-names=i,j,k,/g' ~/.pylintrc | ||
sed -i 's/disable=/disable=import-error,too-many-arguments,too-many-function-args,too-many-locals,duplicate-code,/g' ~/.pylintrc | ||
sed -i 's/ignored-argument-names=_.*|^ignored_|^unused_/ignored-argument-names=_.*|^ignored_|^unused_|dummy/g' ~/.pylintrc | ||
- name: Analyzing the code with pylint | ||
run: | | ||
pylint $(git ls-files '*.py') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
SavedData/* | ||
*/SavedData/* | ||
|
||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
*.py[cod] | ||
installNoiseTesting.sh | ||
*.swp | ||
failurePy/utility/CalibrationData/* | ||
*checkpoint.ipynb | ||
failurePy/utility/test.ipynb | ||
failurePy/visualization/.ipynb_checkpoints/FTC Paper Visualization-checkpoint.ipynb | ||
|
||
failurePy/visualization/*.pdf | ||
failurePy.egg-info/* | ||
dFailurePy.egg-info/* | ||
.config/config.yml | ||
.config/hosts.yml | ||
failurePy/.DS_Store | ||
failurePy/.config/config.yml | ||
failurePy/.config/hosts.yml | ||
SavedData/* | ||
*/SavedData/* | ||
|
||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
*.py[cod] | ||
installNoiseTesting.sh | ||
*.swp | ||
failurePy/utility/CalibrationData/* | ||
*checkpoint.ipynb | ||
failurePy/utility/test.ipynb | ||
failurePy/visualization/.ipynb_checkpoints/FTC Paper Visualization-checkpoint.ipynb | ||
|
||
failurePy/visualization/*.pdf | ||
failurePy.egg-info/* | ||
dFailurePy.egg-info/* | ||
*.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
{ | ||
// Use IntelliSense to learn about possible attributes. | ||
// Hover to view descriptions of existing attributes. | ||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 | ||
"version": "0.2.0", | ||
"configurations": [ | ||
{ | ||
"name": "Python: Pipeline", | ||
"type": "python", | ||
"request": "launch", | ||
"program": "failurePy/pipeline.py", | ||
"justMyCode": false, | ||
//"cwd": "failurePy", | ||
"args": [ | ||
//"--configFilePath", | ||
"./failurePy/config/safetyNonLinearModelTest4.yaml" | ||
] | ||
} | ||
//{ | ||
// "name": "Python: Remove Tree Data", | ||
// "type": "python", | ||
// "request": "launch", | ||
// "program": "utility/savedTreeRemover.py", | ||
// "justMyCode": false, | ||
// "cwd": "failurePy" | ||
//} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
{ | ||
"python.analysis.diagnosticSeverityOverrides": { //Disable rerportMissingImports, as VS Code seems to miss local imports (and because using VS code in windows and conda env in WSL seems to be cause missed imports too) | ||
"reportMissingImports": "none", | ||
"reportMissingModuleSource": "none", | ||
"todohighlight.keywords": [ | ||
"DEBUG:", | ||
], | ||
}, | ||
"cSpell.words": [ | ||
"argnames", | ||
"edgecolor", | ||
"fejekf", | ||
"fejkalman", | ||
"fontsize""horizontalalignment", | ||
"Labbe", | ||
"pcov" | ||
], | ||
"python.REPL.enableREPLSmartSend": false | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
Copyright 2024 James Ragan. | ||
|
||
The data and code here are for personal and educational use only and provided without warranty; written permission from the authors is required for further use. Please cite our work when the article is published. | ||
|
||
FilterPy library adapted under MIT license, copyright 2014-2018 Roger R Labbe Jr. Full license in readme.md located here http://github.com/rlabbe/filterpy |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
#Example showing our binary fault model under an averse fault like the simulations shown in our paper. | ||
#Initiate experiment by running "python pipeline.py ./config/binaryFaultModelExample.yaml" in the failurePy directory | ||
nSimulationsPerTree: #This is a list of simulation levels to run | ||
- 200 | ||
|
||
nTrialsPerPoint: 1 #How many times to repeat each experiment configuration | ||
|
||
dim: 3 | ||
linear: False | ||
spacecraftMass: 1 | ||
spacecraftMoment: 4 | ||
sigmaW: | ||
- 0.2 | ||
- 0.2 | ||
- 0.01 | ||
sigmaV: .4 | ||
discretization: .125 | ||
dt: 1 | ||
|
||
numWheels: 2 | ||
providedFailure: #1 indicates nominal, 0 indicates failure | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 0 | ||
- 0 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
|
||
maxNumActions: 20 | ||
rngKeysOffset: 0 | ||
actionRNGSeed: 0 # Actions are selected randomly, but same for every trial | ||
|
||
#Not letting simulation break early to enforce safety over full experiment | ||
diagnosisThreshold: 1.1 | ||
nMaxComponentFailures: 3 | ||
|
||
initialState: | ||
- 0 | ||
- 0 | ||
- 0 #Giving 10 time steps until collision | ||
- -1 | ||
- 0 | ||
- 0 | ||
- 0 | ||
- 0 | ||
|
||
nExperimentSteps: 15 #Didn't see any noticeable changes with more time steps, so less to run faster | ||
|
||
solverFList: | ||
- sFEAST | ||
#- cbf #Baseline methods, to use, note "nSimulationsPerTree" must be 1 | ||
#- greedy | ||
#- scp | ||
|
||
estimator: marginalizedFilter | ||
physicalStateSubEstimator: ekf #Required sub filter if using marginal filter | ||
reward: squareSumFailureBeliefReward | ||
|
||
safetyMethod: safetyConstrainedReward | ||
safetyFunctionEvaluation: chebyshev | ||
allowableFailureChance: .10 | ||
safetyFunction: worstCase | ||
safetyConstraints: #Should be nested list, constraint, and parameters | ||
- - circularObstacleConstraint | ||
- - 10 #Radius (Currently obstacle + s/c radius) | ||
- - 0 #center x | ||
- -20 #center y | ||
#- - circularSafeZoneConstraint | ||
# - - 30 #Radius (Currently safe zone - s/c radius) | ||
# - - 0 #center x | ||
# - 0 #center y | ||
#Square constraint, normal matrix, offset | ||
- - linearSafeZoneConstraint #Of form Ax - b < 0, need all to be satisfied. Here is is a 60x60 rect around origin | ||
- - - - 1 #First row of A matrix, should be external normals | ||
- 0 | ||
- - -1 #next row of A matrix | ||
- 0 | ||
- - 0 | ||
- 1 | ||
- - 0 | ||
- -1 | ||
- - 25 #First offset | ||
- 25 | ||
- 25 | ||
- 25 | ||
|
||
saveDirectoryPath: binaryExample | ||
clobber: True #Overwrites data when true! | ||
|
||
nMaxPossibleFailures: 40 | ||
|
||
#Plotting config | ||
plottingExtent: 30 | ||
resolution: 100 | ||
|
||
generalFaultFlag: False | ||
|
||
particleResampleType: gaussian | ||
particleResampleCheck: never | ||
particleInitializationFunction: biasedRandomRedundant #Biased to 1/2 chance to be nominal, biases repeated x5 | ||
|
||
saveTreeFlag: True #Visualizes the tree search, but this must be disabled when running more than one trial, as it produces a lot of data | ||
|
||
multiprocessingFlag: False #To enable multiprocessing (useful when running any trials per point), type a number to represent how many CPU cores should NOT be used by failurePy. Note this can have undefined behavior if more cores are provided than trials are run | ||
discountFactor: 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
nSimulationsPerTree: | ||
- 0 | ||
#- 20 | ||
- 80 | ||
- 200 | ||
- 600 | ||
#- 1000 | ||
- 2000 | ||
nTrialsPerPoint: 1 | ||
dim: 3 | ||
linear: false | ||
spacecraftMass: 1 | ||
spacecraftMoment: 4 | ||
sigmaW: | ||
- 0.2 | ||
- 0.2 | ||
- 0.01 | ||
sigmaV: 0.4 | ||
discretization: 0.125 | ||
dt: 1 | ||
nExperimentSteps: 15 | ||
saveTrajectory: true | ||
providedFailure: | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 0 | ||
- 0 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
- 1 | ||
maxNumActions: 20 | ||
rngKeysOffset: 0 | ||
actionRNGSeed: 0 | ||
diagnosisThreshold: 1.9 | ||
nMaxComponentFailures: 3 | ||
initialState: | ||
- 0 | ||
- 0 | ||
- 0 | ||
- -1 | ||
- 0 | ||
- 0 | ||
- 0 | ||
- 0 | ||
solverFList: | ||
- SFEAST | ||
estimator: marginalizedFilter | ||
physicalStateSubEstimator: ekf | ||
reward: squareSumFailureBeliefReward | ||
safetyMethod: safetyConstrainedReward | ||
penalty: 0 | ||
safetyFunctionEvaluation: chebyshev | ||
allowableFailureChance: 0.1 | ||
safetyFunction: worstCase | ||
safetyConstraints: | ||
- - circularObstacleConstraint | ||
- - 10 | ||
- - 0 | ||
- -20 | ||
- - linearSafeZoneConstraint | ||
- - - - 1 | ||
- 0 | ||
- - -1 | ||
- 0 | ||
- - 0 | ||
- 1 | ||
- - 0 | ||
- -1 | ||
- - 25 | ||
- 25 | ||
- 25 | ||
- 25 | ||
saveDirectoryPath: figure5/binaryAdverseCrashCourse | ||
clobber: false | ||
nMaxPossibleFailures: 40 | ||
saveTreeFlag: false | ||
multiprocessingFlag: 10 | ||
plottingExtent: 30 | ||
resolution: 400 | ||
hardwareEmulationFlag: false | ||
filterDivergenceHandlingMethod: acceptDiagnosisBeforeNan | ||
discountFactor: 1 |
Oops, something went wrong.