I have been selected to work for AerospaceResearch.net under the Google Summer of Code program. Since I am a new contributer here, I think I should give a short introduction first. I am Arya Das, an undergraduate student of computer science at Indian Institute of Technology, Patna. I am highly passionate about space. I am also interested in robots, flight simulators, playing piano and swimming.
In this blog post I am going to describe my experience so far at AerospaceResearch.net and the project I am working on.
I came across AerospaceResearch.net when browsing through GSoC organizations. It offered projects both in my field of interests and academic domain. I had to make a hard choice between DirectDemod and VisMa and I finally chose VisMa as my project for GSoC.
This is my first GSoC dev log (more to come). Here I will be blogging about what I learned, what I have done and what I will do. So following is the work I have done in VisMa.
Done so far…
I used the community bonding period to fix minor errors and get more familiar with the source. I restructured the code base so that new modules could be accommodated. Code duplication was reduced using proper imports between modules. New modules like calculus, transform, solvers, gui etc were initialized. A token IDing module was written to handle equations during calculus operations.
Again for the 4th time, AerospaceResearch.net is proud to be selected as an official mentoring organization for the Summer of Code 2018 (GSOC) program run by Google.
And we are now looking for students to spend their summers coding on great open-source space software, getting paid up to 6600 USD by Google, releasing scientific papers about their projects and supporting the open-source space community.
Until 27. March 2018, students can apply for an hands on experience with applied space programs. As an umbrella organisation, AerospaceResearch.net and KSat-Stuttgart e.V. are offering you various coding ideas to work on:
The Distributed Ground Station Network – global tracking and communication with small-satellites
KSat-Stuttgart – the small satellite society at the Institute of Space Systems / University of Stuttgart
It is time again for Hacktoberfest and we already took part in it with our projects. On the 7th of October, we joined people in shackspace, Stuttgart to work on open-source projects by creating pull-requests.
The goal Hacktoberfest was and still is to that everyone creates at least 4 pull-requests by adding new features or fixing bugs to the software projects and earning a free and limited edition T-shirt by doing so. We did so with 2 projects already…
Seit April 2016 züchten wir so automatisch wie möglich Pflanzen. Erst Kresse inzwischen auch Phacelia und später vielleicht Gänseblümchen. Verwendet wurden hierbei alte RaspberryPIs, IKEA-Samla-Boxen und Sensoren, die noch in unseren Projekt-Boxen schlummerten. Nach über 100 Wachstumszyklen (vom Sähen bis „Ernten“) haben wir einige Fails erlebt: Schimmel (diverse), zu viel Wasser, zu wenig Wasser, Sensordefekte, Internetausfälle und menschliche Unachtsamkeit. Es wurden über 400000 Photos und über 2 Millionen Sensorwerte gespeichert. Um den fehleranfälligsten und wichtigsten Sensor (Wasserstand in der Box) zu ersetzen wurden Classifier trainiert. (Tensorflow, Convolutional-Neural-Network) Wir würden euch gerne von unseren Erfahrungen berichten.
The Universal Space Operations Center, USOC, is an open-source tool that allows a simple and easy creation of a working groundstation to aid (student) space projects.
Due to the fact that the functionality of every experiment should be checked before lift-off, a communication software for up- und downlink is required. USOC follows a generic approach and offers the possibility to write this software automatically using a configuration file. The program structure is divided into three main components:
Graphical user interface (GUI)
Controller for interaction between communication software and graphical user interface
Based on the input of the user in the configuration file, the GUI and partially also the controllers can be written automatically. In this matter, USOC generates appropriate functionalities within the controllers for individual GUI contents, which can then be adapted manually. Changes in the configuration file are detected, localized and the corresponding GUI structures and controller functionalities are regenerated. If these are manually written functionalities, they are recognized and not overwritten. USOC also brings pre-coded functions, such as communication via serial ports and/or the Iridium satellite network, as well as a three-dimensional visualization of GNSS data. For further details of these functions, I would like to refer to the GSoC2017 project of Valentin Starlinger, whose blog post can be reached here.
In this way, essential parts of a ground segment software can be created quickly and easily. Because of the wide diversity concerning the experiments in the space sector, people from all over the world can use USOC and add functionalities for their individual project to develop and extend the Universal Space Operations Center.
Mathematics is the field of science which is very vast, and the backbone for all other fields of science. It supports the development of new technologies, and in the development of new technologies. Mathematics plays a very important role in any kind of research and development. I was responsible for developing VisMa, a new project for AerospaceResearch.net under Google Summer of Code – 2017. VisMa, created to create a platform which could solve algebraic equations and perform several other complex functions on it like root finding, integration and differentiation.
The project aims to help people solve complex problems and learn. It can help students in learning concepts. It can be used in research-oriented, double-checking the solution to problems.
After the proposal was accepted. The one month community bonding period. I was mostly interacting with Manfred Ehresmann and Andreas Hornig from time to time.
Since this is a new project, a community bonding period has been used. Some GUI mock ups were created by me, so that’s it. The resources for the planning phase and GUI mock ups are available here . This is the first time I use OpenGL, and PyQT 4.0.
Coding period started from 1st June, PyQT 4.0 was used to build the GUI. Some key features of VisMa’s GUI were dynamic buttons. This is the first step in the process. VisMa also has scope for multiple styles of input, for now it’s just normal and LaTeX style. VisMa wants to be able to store a history of older expressions. PyQT had a slight learning curve, but event based programming was pretty straight forward.
Each module was created it such a way that they are independent from all the other modules. This allows us to make changes in one module without effecting any other module. Also allows us to just plug in the modules, and use it with the software with minimal integration steps required.
Iridium is a satellite communication system, previously mainly used for satellite phone calls and remote control and tracking of scientific instruments or trucks. Recently, however, more and more lightweight modules were introduced to the market which allow for new applications in vehicles such as high-altitude balloons and miniaturized spacecraft.
The goal for my GSOC development was to improve the existing ground station coded for the MIRKA2-RX KSat experiment in order to get a more flexible and versatile platform that can be easily modified and fitted to the needs of any experiment.
CubeSats is a class of nanosatellites that uses a standard size and form factor. The standard CubeSat size is one unit or 1U measuring 10x10x10 cms and is extendable to larger sizes; 1.5, 2, 3, 6, and even 12U. Originally developed in 1999 by California Polytechnic State University of San Luis Obispo (Cal Poly) and Stanford University to provide a platform for education and space exploration. The development of CubeSats has expanded its industry, academy, and industry with ever-increasing capabilities. CubeSats now provides a cost-effective platform for science investigations, new technology demonstrations and advanced mission concepts using constellations, swarms disaggregated systems.
While CubeSats came into the picture for it’s low cost of manufacturing with many small to medium sized individuals. So through this project.
This project is made using python-3.x or python 2.7. Python libraries used for this project are
Except for PyQt4 all other libraries can be installed using python package manager. Installation of PyQt4 depends on the distribution. Detailed guide for installation of requirements is available here .
In 2017 Google summer of code I was involved in the project by AerospaceResearch.net called „Orbit position data analysis and interpolation“. Mainly, the project focused on methods and techniques that are used to preliminary determine a satellite orbit. More specifically, we initially had positional data sets in the format of (time, x, y, z) and we applied to them some smoothing – filtering techniques (Savintzky – Golay, Triple moving average) and then some methods for preliminary orbit determination (Lambert’s solution, Spline Interpolation). This project was created from scratch, meaning no prior work has been done. It was also applied not only to me, but also to another GSOC student Nilesh Chaturvedi, with whom we had great communication and cooperation leading to some good and interesting working results. The mentor of the project was Andreas Hornig and his insights and guidance provided us lots of help. Before I continue describing some more technical aspects of the project I would like to point out the github repository, which includes all the coding we did as part of the program and the documentation link for the project.
The programming language used for the project was Python 3.4 / 3.5 and libraries that are a core part of the project are Numpy, Matplotlib, Scipy, Pykep and Pytest. The very first coding I did as part of the program was, to get familiar with the data sets we are dealing with and try to perform some basic statistical filtering and create some graphs with matplotlib. Then, I dived deep into smoothing techniques and tried a lot of methods like median filters, FIR filters and Kalman but after many tests, I decided to use the Savintzky – Golay filter which was giving the best results for this kind of data I had. After applying the filter to my data set I quickly moved into creating some code for finding the keplerian elements (keplerian elements = orbit of the satellite) for all these data points I have. I researched a bit about methods for preliminary orbit determination and decided to go for Lambert’s solution and more specifically I decided to use Pykep library which has the method already implemented. So for every 2 points of the 8000 points data (leading to 7999 solutions) set I had, I solved the orbit determination problem and found lots of orbits. Now from all those 7999 different orbits described by 6 keplerian elements, I wanted to find the best approximation and I used Kalman filters to do that exactly. The results at first were not that good but combining my filter with Nilesh’s Triple moving average I managed to get some good approximations. After that, I created code for one more method for preliminary orbit determination called Gibb’s method. That algorithm though was really slow and it was not included in the final version of the program. One future plan I have for the program is to make this algorithm more „light“ so I can include it. Finally, lots of results are printed and graphs about the initial data, filtered data and final orbit are made to ensure the good presentation of the final computations. Into the whole process, lots of sub – functions and calculations needed to take place and they are located in the util directory. Into that directory a user can find algorithms that can transform cartesian to spherical coordinates, two algorithms to transform state vectors to keplerian elements and vice versa, one algorithm with a numerical integration method so that we make the final graph and one for finding the window for the Savintzky – Golay filter.
After finishing the core structure of the program the part of testing arrived, which was divided into two aspects. First was the unit testing with pytest and then massive testing with lots of satellite position data to find what combinations of algorithms function best or what windows and parameters I need to apply to the filters. For the first part, I created 15 general tests that achieved a pretty good coverage.