rdoddanavar / hpr-sim Goto Github PK
View Code? Open in Web Editor NEW6DOF Flight Simulation for High Power Model Rocketry
Home Page: https://rdoddanavar.github.io/hpr-sim/
License: GNU General Public License v3.0
6DOF Flight Simulation for High Power Model Rocketry
Home Page: https://rdoddanavar.github.io/hpr-sim/
License: GNU General Public License v3.0
*.h
vs *.hpp
--> header files in project are strictly C++ compatible via pybind11
Discussion: https://stackoverflow.com/questions/152555/h-or-hpp-for-your-class-definitions?rq=1
Commit initial environment.yml
style file to root directory. Freeze python3 & dependency versions.
Proposed preproc_model.py
that defines parsing routines specific to model input files; ex. aero model, prop model, etc.
Model file format TBD; ideally minimal work needed to condition RASAero for sim input
Module should create data suitable for initializing aero model
How can I release the memory used by Model
derived objects after their associated flight completes? Do I call their destructor from the python side?
Provide more flexibility w/ interpolation options; currently, interpolation method is hard-coded to gsl_interp_steffen
Considerations for launch rail effects on EOM:
When are rail interactions over?
Geodetic model for gravitational acceleration, as a function of altitude and global location. Keeping it simple for now....
Probably going to use basic WGS-84 w/ altitude dependence as described in Eq. (4-3) in NGA.STND.0036 v1.0.0: https://earth-info.nga.mil/GandG/publications/NGA_STND_0036_1_0_0_WGS84/NGA.STND.0036_1.0.0_WGS84.pdf
In the future think about upgrading to Eq. (4-4) to better model altitude dependence (up to 20e3 m)
Define a class function similar to Param::check_value()
to validate the string value
against a valid set of strings defined in config_param.yaml
Implement class that defines utilities for managing the internal state of a physical model:
Possible methods/functions:
Bash script to update directory index in README.md
as project develops
Implement test script that finds program execution time
Simplify load_input.py
by removing nested getattr()
calls with one of these solutions: https://stackoverflow.com/questions/31174295/getattr-and-setattr-on-nested-objects
Function convert(*args)
:
1.0
returned for unspecified or nondimensional unitsTelem
("telemetry") class
Develop build settings and test routine to profile C++ pybind11 modules for runtime efficiency & memory usage. Use gprof
in some way (or sprof
)?
Implement ODE utilities using solvers provided by GNU GSL
Documentation: https://www.gnu.org/software/gsl/doc/html/ode-initval.html
Initial build against Eigen library. Should not need a separate CMake target, simply link to header directories:
We use the CMake build system, but only to build the documentation and unit-tests, and to automate installation.
If you just want to use Eigen, you can use the header files right away.
There is no binary library to link to, and no configured header file.
Eigen is a pure template library defined in the headers
Control which fields are accessible during input parameter assignment. Forces user to modify config_param.yml
when changing hidden fields
User input:
value
unit
dist
& relatedConfig only:
min
max
quantity
path
(for Name
class)Target specific release of dependencies using corresponding SHA tag(s)
Define a parameter class similar to Param
or Name
that handles boolean input
Class data:
bool value
Class functions:
bool check_value()
Class derived from model
to provide mass props during runtime:
Proposed preproc_model.py
that defines parsing routines specific to model input files; ex. aero model, prop model, etc.
Engine model file format: http://www.thrustcurve.org/raspformat.shtml
Module should create data suitable for initializing prop model
Error handling against check_value() and check_path(); consider moving routines to python away from C++ member functions
Master python script that executes python & cpp subroutines. Takes command line argument(s) of input file paths
ex. (CLI) $ python3 exec.py myinput.yaml
Integrate Travis CI service with .travis.yml
in root directory.
Revisit:
__init.py__
filessrc/
subdirectories to system pathEigen linear algebra library (C++)
Update Geodetic::update()
routine to reflect more detailed models described in NGA.STND.0036_1.0.0_WGS84
Figure out the binding necessary to make Param
a template class, to handle additional input types beyond float
:
Implement U.S. Standard Atmosphere 1976
Quick check w/ MATLAB's ode45
to make sure my solver in GSL is working; 1DOF, no atmos/drag, just thrust & gravity
Extend YAML capabilities:
ref( ... )
eval( ... )
or expr( ... )
Implement lambda functions in config_unit.yml
w/ corresponding routine in util_unit.py
to handle more complex unit conversions
CPP routine that generates random sequence given seed (int
) and desired distribution (string
), using the <random>
library: http://www.cplusplus.com/reference/random/
Multiprocessing capability w/ RNG
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.