-
-
Notifications
You must be signed in to change notification settings - Fork 214
ENH: Implementing 3-dof-simulation #745
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ENH: Implementing 3-dof-simulation #745
Conversation
ENH: adds 3 DOF simulation capability to rocketpy.Flight. *ENH: added "u_dot_3dof" for "solid_propulsion" mode *ENH: adding "u_dot_generalized_3dof" for "standard" mode (still incomplete) *ENH: new parameter "simulation_mode" for swtiching between 3 dof and 6 dof *ENH: updated conditions for "__init_equations_of_motion" *ENH: 2 new example files have been created to test 3 dof model "test_bella_lui_flight_sim" and "test_camoes_flight_sim"
|
Thank you for your interest in implementing 3-DOF in RocketPy, @aZira371 . I will try to take a better look into it, but I notice one thing already: use
|
ENH: adds 3 DOF simulation capability to rocketpy.Flight. *ENH: added "u_dot_3dof" for "solid_propulsion" mode *ENH: added "u_dot_generalized_3dof" for "standard" mode *ENH: new parameter "simulation_mode" for swtiching between 3 dof and 6 dof *ENH: updated conditions for "__init_equations_of_motion"
ENH: fixed standard 3 dof *MNT: Cleaned up the "u_dot_3dof" and "u_dot_generalized_3_dof" *MNT: Corrected Typos in "simulation_mode" description *ENH: "u_dot_generalized_3_dof" fixed and tested on examples.
|
2931c30 to
7864590
Compare
…into enh/3-dof-simulation
…otor ENH: added "BaseRocket" and "PointMassRocket" to rocket class ENH: added "PointMassMotor" to motor class with various input cases of thrust values
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #745 +/- ##
===========================================
- Coverage 80.27% 80.26% -0.02%
===========================================
Files 104 106 +2
Lines 12769 12979 +210
===========================================
+ Hits 10250 10417 +167
- Misses 2519 2562 +43 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…e tests ENH: Added a new jupyter notebook for a simplified 3 DOF example MNT: PointMassMotor intialization error fixed MNT: PointMassRocket properties enhanced based on the example runs
MNT: Cleaned up the flight class u_dot_generalized_3dof TODO: Add info for 3 dof cases and fix some new issues when parachute is added.
…cketPy into enh/3-dof-simulation
-MNT: removing the parameters not needed for point mass kind of motors -MNT: removing extra parameter thrust_curve -MNT: fixing problems with motor class inheritance
-ENH: removed 'BaseRocket' class now 'PointMassRocket' inherits directly from 'Rocket' class
-MNT: fixed calculations of mass flow rate and exhaust velocity -MNT: adjusted propellant initial mass setter error by allocating the input initial mass to the property
MNT: renaming pointmassmotor.py -MNT:snake case renaming
…ization and clarity
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 13 out of 13 changed files in this pull request and generated 15 comments.
Gui-FernandesBR
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The PR looks good. Main points missing for me that could be easily appended to a following PR:
- There are still no "sanity-check" tests for the results. We could probably make an "acceptance" test for it, by picking up a known battle-tested
Flightand hoping for the landing coordinates being close. The tolerances for it are a point worth discussing. Maybe even comparing to a parabolic trajectory might give some insight (for sanity-checking a ballisticFlight); - Still on the validation side: results should be pretty close if one runs a bare-bones
Rocketin 6-DOF, right? - Some tests lack proper docstrings;
- Smaller comments I left throughout my review.
I'm fine proceeding with a merge here, but the first point for me is important before releasing the feature.
| @cached_property | ||
| def center_of_propellant_mass(self): | ||
| """Center of propellant mass is always zero""" | ||
| return Function(0.0) | ||
|
|
||
| # Propellant inertias: always zero, but return as Function objects | ||
| def _zero_inertia_func(self): | ||
| return Function(0.0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Annoying, but I would discretize both based on self.thrust to ensure consistency/speed for the outputs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could elaborate what you mean by discretize here exactly?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Check above lines from the same file, there should be a .set_discrete_based_on_model call somewhere. This is done to optimize the code for speed, keeping the data crunching based on arrays (instead of lambdas).
Agreed on the first and second point. I can run a 3 DOF example of one of the already existing examples and see how it works. From there we will also be able to understand tolerances. |
* docs: Update test docstrings to follow RocketPy style guidelines Co-authored-by: aZira371 <[email protected]> --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: aZira371 <[email protected]>
@Gui-FernandesBR @phmbressan just a small note on how the Weathercocking Model Works:
|
|
@phmbressan thank you for the quick response. I will merge this PR as this is becoming quite dated now. |




Pull request type
Checklist
black rocketpy/ tests/) has passed locallypytest tests -m slow --runslow) have passed locallyCHANGELOG.mdhas been updated (if relevant)Current behavior
for issue #655
New behavior
(DRAFT)
ENH: adds 3 DOF simulation capability to rocketpy.Flight.
*ENH: added "u_dot_3dof" for "solid_propulsion"
mode
*ENH: adding "u_dot_generalized_3dof" for "standard" mode (still incomplete)
*ENH: new parameter "simulation_mode" for swtiching between 3 dof and 6 dof
*ENH: updated conditions for "__init_equations_of_motion"
*ENH: 2 new example files have been created to test 3 dof model "test_bella_lui_flight_sim" and "test_camoes_flight_sim"
Breaking change
Additional information
This is a draft pull request!
Equations of motion have been modified in such a way that values related to various rotational dofs is set to zero.