Team
Andromeda


Andromeda Logo


Three-Dimensional Simulation and Visualization of Binary Asteroids

Team Andromeda is excited to be working on the Three-Dimensional Simulation and Visualization of Binary Asteroids project sponsored by Lowell Observatory. Our project aims to help our clients Dr. Audrey Thirouin and Dr. Will Grundy by improving the three-dimensional model generator they use to form characteristics of binary systems. Examples of such binary systems can be found in the Kuiper belt. Since binary systems in the Kuiper Belt are billions of kilometers away, the only information that can be gathered from a telescope on Earth is the system's relative brightness. This brightness can be used to create an observed light curve, which is a graph of the magnitude of light over time. The observed light curve can be compared to a predicted light curve generated by the model generator. Consequently, this comparison can be used to make inferences about the characteristics of these binary systems. By solidifying the characteristics of binary asteroids, Dr. Thirouin and Dr. Grundy can learn more about how these systems look and how they interact. Furthermore, studying these systems can progress research on early solar system formation.


The Team


Team Members

Batai Finley

Batai Finley

Team Communicator
NLM Developer

Bradley Kukuk

Bradley Kukuk

Release Manager
GUI Developer

Matthew Amato-Yarbrough

Matthew Amato-Yarbrough

Architect
NLM Developer



Jessica Smith

Jessica Smith

Editor
Triaxial Ellipsoid Developer

John Jacobelli

John Jacobelli

Team Lead
Recorder
Triaxial Ellipsoid Developer



Team Mentor
Audrey Thirouin

Isaac Shaffer



Sponsors
Audrey Thirouin

Audrey Thirouin
Research Scientist for Lowell Observatory


Will Grundy

Will Grundy
Astronomer for Lowell Observatory




Project Details


Project Description

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.


High Level Requirements

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.
Team Andromeda and our clients have discussed possible solutions and agreed upon the following requirements:
  • 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.


Envisioned Solution

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.



Technologies

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

fall schedule   spring 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.




Documentation



document

Team Inventory

September 27, 2019

This document's purpose is to briefly introduce the members of our team.

document

Team Standards

September 27, 2019

This document's purpose is to establish a common understanding of expectations and facilitate efficient and effective collaboration.

document

Tech Feasibility Draft

October 25, 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.



document

Tech Feasibility Final

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.

document

Design Review I

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.

document

Requirements Specification v1

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.





document

Technical Demo Memo

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.

document

HMC Tech Demo

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.

document

Requirements Specification v2

December 12, 2019

The purpose of this document is to break down the core requirements necessary to build a solution to satisfy the clients' vision, and is the second version which was signed by the clients.



document

Communications Strategy Memo

January 24, 2020

The purpose of this document is to describe the methods of communication that will be used by the team this semester.

document

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.

document

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.



document

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.

document

Design Review II

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.

document

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.



document

Software Testing Plan

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.

document

Design Review III

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.

document

User Manual

May 7, 2020

The purpose of this document is to provide users an overview of the the software and how to use it to its fullest extent. This guide covers installation, use, and troubleshooting, as well as other smaller topics.



document

Final Report

May 7, 2020

The purpose of this document is provide an extensive overview of the project. The document covers the process overview, requirements, architecture, testing, timeline, and future work of the project.





Demos


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 gif

Sila Nunam rendered with spheres





Sila Nunam Ellipsoid gif

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 object model

Roxane's model from the website above





Roxane

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.

NLM

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.

NLM

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.

NLM

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"