Advanced Artificial Intelligence (Winter 2008)
This is the page for Advanced AI for Winter 2008
Dr. Regli's Office Hours are 14:00-15:00 M-W, right before class.
The programming assignment is going to be given out in 2-phases. The first phase is empirical and experimental. The objective of which is to encourage students to experiment with a number of the techniques taught in the class and employ them in creative ways against a real-world dataset. This is not a toy problem, but an open-ended assignment indented to require creativity on the part of the student. Students are expected to look at the data and scenario and then, using the techniques taught in the class thus far (or look ahead, if you so desire), identify ways in which these techniques might be applied to deduce about properties of the world.
The domain of the problem is wireless networking and localization of a mobile robot using RF information. This is a current area of commercial, military and academic interest. The key questions here are:
- How can a person or a robot figure out its location without resorting to GPS?
- OR: if we have GPS, how can I figure out where I am if I'm inside or in a GPS-denied environment?
The data sets consist of RSSI information acquired from 4 fixed routers as a robot moves in an open (LoS) environment. The robot has two network cards, hence there are two different sensors for reading the RSSI information. The spreadsheets break this information out by timestamp and include an estimate of the robot's location based on its odometer readings. In several cases there is an analytic computation of the robot's actual location that compensates for drift in the odometer readings (this was computed by looking at the robot's location on the floor). In some experiments the robot moves in a straight line, in others is does not. In some experiments the robot moves with constant velocity, in others it stops and pauses in spots. These motion patterns are evident in the data.
Trial run 1-3:
This dataset contains three trial runs of an indoor experiment, 4 routers.
In each of the experiments the starting point of the robot is at location
(2.51m, 5.71m). The robot is instructed to travel 4m then stop for some time, then continue moving forward 4m. The repeats this 15 times. The main logfile that contains the RSSI readings and the robot odometry readings is in the file:
p3at-YYYYMMDD-HHMMSS.log and further broken down into separate odometry and signal strength readings for each wireless card interface. Furthermore, trial runs two and three contains a
actual_mm.txt which contains ground-truth locations of the stopping points (measured by hand).
The format of the files are:
<timestamp in ms> odom <curr speed> <x pos in mm> <y pos in ms> <heading in degrees> <timestamp in ms> <interface> <ssid> <bssid> <signal> <noise>
The individual trial runs were set up as follows:
- Trial 1:
- Robot traveled from the starting point at (2.51m, 5.71m) near router01 to approximately (52m, 7.6m) from the origin.
- Robot drove straight toward router02.
- Note, the robot therefore drifted 2m to the right (relative to the robot heading), and about 10m less than it should have.
- Traveled 4 meters at 75mm/s, stopped for about 2 seconds, then traveled again 4m. Repeat 15 times.
- Two wireless interfaces.
- Trial 2:
- Prior to performing the trial run we re-calibrated the robot's odometry.
- Traveled 4 meters at 100mm/s, stopped for 10 seconds, then traveled forward
- Three wireless interfaces.
- Trial 3:
- there were less RSSI readings
- Stopped for 20 seconds every 4 meters
- Three wireless interfaces.
There are more detailed descriptions of the log file formats and experimental set-up in
PHASE I: ASSIGNMENT FOR FRIDAY FEB 22
Examine the data and develop ideas about what kinds of questions might be answered about it using the techniques covered in the class. Examples of such inquiries include:
-- Use a Kalman filter to improve the robot's estimation of RSSI by fusing the inputs from both NICS
-- Determine if the distribution of RSSI data is Gaussian (or how close to Gaussian is it)?
-- Develop a HMM or Dynamic Bayes net that could tell if the robot is moving given RSSI readings.
-- Bound the error of the RSSI readings.
-- Fuse the RSSI readings with information about distance, odometery and electro-magnetic path loss to get an estimate of the error rate/sensitivity of the NIC's RSSI sensors.
-- Perform trilateration to estimate the position of the robot.
-- Fuse the trilateration data with a kalman filter to improve estimates of location over time.
-- Apply a particle filter to the RSSI data.
-- Figure out (map?) the locations of the access points as you move around. i.e. build up a belief about where they are, how far away they are, etc. Much like mapping an environment.
... and others. The above are just meant as ideas. You are welcome to come up with others or suggest alternatives to the above.
You are to implement, download or otherwise find code for the above techniques and any others that you may find useful. Experiment with this code on the data and assess what kinds of questions might you be able to answer and what would be the steps in reasoning to obtain these answers. How accurate might you be able to get for certain questions?
Write up your experiences (1-to-3 pages) and recommendations (typeset reports only, no hand written reports); document any and all software you use, experiments you perform or results you find.
This is a somewhat open-ended assignment that will emphasize creativity on the part of the student.
Some code here may be useful to you... http://robots.stanford.edu/cs226-06/data.html