SOCIS 2017 Daniel Lubián - poliastro/poliastro GitHub Wiki

About Me

  • Name: Daniel Lubián
  • Age: 22
  • GitHub: danbul
  • GitLab: danlub
  • LinkedIn
  • 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.