Title: Mars Lander - Part A
Related objectives from the unit outline:
- design and use computer packages incorporating the techniques associated with computational intelligence;
- investigate the application of these intelligent systems techniques to a relevant problem;
- apply relevant technique(s) to a task normally considered to require
computational intelligence.
Specific learning outcomes:
After completing this assignment, you should be able to apply intelligent systems techniques to design and implement a solution to a "realistic" problem.
Part A:
ECU is planning a mission to put a lander vehicle on Mars. Your job is to create the software to control the lander's thrusters so that the lander makes a safe landing.
For Part A, you may work in teams of 1, 2 or 3 people. This will be a simplified task where you just have to control the speed of the descent. The task will be made more realistic for Part B, and you will have to complete Part B on your own. You have been provided with a software simulation with which to develop and test your controller.
Instructions:
Download Lander.zip from BlackBoard. Extract the files to a suitable location. You should find a folder called Lander, with an image file and a subfolder called src inside. Using NetBeans, create a project using Lander as the project folder and src as the source folder. Remember to add is.jar to the project's libraries. Build the project, and you should be able to run the Simulator class. It should open a window like this:
In this window you should see:
o an image of the Martian surface as the background,
o a dotted vertical line,
o a dotted horizontal line - the lander will drop down the vertical line
and lands (or crashes) when it reaches the horizontal line.
o You can see the bottom of the lander at the top of this window
- A control panel in the top left with
o A Go button - press this to start a new simulation,
o A pause/resume button - use this to pause and resume a simulation once it has started
o The speed of descent of the lander
o How much fuel it has remaining
o The current thrust being used to slow the lander
- A fitness readout - this will show a score out of 100 when the lander either lands successfully or crashes. The score depends on the speed when it lands (slower is better), the amount of fuel left (more is good if you land,bad if you crash).
Press the Go button, and the lander will begin to descend. Shortly, the window might look like this:
Now you can see the lander. The small green dor with the line pointing out of it shows the turbulence being experienced by the lander (there are strong buffeting winds in the Martian atmosphere). Examine the source of FuzzyController.java . This is an example controller that
you can use as a starting point. This program should look familiar, as it is similar to controllers that you have looked at in lectures and workshops.
It implements the Controller interface, meaning that it has a method like this:
/**
*
* @param height - distance above ground in m
* @param speed - rate of descent in m/s
* @param fuel - amount of fuel left in kg
* @return - thrust in N
* @throws ControllerException
*/
public double getThrust(double height, double speed, double fuel) throws ControllerException;
As the lander descends, it passes its current height, speed, and fuel to the controller, which sends back how much thrust to apply to try to slow the lander in a controlled way.
There is also another class called LanderEvaluator. You can also run this class, and it will simulate a number of landings without the graphics, and report the average score achieved.
Your task
Your task is to improve on the controller provided. I suggest you make a new class in the controller package with a unique name like JonnosController, using FuzzyController as a template, and then make changes to it. You will have to change Simulator.java and LanderEvaluator.java so that they use JonnosController instead of FuzzyController.
You are also required to keep a project logbook (template provided) and record the work that you do, what ideas you tried out, what worked and what didn't, what your learned and so on. An example of a good project log for a different assignment has also been provided on BlackBoard.
Important note: most of your marks come from this log, so any work or thinking that you want to get marks for has to be in the log!!
- Appropriate use of Intelligent Systems techniques
Submit a zip file containing:
o Your completed project logbook, and
o Java source files for your controller. Note that your controller must use fuzzy rules to earn these marks, and it must be different from the
example FuzzyController.
- Performance of the controller
The other 5% will be calculated using follows: Your controller will be tested using the LanderEvaluator class. You will receive (Your average -60)/8 %, rounded up to the nearest 0.5 %.
Attachment:- Assignment.zip