-
Notifications
You must be signed in to change notification settings - Fork 2
Home
The Optimal Lunar Landing Analysis software is part of the NASA International Space Apps Challege, and serves as a platform for processing lunar data in order to find optimal landing sites for spacecrafts.
The idea is to create an extensible framework for which multiple data sets are used by a series of analysis strategies to come up with a good landing solution while providing strong visual feedback mechanisms for both the strategy development phase and the strategy analysis phase.
So far two data sources have been implemented and five analysis strategies, as well as a robust GUI and viewport.
- Cross-platform (Linux, OS X, Windows)
- Automatic tiling engine
- Map abstraction
- Responsive user interface with support for 3D acceleration
- Easily extensible
- Multi-threaded computation
The Optimal Lunar Landing Analysis software is built ontop of two main concepts: Data Maps and Analysis Maps. Data Maps provide sources of information for performing analysis on. Further reading can be found on the following pages:
- [Data Maps](wiki/Data Maps)
- [Analysis Maps](wiki/Analysis Maps)
- Install the Qt SDK (
sudo aptitude install qt-sdk qt-creator
) - Run
qmake && make
- Install the Qt SDK from [http://qt-project.org/downloads]
- Open the .pro project file with QT Creator and press Run
- Install the Qt SDK from [http://qt-project.org/downloads]
- Run
qmake && make
- Run the application OptimalLunarLandingAnalysis from the bin directory.
- From the File menu, select Open Map... and find the .map file under the maps directory.
- The first time a map is loaded, the framework needs to pre-calculate some data and create all the tiles. Depending on the map size, this can take a while.
- Use the mouse to pan the map, and the zoom controls to zoom in/out. See how the tiles are loaded on the fly as needed.
- Select the Slope Analysis map to see an example implementation overlay.
- Implement your own strategy by extending the class AnalysisMap:
class ElevationAnalysisMap : public AnalysisMap
{
private:
ElevationDataMap *_elevationMap;
public:
explicit ElevationAnalysisMap(ElevationDataMap *elevationMap, QSettings *settings, QObject *parent = 0) {
// Init
_name = "Elevation Analysis";
_elevationMap = elevationMap;
}
virtual double calculateScoreForPoint(int x, int y) {
// Really trivial implementation: the higher the better...
int elevation = _elevationMap->getElevationAtPoint(x,y);
int minElevation = -9150;
int maxElevation = 10760;
return (double)(elevation - minElevation) / (double)(maxElevation - minElevation);
}
};
###Linux
###Windows
###OS X