SOCIS 2017 Daniel Lubián - poliastro/poliastro GitHub Wiki
About Me
- Name: Daniel Lubián
- Age: 22
- GitHub: danbul
- GitLab: danlub
- Languages: Spanish (native), English, French
- Platforms: Linux, Windows 10
Studies and experience
During my studies in Aerospace Engineering in UPM, I have done several projects related to Numerical Analysis and Computational Fluid Dynamics and I have taken courses such as Orbital Mechanics and Space Vehicles. I have worked mostly with FORTRAN, Octave/Matlab and C.
For my BSc Thesis, I am developing a control system for the landing of the first stage of a launcher vehicle with Python, and to keep track of the changes of my code I am using git (repository in GitLab). For that, I am using numpy
, scipy
, matplotlib
, control
, numba
and IPython (at the moment).
Also, I've been an intern for three months in UAV Navigation, where I developed several models for the Flight Control department, using Matlab for prototyping and C/C++ for the final implementation.
Proposed Ideas
Some of the ideas that I think could be good:
- Add the 3-Body problem:
- Calculate Lagrange points: given two celestial bodies like Earth and the Sun, or the Earth and the Moon, obtain L1, L2, L3, L4 and L5
- For example, if I want to go from the Earth to Europa (one of the Galilean moons of Jupiter), I would surely have to take into account Jupiter. This could the most interesting application of this implementation
- Sphere of influence
- In relation with Lagrange points, one could implement "halo" orbits, but I believe that this could get out of hand, and may be of scope
- Add optimization functions, to get the best possible maneuver. With the right equations, should not be extremely difficult if we use
scipy.optimize
. This could take a long time to implement and mostly to test. Probably more than a "summer" - The ideas already suggested in the SOCIS Wiki page: Interactive Porkchop Plots, Interactive Orbit Visualization in 3D, and Low-thrust Maneuvers and Mission objects.
My Proposal
Objective: Develop new algorithms, expand the functionality and improve the usability of the library (documentation and visualization tools).
To prove my knowledge of Python, I will submit a function that returns the sphere of influence given two bodies and a date, or one that returns the Lagrange points given two bodies. Depends on what I find that I can do a faster and cleaner implementation. None of them should take long, but I have to go over the equations again and to take a deep look to poliastro
's and astropy
's documentation (for the latter I am not sure if is going to be needed, but is very probable). Update 2017-05-17 - Lagrange Points pull request
As I think that I know more in relation with Orbital Mechanics than plotting Python libraries, I would try to implement the low-thrust maneuvers (this). Also, I would enjoy more this. Mostly because I became very interested with a little research project about SMART-1 mission (for the Rocket Propulsion course), which uses an electric thruster, and those are the ones that provide a high specific impulse and a low thrust, the ones that would use this maneuvers.
Why not one of my proposed ideas? This seems to be a functionality that is more urgent for poliastro
, as the 3-body problem is an open issue since 2013 and I am not sure if is in the scope of the project. About the optimization functions, they have not been proposed (at least I have not seen any record of it, although I might have missed it) and it seems less urgent than the low-thrust maneuvers. Also, it is marked as advance and I like challenges.
Apart from that, I would also expand the documentation, try to close issues and prepare more examples. Depends on the time.
Timeline
- Weeks 1-2: Refresh my knowledge in Orbital Mechanics, read the MSc thesis and study the sources of
poliastro
profoundly. - Weeks 3-4: Deep study of the physics and mathematics of problem: look for references (I am sure that Battin will make his appearance here), read about its applications to plan for the best API that suites the needs, etc.
- Weeks 5-9: Develop the structure of the implementation, and code it.
- Weeks 9-12: Test with real examples and look for weak points, check for bugs (somehow there are some always), improve performance, prepare charts and write documentation.
Sidenotes
During the summer, I have to finish my BSc thesis. I will defend it probably on September, as I'd like to work more on it.
I should not forget to say that I will go on holidays the second half of August. The WiFi will not be good (probably), but I will work on this either way.
I am a passionate of space and I want to continue my career in this. Also, I am a FLOSS advocate and working on this is a good opportunity to know more about how this world works. Because of these two arguments, I will work very hard on this. I have the fundamentals of the theory of this problem, I know the tools, I have access to more information in my University and I have the needed enthusiasm for this.