Skip to content
dankrusi edited this page Apr 22, 2012 · 24 revisions

Screenshot

About

The Optimal Lunar Landing Analysis software is part of the 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 platform 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.

Features

  • Cross-platform (Linux, OS X, Windows)
  • Automatic tiling engine
  • Map abstraction
  • Responsive user interface with support for 3D acceleration
  • Easily extensible
  • Multi-threaded computation

Architecture

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](Data Maps)
  • [Analysis Maps](Analysis Maps)

Build Instructions

Linux

  • Install the Qt SDK (sudo aptitude install qt-sdk qt-creator)
  • Run qmake && make

Windows

  • Install the Qt SDK from [http://qt-project.org/downloads]
  • Open the .pro project file with QT Creator and press Run

OS X

  • Install the Qt SDK from [http://qt-project.org/downloads]
  • Run qmake && make

Getting Started

  • 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 SlopeAnalysisMap : 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);
    }
};

Screenshots

###Linux Screenshot Screenshot Screenshot Screenshot

###Windows

###OS X Screenshot

Clone this wiki locally