Awards & Nominations

Imperial Rocks has received the following awards and nominations. Way to go!

Global Nominee

LumiRo.cc - An interactive asteroid light curve exploration webapp

High-Level Project Summary

The Imperial Rocks team developed an interactive web application to educate the wider public about the problem of asteroid light curves. Existing rendering engines were used to present the user an adjustable simulation of rotating 3D bodies and their light curves. Many parameters such as the direction of the light source and rotation rates about all axes can be adjusted at runtime with UI elements.An effort was made to develop and utilize physically accurate models of light behavior which achieved limited success. These include: utilizing an existing renderer with ray tracing support, developing a simple ray tracing renderer and research into the unusual optical properties of regolith.

Link to Final Project

Detailed Project Description

GitHub Repository

Working WebApp


The ability to determine the geometry of an asteroid accurately serves many useful scientific purposes. Higher fidelity knowledge of asteroid shapes will provide more information regarding their behaviour and formation, which in turn provides valuable insight into the formation and evolution of our Solar System and its constituent bodies. It also has applications in Near Earth Object (NEO) identification and analysis, as an asteroid’s shape will affect its size, orbital dynamics and attitude dynamics, which allows scientists to better model potential close encounter (or impact) trajectories with Earth, as well as the asteroid’s behaviour once it enters the Earth’s atmosphere.


Owing to the insufficient resolving power of Earth and near Earth based observation methods, the only available remotely-gathered visual information is the asteroid’s light curve. This curve describes the intensity of reflected light over time. Asteroids have complex and irregular geometries as well as varying chemical composition, which makes geometric inference from light curves a non-trivial issue. Current methods involve statistical inference and more recently machine learning algorithms, however developing more robust techniques is very much an active area of astronomical research. In order to garner public awareness for this field, we decided to create a web app which aims to educate about light curves in an interesting, accessible and interactive way. We noted that there were currently no apps that popularize, educate or allow a lay user to explore the problem of asteroid light curves, which is why we aimed to develop LumiRocc for this target audience.

Since our app intends to enable the wider public to explore the topic of light curves, we put effort into its presentability and attractivity. We decided that it would be critical to show the user with both the rotating 3D model as well as its corresponding light curve side by side. Furthermore, the user must be able to responsively edit the parameters of the simulation in order to increase the interactivity.


We used a range of technologies in our submission. JavaScript formed the core of our app with the three.js library and its community raytracing extension being used for the 3D rendering. The expectation of wider use drove our simple, sleek and thematic grey themed UI using existing UI libraries such as materializecss and material.io in order to improve the quality and speed up development.


During the mid-to-final development stages of our submitted project demo, we started exploring future avenues of improvement. Time constraints also resulted in a number of near completed features, which were not integrated into the final project demo, however the code is available to view and redistribute on GitHub .


Another way to improve the modeling was to incorporate orbital dynamics into the model, by allowing the user to insert right ascension and declination data (either by inserting a name, IAU identifier or by direct manual entry) of the studied asteroid at a given date and time, which upon using ephemeris data accessed via API from the NASA Horizons System could allow for the phase angle to be calculated and therefore determine the light source direction. This was developed in a MATLAB script for returning the phase angle for a particular date; however it could be expanded to work on a range of dates, showing how the light curve profile varies over time as the Earth, Sun and asteroid move along their orbital paths.


The current project assumes that all surfaces of the asteroid exhibit a uniform and constant albedo at all wavelengths. Another way to improve the model would be to allow the user to specify material properties to the asteroid surface, altering the albedo properties both location-wise and with respect to the incident wavelength of light. This could be used to replicate and model how different sensors and instruments employing different wavelengths of light would measure the same body.


The project demo displays and uses a model rendered with rasterization, the standard in real time 3D graphics, due to being significantly faster. It however, does not accurately capture surface reflections and shadows. Implementing proper real time ray-tracing into the web app would solve these limitations (however, at the expense of performance) and improve the accuracy of the light curve simulations. This allows for the project’s applicability to expand beyond general public education and towards academic or scientific purposes. Both open-source and homebrewed path-tracing algorithms were developed and tested.


