Homework / Project FAQ - updated frequently
Writing Style Guide
Do I have to get a best guess for timestep k without looking at any data from time > k?
No. It is totally acceptable to assume that you are solving the localization problem offline.
Do I have to use a particle filter?
No, you don't. This assignment is open ended. If you think you'd like to try a histogram filter, or whatever else is on your mind, you are more than welcome to. If you are uncertain as to what to use, though, a particle filter is a pretty solid choice.
If you cannot solve the warmup without knowledge of aircraft velocity, try solving it when the ground truth velocities in main.m are known. You may find it easier to make progress if you start with known velocities and then proceed to unknown velocities. There are various assumptions you may make here, too; for example, you might assume that velocities and directions are constant but unknown. Whatever you choose to do, please make your assumptions explicit.
Convolution is a very basic and rough way to match image patches. While there are much better ways to do this, the problem is solvable using the convolution response. If you choose a particle filter method and the particles are moving around randomly, you may want to look at a histogram of response values on the map for a given patch. What does the histogram look like, what would you like it to look like, and what simple things can you do to make it better behaved?
Useful Matlab Commands
If you are unfamiliar with Matlab, you may find these functions useful while doing the project.
Remember, for loops iterating over the elements of an array in Matlab are very slow. Vectorize your code.
- ind2sub and sub2ind
- load and save for caching convolution results
- Indexing tricks. For example, A([1 3 5]) returns the 1st, 3rd, and 5th elements in the (columnwise) vectorization of A. See mathworks for details.
Does it matter what language we code in?
You may use any programming language most suitable. Please do include comments and compiling instructions (if applicable).
What programming experience do I need for this course? Is Matlab an acceptable programming language for this course?
Refer to prerequisites under course overview.
In general, you should be fine if you are comfortable with programming
and can instruct the computer to acquire/process/display the necessary data in your course project.
For the warm-up project, any computation you need can be done in Matlab.
The course project is completely open.
You can choose any topic and implement in any way. Keep in mind Matlab is slower, so you may want to
consider parallelizing your algorithm and/or compiling certain portions of your code.
Is it acceptable to check answers with other students?
If you do solicit help from another student, write down whom you talked to and what you learned from the discussion.
In no event should you discuss the specifics of the assigned problems nor check the answers with one another.