Team
Andromeda
Team Members
Team Communicator
NLM Developer
Release Manager
GUI Developer
Architect
NLM Developer
Editor
Triaxial Ellipsoid Developer
Team Lead
Recorder
Triaxial Ellipsoid Developer
Isaac Shaffer
Our project, Three-Dimensional Simulation and Visualization of Binary Asteroids, is an expansion of the Paired Planet Technologies' light curve modeling project. The light curve modeling project was able to generate a light curve and efficiently use ray tracing to render binary systems in the form of either a sphere or a faceted object. Team Andromeda is currently focusing on expanding the three-dimensional simulator. This expansion will include adding a triaxial ellipsoid shape, a nonlinear minimization algorithm, a graphical user interface, and a video generator. With the addition of these components, our clients will have a well-rounded light curve generator with an efficient forward model interface.
There are a few aspects of our project that require advancements. The underlying issues are as follows:
- Binaries can be modeled only as either sphere objects, which have low detail but fast rendering speed, or faceted objects, which have high detail but low rendering speed.
- Our clients must manually test for likely parameters for an observed system when attempting to model it.
- The current solution lacks a robust interface, forcing our clients to enter over fifty parameters into a command line to use the program.
- The images from the simulation are not automatically created into a video.
- A triaxial ellipsoid object will be added to the list of renderable shapes.
- A nonlinear minimizer algorithm will be implemented to provide estimated parameters for a predicted light curve.
- A C++ GUI using the Qt framework will take input for the 56 parameters needed to create the model and graph the produced light curve.
- A script to create a video from the renders generated by the model.
We are building a GUI that will improve how our clients interact with
the forward model. Adding the new ellipsoid module will mitigate render
speed versus accuracy issues. The video generator will cut down on time
for our clients' workflow. Most importantly, our clients can input their
observed parameters and generate a predicted light curve calculated by
nonlinear minimization. These new features will provide users with an efficient
and accessible solution to the aforementioned problems.
The current API was developed using C and C++, therefore, our software will be
developed using these languages. With these requirements in mind, our features
will provide our clients with the following benefits:
- Triaxial Ellipsoids: The addition of triaxial ellipsoids gives users the option of rendering a shape that is more detailed than a sphere and renders faster than a faceted object.
- Nonlinear Minimization (NLM): Using nonlinear minimization, our clients can generate estimates for a predicted light curve quicker than manual calculations.
- GUI: Developing a Qt-based GUI that interfaces with the forward model provides our clients with an improved user interface that facilitates user control and API implementation.
- Video Generator: There will be a script that creates a video of the shape rendered by the forward model, cutting down the time spent for the user piecing together the renders.
Our project requires a variety of technologies to create a robust and stable solution to the problem requirements our clients have presented to us. The technologies used in this project are listed below:
- C++ as our primary language: Paired Planet Technologies, the development team that worked on the initial iteration of this project, decided to use C++, along with wrappers in C and IDL, as their main programming language. This is because C++ is fast and is an object-oriented language. Our team decided to continue using C++ for consistency within the code, as well as for the reasons given by Paired Planet Technologies.
- Qt library for building the forward model's GUI: Qt is a C++ framework that can be used to create beautiful user interfaces. The Qt library is simple, compatible with all major operating systems, and has a wide range of customizable options in terms of interface building. Qmake will be used to compile the GUI.
- Nonlinear minimization for estimating parameters for predicted light curves: Nonlinear minimization is a method that multi-dimensionally minimizes a chi-square function. This provides a minimum chi-square comparison of predicted light curves, produced by the forward model, to the observed light curves.
- FFmpeg framework for compiling images produced by the forward model into a video: FFmpeg is a free and open-source framework suited for handling video, audio, and other multimedia files. FFmpeg is a lightweight alternative to producing video files from images, making it straightforward to incorporate into our project. Furthermore, it is compatible with C++.
- Git for version control: We use GitHub to host all of the code. It allows our team to make changes to the existing code base on separate branches, thoroughly test the code, and deploy the code to our project's master branch.
- CMake building and packaging: CMake is used in order to manage the dependencies within the project, as well as make it easier to add additional files. Moreover, makefiles were generated using CMake, cutting back on the required time and maintenance that it would take to write the makefiles by hand.
- GoogleTest for code testing: We used GoogleTest in order to easily construct C++ based tests that could be run in GitHub, as well as on our own machines.
Schedule
Above are the team's schedules for each semester. They give an overview of where the team was for each week of the project, as well as a breakdown of where each feature was for that week.
September 27, 2019
This document's purpose is to establish a common understanding of
expectations and facilitate efficient and effective collaboration.
November 8, 2019
The purpose of this document is to layout our approach for adding HMC, triaxial ellipsoids,
a GUI, and a video generator to the current API.
November 22, 2019
This slideshow looks at the design of our project to give a high level overview of our requirements,
as well as an example of an in depth breakdown for one of our requirements.
November 25, 2019
The purpose of this document is to break down the core requirements
necessary to build a solution to satisfy the clients' vision.
November 25, 2019
The purpose of this document is to detail the technology demo performed
by the team at the end of the semester in order to prove familiarity with the project.
December 10, 2019
The purpose of this document is to demo HMC to see how it functions,
and to gain insight about adding it to our software.
January 24, 2020
The purpose of this document is to describe the methods of communication that
will be used by the team this semester.
Installing/Using HMC Dependencies on Linux
February 4, 2020
The purpose of this document is to provide a walkthrough of how to install and use
dependencies that are required of HMC on Linux.
Software Design Document Draft
February 5, 2020
The purpose of this document is to draft out the design of our software, including architecture
and a complete breakdown of all features.
Software Design Document Final
February 21, 2020
The purpose of this document is to flesh out the design of our software, including architecture
and a complete breakdown of all features.
February 28, 2020
The purpose of this presentation is to look at the design of our project, give a high level overview of our requirements,
and give an example of an in depth breakdown for one of our requirements. It also examines some demos and challenges faced.
Requirements Specification Addendum
March 3, 2020
The purpose of this document is to describe the new technology that will be used in place of HMC,
as it was deemed too difficult to implement in this iteration of the project.
April 3, 2020
The purpose of this document is to detail the tests that will be utilized to ensure the software
performs as expected and achieves the standards of the clients.
April 10, 2020
The purpose of this presentation is to look at the design of our project, give a high level overview of our requirements,
and give an example of an in depth breakdown for one of our requirements. It also examines testing that will be carried out.
This tab contains renders of the ellipsoid shape:
Below are two gifs which represent the binary system Sila Nunam.
Sila Nunam is a classic cold binary system and is used a in a lot of our tests.
Thus, we believe that having a demo of it is appropriate. The image on the left is an
example of a render with spheres, an object already implemented. The image on the right
is the same test but replaced with ellipsoids. This was to test and confirm that
ellipsoids could behave like spheres and that the lighting was correct.
Sila Nunam rendered with spheres
Sila Nunam rendered with ellipsoids
The next demo we have encapsulates all of the aspects of ellipsoids that were implemented in one: accurately sizing the ellipsoid, orientation of the spin pole, rotation of the ellipsoid, and correct lighting. This asteroid, 317 Roxane, is located within the Asteroid Belt. The image on the left is an oject model render of Roxane, which was obtained from this website. The image on the right is the render of Roxane using an ellipsoid to model it. Visually, it may look off due to the camera's perspective, but the orientation is correct.
Roxane's model from the website above
Roxane's render using an ellipsoid from our software
This tab contains a video demonstration of the nonlinear minimizer (NLM):
In order to utilize the NLM module, users will first have to provide the module with an input file using the specified format that is outlined in the image below. This input file will allow the user to specify the values they want to use for forward model parameters to produce predicted light curves that will be used for comparison against observed light curves in the minimization process. More importantly, this input file will allow users to choose which parameters they want to estimate. This is done by changing the chosen parameters corresponding ‘Fit’ value from ‘N’ to ‘Y’. Parameters that can not be estimated have a default value of ‘U’ in the ‘Fit’ column.
After the input file has been parsed and the predicted light curve has been generated, comparison against a chosen observed light curve can begin. During this process output may be displayed showing the modules steps through the parameter space determined by the users choice of forward model parameters to be estimated. As the NLM module moves closer towards the optimized parameter estimates the chi-square value will decrease.
Finally, once the NLM module has finished exploring the specified parameter space, users will have the option to view and/or save graphed outputs of the predicted light curve produced with optimized parameters against the observed light curve.
We have compiled a video demonstrating the typical use case of the NLM module. We have provided the video below.
Download Video: "Nonlinear Minimizer Demo"
This tab contains a GUI overview:
The Graphical User Interface (GUI) was created to help streamline the process of running the light curve generator from the licht-cpp library. It takes in all the users input and then will generate a light curve that will be displayed to the screen, where the user will be able to analyse the data, and then change the data as needed. The GUI also will be able to take in any observed light curve and generate a graph from the data provided. At this point the user has the ability to plot the predicted data vs the observed data. Below is a video overviewing the GUI.
Download Video: "GUI Demo"