After implementing the above improvements, the quality of the simulations could be deemed accurate enough to develop a set of training data for reinforcement learning algorithms. This could then be applied to augment the measurement methodologies currently used to determine asteroid geometry.

Space Agency Data

For the demo we used a 3D model of the asteroid (8567) 1996 HW1 obtained from the NASA 3D Resources website. Besides, we included other asteroid 3D models from 3D Asteroid Catalogue, which in turn sources part of their models from space probe missions as well as radar imaging obtained from the JPL Asteroid RADAR Research website.


When calculating the phase angles as part of future development we used ephemeris data for the Sun from the NASA JPL Horizons system, accessed via an API. Ephemeris data for the asteroid (101955) Bennu was used to validate the code. The Small-Body Database produced by the JPL Solar System Dynamics group proved to be a useful database for researching the albedos of various asteroids.

Hackathon Journey

We came into the project excited: we had an impulse to learn about 3D graphics and empirically space rocks since our alternative top choice was the challenge “Artfully Illuminated Asteroids”. In the end we chose “When Light Curves Throw Us Curve Balls” because of it being more suitable for an iterative approach with many milestones, making it more appropriate for a hackathon-type submission.


This hackathon was very much a learning experience for us. We chose to challenge ourselves to create a 3D web app having barely any experience with 3D graphics and half of us not being very familiar with web development. This led to many frustrating moments when code that should have been working was not, but almost always we prevailed and either solved the problem or worked around it. The hackathon also strengthened our soft skills, as working in a group is very different compared to most of our assignments at university. We had to express and reconcile our diverse opinions, and we managed to come up with creative ideas without sparking conflict.


Still, there were quite a few lines of development that we would have loved to pursue further if we had more time. In the beginning we explored the possibility of writing a python ray-tracing engine from scratch which would have allowed us to implement custom models for the light behaviour of regolith. Ultimately the approach was abandoned as its early versions proved too slow to be practical, especially if it was to be interpreted in browser.


Due to the challenge of judging the difficulty of the tasks, we adopted an iterative approach to our design. We achieved a functional prototype two thirds of the way in and then spent the remaining time improving, polishing and adding new features. The key features that we wanted in the app were the 3D rendering window, some degree of control over the simulation and a chart of the illuminance, to emulate the light curves. So we divided the work, with João working mainly on the theory and physical modelling that we expected to need for a more accurate simulation, Vaclav working on the ray tracing support, Matvey working on the 3D rendering framework and Michal working on the graphing and integration.


With much to learn and figure out, we expected things to go wrong often and tried to work around it as much as possible. We knew from the start that ray-tracing, even implemented properly with WebGL, would not be completely in real time. We took that as an opportunity to diversify our risk a little, since having a real time 3D rendering was central to the app. We pursued two paths of development, one of pure rasterized three.js rendering, which was to be used as the live preview, and the three.js ray-traced rendering, which would not be real time, but would be used to generate the data points for the illuminance graph. We expected that if either path were to hit an insurmountable issue, that we would be able to fall back to the other renderer. In the end this proved very useful because while not hitting a complete roadblock, the ray-traced rendering development was much slower and within the time we had, we were not able to integrate it in time.

Another major delay that we had was attempting to find the average pixel value of the rendered image. Due to the unfamiliar canvas contexts and outdated documentation, this took the longer part of a morning to get working. Once again, this being a critical part of our app, we had two members exploring different approaches in a range of hackiness, with even a light sensitive resistor and an arduino duct-taped to a screen being considered.


Overall the Space Apps challenge was - as the name would imply - challenging, however ultimately very gratifying once we overcame most issues and submitted an app that we are all proud of. The wide range of challenges appealed to everyone on our team, and gave us the chance to chase our interests and consolidate existing skills while learning new ones!

References

Data:




 

 

 

Resources:




 

 


Tools:

General




Graphics




UI




Tags

#Lightcurves #WebApp #3D #Visualization #Visualisation #Raytracing #Javascript #OpenSource #OrbitalMechanics #Asteroids

Global Judging

This project has been submitted for consideration during the Judging process.