CloudRunner

... share your algorithms as a web service

Algorithm: LRKF Evaluation Framework

Description:
---------- Introduction ----------

This framework allows to evaluate up to three different LRKF algorithms in a scenario selected by you.

Therefore, you can use it to see how new filter algorithms perform on existing scenarios, or vice versa evaluate existing filter algorithms for solving new filtering problems.


---------- Usage ----------

Making your own LRKF ... (show more)
Tags: filtering visualization evaluation
Usage: Algorithm is public.
Viewed 2637 times, called 114 times
Upload:
Full star Full star Full star Full star Full star
1 vote
Profile Picture of Christian Mandery }} Christian Mandery
11/03/2012 9:13 p.m. (version #1)

Run Algorithm

: Scenario to use
:
: Green filter
: Blue filter
: Code that is executed prior to running a prediction step (optional)
: Code that is executed prior to running an update step (optional)
: Allow cached result?
Close

Please Wait

Computation is running...

Plots

showing plot # of

Result Value(s)


		

Resource Usage

Execution of the algorithm took seconds.
Peak memory usage for running the algorithm was kilobytes (total usage: kilobytes).

Run ID / Link

ID of this run:
Link:

Result from Cache

Result has been delivered from cache and computed on (UTC).

Matlab log

(show)

		

Error

Using this algorithm in your local MATLAB environment is easy: Click here for instructions!

Usage Instructions for CloudRunner Client

  1. Download the CloudRunner Client by clicking here and place the downloaded file in your MATLAB working directory.

  2. Inside MATLAB, initialize the CloudRunner Client by calling CloudRunner:
    >> CloudRunner

    A login dialog will prompt for your CloudRunner mail address and password. For a start, you can leave the dialog empty and just click "Connect".

    Alternatively, you can provide the login credentials (or empty strings to skip login) as a parameter and hence skip the login dialog. This is useful when using CloudRunner in non-interactive scripts.
    >> CloudRunner('mail@example.com', 'password')

  3. Select this algorithm by its URL. Selecting an algorithm creates the lambda function that proxies calls to the algorithm to the server for execution:
    >> CloudRunnerSelect('http://www.cloudrunner.eu/algorithm/89/lrkf-evaluation-framework/version/1/')

    For the sake of convenience, you can also use the algorithm ID instead of its URL for public algorithms.

  4. Call functions from the algorithm like any regular local function.

Note: You can find further information on the help page.

Source Code

File:

 1 function FilterEvaluation(scenario, filter1, filter2, filter3, prePredictionHook, preUpdateHook)
 2     % Load scenario data and initialize system and measurement model
 3     load('ScenarioData.mat');
 4     sysModel = SysModel();
 5     measModel = MeasModel();
 6     
 7     % Initialize filters
 8     filters = {};
 9     
10     if filter1 ~= false
11         filters{length(filters) + 1} = InitializeFilter(filter1);
12     end
13     
14     if filter2 ~= false
15         filters{length(filters) + 1} = InitializeFilter(filter2);
16     end
17     
18     if filter3 ~= false
19         filters{length(filters) + 1} = InitializeFilter(filter3);
20     end
21     
22     if isempty(filters)
23         error('No filters selected!');
24     end
25     
26     % Set initial filter states
27     for j = 1:length(filters)
28         filters{j}.setState(initialMean, initialCov);
29     end
30     
31     % Initialize cell array for computed point estimations
32     pointEstimations = cell(length(measurement), length(filters));
33     
34     for time = 1:length(measurement)
35         % Pre-prediction hook
36         if ~isempty(prePredictionHook)
37             eval(prePredictionHook);
38         end
39         
40         % Prediction step
41         for j = 1:length(filters)
42             filters{j}.predict(sysModel, predInput{time}, predNoiseMean, predNoiseCov);
43         end
44         
45         % Pre-update hook
46         if ~isempty(preUpdateHook)
47             eval(preUpdateHook);
48         end
49         
50         % Update step
51         for j = 1:length(filters)
52             filters{j}.update(measModel, measurement{time}, measInput{time}, measNoiseMean, measNoiseCov);
53         end
54         
55         % Get point estimations from filters
56         for j = 1:length(filters)
57             pointEstimations{time}{j} = filters{j}.getPointEstimation();
58         end
59     end
60     
61     % Plot results
62     PlotResults(stateGroundTruth, measurement, pointEstimations);
63 end
64 
65 function filter=InitializeFilter(filterParameters)
66     delimPos = strfind(filterParameters, '/');
67     if isempty(delimPos)
68         error('Filter has not set a dependency parameter string!');
69     end
70     
71     filterName = filterParameters(delimPos+1:length(filterParameters));
72     eval(['filter=', filterName, '();']);
73 end
Download algorithm (1 file) as ZIP

Comments

Please login to post a comment.