Summarizing GSoC 2021

By Yash

This page describes the work done during Google Summer of Code 2021 with poliastro. I added some space event detectors under the twobody problem by implementing raw orbital mechanics algorithms (inside poliastro.core) accelerated by the numba.jit() decorator (in the nopython compilation mode, as was customary in poliastro). It uses the events parameter from scipy.integrate.solve_ivp for tracking events and numerical integration. The required condition is checked at each time instance for an event occurence.

The validation cases for the events were developed against the orekit software, using the Orekit Python Wrapper, and some additional tests were added for investigating edge-cases. The user guide for the added events and some plotting results using poliastro’s plotting capabilities, can be found here.

Added events (so far…)

  • Altitude Crossing #1254.
    • The already existing LithobrakeEvent was made to inherit this event …

August updates

This month Yash has been wrapping up his Google of Summer of Code work by adding eclipse event detection, node crossing event detection, and fixing the propagation logic for non-terminal events. Besides, Yash is also writing a new how-to guide for the event detection that we hope to get merged soon. Jorge has been thoroughly reviewing all that work and adding validation cases when appropriate.

Libre Space Foundation published a summary of Yash work, you can read it on their blog.

Adding the Altitude, Latitude, and Eclipse event detectors

By Yash

It was an engaging first half of GSoC, and it was during this duration, I understood some critical details of executing the event detectors. We started to look into the eclipse detector since we thought it might be challenging to get it right.

In the weekly community calls, we brainstormed over an appropriate method that would fit in poliastro. Thanks to SciPy’s events support through solve_ivp, we just had to come up with a time-varying and continuous “shadow” function without having to solve analytical equations manually. However, the critical challenge for us was to come up with such an equation! After a few trials of geometric manipulations and Jorge and Juanlu’s assistance, we came across an equation involving classical orbital elements that could serve our purpose. We were still questioning the performance and complexity of the method since …

July updates

This month the poliastro repository has crossed ⭐️ 500 GitHub stars ⭐️, thanks everyone for believing in the project!

Juan Luis released version 0.15.2 with a fix for newer astroquery versions, as well as compatibility with Plotly 5.0, which allows users to install all the required JupyterLab extensions without Node.js. This will make the installation process much easier!

Yash and Jorge had a very productive month: after a lot of discussion in our weekly community calls and several rounds of code reviews, we finally have eclipse event detection merged! Yash has passed the first Google Summer of Code evaluation with flying colors and will publish an entry in our blog soon. The work Jorge did on our validation infrastructure as part of the NumFOCUS Small Development Grant has proven to be extremely useful. In addition, Yash has also …

GSoC 2021, the journey begins!

By Yash

The initial days…

Hi there! I am Yash, and I will be spending this summer with poliastro as part of GSoC 2021 to add some event detection capabilities. It was around December when I first learned about poliastro, and it gradually got me fascinated by orbital mechanics.

While preparing to make my first pull request, poliastro's comprehensive documentation and tutorials came to the rescue! It was much needed for a beginner like me who had just stepped into the field of Astrodynamics. This was a period when I thoroughly enjoyed interacting with the community and learning orbital mechanics while simultaneously learning the best practices in software development.

Building up ideas and our aspirations for this summer!

After deciding to submit a proposal for the event detection project, I started brainstorming and looking for several references keeping in mind their relevance …

April updates

The first (and hopefully) only beta of poliastro 0.15 is out! 🎉 It took us a bit longer to get this release out, but we are happy that poliastro 0.15 is now around the corner. We will soon write detailed release notes and a proper announcement for it, and in the meanwhile you can read the preliminary poliastro 0.15 changelog.

Juan Luis revamped our website a bit, by adjusting our domain names and improving the navigation bar (twice). Besides, he has finished the reorganization of our docs following the Diátaxis Framework by Daniele Procida, prepared for the upcoming Sphinx 4.0 release, and updated our installation and contribution instructions.

Jorge has finished validating our planetary transformations against GMAT and Orekit, which required reaching out to the Orekit developers and adjusting one outdated constant in poliastro. This wraps up …

February updates

By Juan Luis Cano Rodríguez

poliastro finally landed support for Python 3.9, thanks to the fine folks of numba! Their release candidate already works with the newest Python release, and we've been told that the stable release is around the corner. This means that the next stable release of poliastro will also support it 🚀

On the validation side, Jorge has been working on more enhancements, and we have finally confirmed that our 3D impulsive maneuvers give the same result as GMAT and Orekit! You can read the full details in this blog post.

And finally, we have made some small improvements on the development side, by fixing some continuous integration small failures, reducing the number of warnings in our tests, and other small fixes. Thanks Yash, Dhruv, zkl2, and Souhit!

Impulsive 3D maneuvers have been validated!

As part of the NumFOCUS small development grants, the poliastro/validation repository has increased its activity in order to reach its main goal: validate poliastro's most complex features against similar software.

One of those features are impulsive maneuvers (Hohmann and Bi-elliptic) when applied to non-equatorial orbits. The absence of numerical results in literature and similar sources, made impossible to test associated pieces of code to impulsive maneuvers for orbits with inclination and spacecraft not placed in periapsis. However, this situation has changed, as they are now validated against Orekit and GMAT.

Bi-elliptic transfer in GMAT Bi-elliptic transfer in GMAT

You can see corresponding pull-request for Hohmann validation and Bi-elliptic validation. Not only that, a continuous integration tool has been setup. This ensures that if any bug is introduced within main poliastro source code, we can detect it and fix it without any problem.

One interesting thing is that …

January updates

By Juan Luis Cano Rodríguez

We got awarded a Small Development Grant by NumFOCUS to validate poliastro against commercial and non-commercial similar applications! 🎉 Jorge started by setting GitHub Actions to trigger the validations automatically, validating our conversion between cartesian and Keplerian elements against Orekit, and is now fighting some discrepancies with Hohmann transfers.

On the development front, while we wait for Numba to release Python 3.9-compatible wheels for our next release, we refactored our Cowell propagator to make the code simpler and more numba-friendly, we tried to merge Eleftheria's implementation of the Escobal method for satellite visibility (and sadly got blocked in the process), and kept working on our analysis of Walker constellations for the OpenSatCom activity. We also engaged with the authors of the awesome numbakit-ode to rewrite our Cowell method using numba, but found some issues along the way and we decided …

This is an end of an era

By Meuge

Contributing to Poliastro has been an incredible experience for me. Since it was the first time, I've participated in GSOC. And the first time I've ever approached to package dedicated to problems arising in Astrodynamics and Orbital Mechanics. Being part of Poliastro was an exciting challenge that I had to surmount and also an unbelievable opportunity to learn about Space, Math and Physics.


With the thorough knowledge learned, and the feedback from JuanLu and Jorge, I was able to overcome every challenge in my Poliastro's journey. As I had said when I had the opportunity, I am grateful to both of my mentors who accepted me to be part of this exceptional community. :)



What we have achieved in the past three months: