Recent changes to this wiki: (Note that diffs will appear in the atom feed, but not on this page.)

diff --git a/aibo/autoreload.mdwn b/aibo/autoreload.mdwn
index 1bd582e..871048c 100644
--- a/aibo/autoreload.mdwn
+++ b/aibo/autoreload.mdwn
@@ -4,6 +4,13 @@ to use the branch that autoreloads your python player.  note that it only reload
     git merge origin/autoReloadPlayer
     ins
 
+to use the branch that autoreloads any python file in the PyCode directory.
+
+    git pull
+    git merge origin/autoReloadPyCode
+    ins
+
 to trigger the reload:
 
-    dog_upload_python <ip suffix> <p player name .py>
+    cd $ROBOCUP_DIR/robot/PyCode
+    dog_upload_python <ip suffix> <filename.py>

diff --git a/aibo/autoreload.mdwn b/aibo/autoreload.mdwn
index 25e083c..1bd582e 100644
--- a/aibo/autoreload.mdwn
+++ b/aibo/autoreload.mdwn
@@ -1,7 +1,9 @@
 to use the branch that autoreloads your python player.  note that it only reloads the one file that is your player.
+
     git pull
     git merge origin/autoReloadPlayer
     ins
 
 to trigger the reload:
+
     dog_upload_python <ip suffix> <p player name .py>

diff --git a/aibo/autoreload.mdwn b/aibo/autoreload.mdwn
index d9fe8df..25e083c 100644
--- a/aibo/autoreload.mdwn
+++ b/aibo/autoreload.mdwn
@@ -1,11 +1,7 @@
 to use the branch that autoreloads your python player.  note that it only reloads the one file that is your player.
-{{{
-git pull
-git merge origin/autoReloadPlayer
-ins
-}}}
+    git pull
+    git merge origin/autoReloadPlayer
+    ins
 
 to trigger the reload:
-{{{
-dog_upload_python <ip suffix> <p player name .py>
-}}}
+    dog_upload_python <ip suffix> <p player name .py>

diff --git a/aibo/autoreload.mdwn b/aibo/autoreload.mdwn
new file mode 100644
index 0000000..d9fe8df
--- /dev/null
+++ b/aibo/autoreload.mdwn
@@ -0,0 +1,11 @@
+to use the branch that autoreloads your python player.  note that it only reloads the one file that is your player.
+{{{
+git pull
+git merge origin/autoReloadPlayer
+ins
+}}}
+
+to trigger the reload:
+{{{
+dog_upload_python <ip suffix> <p player name .py>
+}}}

Clarifications for assignments 2 and 3
diff --git a/news/Clarifications1-09.mdwn b/news/Clarifications1-09.mdwn
new file mode 100644
index 0000000..8e9f0ea
--- /dev/null
+++ b/news/Clarifications1-09.mdwn
@@ -0,0 +1,9 @@
+Hi all,
+
+ I've had some questions about assignments 2 and 3, and I thought I'd post the answers here for everyone.
+
+  In assignment 2, Q 2.1 I ask you to describe the state space you'd use.  Perhaps the easiest way to clarify this question is to answer it for the RoboCup AIBOs.  For the Baysian filter in that system the state space consists of 16 dimensions: X, Y and Theta for each robot, as well as the 2D position and velocity of the ball.
+
+  In assignment three I was asked to clarify what I meant by 'pause' when the robot thinks it is over a marked point.  I would prefer if the robot didn't move its head about.  I'll need to mark the position under the robots shoulders, and that is easier if the head isn't moving.
+
+Will
\ No newline at end of file

Add updated assignment 2 and update due date.
diff --git a/assignments.mdwn b/assignments.mdwn
index 5e51046..5ceb5ae 100644
--- a/assignments.mdwn
+++ b/assignments.mdwn
@@ -8,5 +8,5 @@ The second assignment is a written assignment.
 Due dates for all assignments are shown on the [[lecture plan]].
 
  * [[Assignment_1|assignments/2007/assign1-2007.pdf]]
- * [[Assignment_2|assignments/2008/assign2.pdf]]
+ * [[Assignment_2|assignments/2009/assign2.pdf]]
  * [[Assignment_3|assignments/2009/assign3.pdf]]
diff --git a/assignments/2009/assign2.pdf b/assignments/2009/assign2.pdf
new file mode 100644
index 0000000..5322e5e
Binary files /dev/null and b/assignments/2009/assign2.pdf differ
diff --git a/lecture_plan.mdwn b/lecture_plan.mdwn
index b33ba92..f6acf2d 100644
--- a/lecture_plan.mdwn
+++ b/lecture_plan.mdwn
@@ -187,8 +187,6 @@ Dates for Semester 2, 2009.
     Introduction to Optimization
       1D Golden Section Search
 
-    Assignment 2 Due at start of lecture.
-
 #### Lab (Computer lab)
 
     Planning
@@ -246,6 +244,8 @@ Dates for Semester 2, 2009.
 
 #### [[notes/Lecture12A]]
 
+    Assignment 2 Due at start of lecture.
+
     Adversarial Agents
       Minimax search
       Stochastic Policies

diff --git a/aibo/worldviewer.txt b/aibo/worldviewer.txt
new file mode 100644
index 0000000..333d0d7
--- /dev/null
+++ b/aibo/worldviewer.txt
@@ -0,0 +1,16 @@
+to compile the worldviewer:
+cd ${ROBOCUP_DIR}/robot/share
+./makeDebug Debug.cfg
+export PATH=$PATH:${ROBOCUP_DIR}/bin:${ROBOCUP_DIR}/robot/bin
+cd ${ROBOCUP_DIR}/base/worldviewer/
+make
+
+to run the worldviewer:
+./worldviewer
+
+to use the worldviewer:
+Settings->Ports
+Add
+Enter the team number of your robots (it's the second to last digit of the ip)
+Ok
+Ok

Add an updated third assignment for 2009.
diff --git a/assignments.mdwn b/assignments.mdwn
index fd515cc..5e51046 100644
--- a/assignments.mdwn
+++ b/assignments.mdwn
@@ -9,4 +9,4 @@ Due dates for all assignments are shown on the [[lecture plan]].
 
  * [[Assignment_1|assignments/2007/assign1-2007.pdf]]
  * [[Assignment_2|assignments/2008/assign2.pdf]]
- * [[Assignment_3|assignments/2007/assign3-2007.pdf]]
+ * [[Assignment_3|assignments/2009/assign3.pdf]]
diff --git a/assignments/2009/assign3.pdf b/assignments/2009/assign3.pdf
new file mode 100644
index 0000000..a064191
Binary files /dev/null and b/assignments/2009/assign3.pdf differ

Add AIXI notes
diff --git a/notes/Lecture5B.mdwn b/notes/Lecture5B.mdwn
index f467839..d5ff412 100644
--- a/notes/Lecture5B.mdwn
+++ b/notes/Lecture5B.mdwn
@@ -1,33 +1,70 @@
-Overview of Agent Architectures
-
-  * Engineered Agents
-    * Subsumption Agents
-  * Logic Based Agents
-    * Planning/TLA
-    * BDI
-  * Cognitive Agents
-  * Learning Agents
-
-Review [[notes/Lecture1A]]
-
-Engineered Agents
-Subsumption agents
-
-  * Higher layers can override the inputs or outputs of lower layers
-  * Gat: "By the common metric that speed equals intelligence, Subsumption appeared to be a major breakthrough."
-
-Introduction to Planning representations
-
-Three Layer Architectures
-
-  * Erann Gat
-
-Cognitive agents
-
-  * ACT-R / SOAR
-    * [ACT-R](http://actr.psy.cmu.edu/)
-
-BDI Agents
-
-  * See Wayne Wobcke's course
-
+Overview of Agent Architectures
+
+
+
+  * Engineered Agents
+
+    * Subsumption Agents
+
+  * Logic Based Agents
+
+    * Planning/TLA
+
+    * BDI
+
+  * Cognitive Agents
+
+  * Learning Agents
+
+
+
+Review [[notes/Lecture1A]]
+
+
+
+Engineered Agents
+
+Subsumption agents
+
+
+
+  * Higher layers can override the inputs or outputs of lower layers
+
+  * Gat: "By the common metric that speed equals intelligence, Subsumption appeared to be a major breakthrough."
+
+
+
+Introduction to Planning representations
+
+
+
+Three Layer Architectures
+
+
+
+  * Erann Gat
+
+
+
+Cognitive agents
+
+
+
+  * ACT-R / SOAR
+
+    * [ACT-R](http://actr.psy.cmu.edu/)
+
+
+
+BDI Agents
+
+
+
+  * See Wayne Wobcke's course
+
+
+AIXI:
+
+  * Agent developed by Marcus Hutter at ANU
+  * Has strong performance guarantees in general environments
+  * Is provably not computable, and hence is a theoretical, not practical, system

diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index 0381a09..ce75ac0 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -46,7 +46,7 @@ You'll need to edit the login scripts to set some environment variables.  Login
     export ROBOCUP_DIR=~/trunk
     export PATH=$PATH:${ROBOCUP_DIR}/bin:${ROBOCUP_DIR}/robot/bin
 
-### Setting up git repository for a team
+### Setting up a git repository for a team
 
 Login one of the workstations in robolab by the username of one of your team members (e.g: group07)
 
@@ -56,13 +56,13 @@ Make your team's bare repository with:
 
 Now the other member can login to any of the workstations (or on their own laptop) and use the following command to access the repository of your team:
 
-             git clone [username]@robolab.cse.unsw.edu.au:git_repository trunk
+             git clone [username]@robolab.ai.cse.unsw.edu.au:git_repository trunk
 
 [username] is the account that you choose to keep the repository (e.g: group07)
 
 #### Notes:
 
-You (group07) doesn't need to specify group07@robolab, it's easier to do:
+You (group07) doesn't need to specify group07@robolab..., it's easier to do:
 
 * check out from your own repository:
 

diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index ebc818d..0381a09 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -50,25 +50,23 @@ You'll need to edit the login scripts to set some environment variables.  Login
 
 Login one of the workstations in robolab by the username of one of your team members (e.g: group07)
 
-Complete the ***Getting the code*** section
+Make your team's bare repository with:
 
-Now the other member can login to any of the workstations and use the following command to access the repository of your team:
+             git clone --bare http://www.cse.unsw.edu.au/~cs3431/rUNSWift.git ~/git_repository
 
-         git clone [username]@robolab.cse.unsw.edu.au:~/trunk/ trunk
+Now the other member can login to any of the workstations (or on their own laptop) and use the following command to access the repository of your team:
 
-[username] is the account that you choose to keep the repository (i.e: group07)
+             git clone [username]@robolab.cse.unsw.edu.au:git_repository trunk
 
-#### Notes:
+[username] is the account that you choose to keep the repository (e.g: group07)
 
-If the member of the account that keeps the repository want to work on his account, he might need to change a few things:
+#### Notes:
 
-* check out from his own repository:
-    
-              git clone ~/trunk/ aibo
+You (group07) doesn't need to specify group07@robolab, it's easier to do:
 
-* change the robot directory:
+* check out from your own repository:
 
-              export ROBOCUP_DIR=~/aibo
+              git clone ~/git_repository trunk
 
 ### Building the robot binaries
 

diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index 8773abc..ebc818d 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -46,6 +46,30 @@ You'll need to edit the login scripts to set some environment variables.  Login
     export ROBOCUP_DIR=~/trunk
     export PATH=$PATH:${ROBOCUP_DIR}/bin:${ROBOCUP_DIR}/robot/bin
 
+### Setting up git repository for a team
+
+Login one of the workstations in robolab by the username of one of your team members (e.g: group07)
+
+Complete the ***Getting the code*** section
+
+Now the other member can login to any of the workstations and use the following command to access the repository of your team:
+
+         git clone [username]@robolab.cse.unsw.edu.au:~/trunk/ trunk
+
+[username] is the account that you choose to keep the repository (i.e: group07)
+
+#### Notes:
+
+If the member of the account that keeps the repository want to work on his account, he might need to change a few things:
+
+* check out from his own repository:
+    
+              git clone ~/trunk/ aibo
+
+* change the robot directory:
+
+              export ROBOCUP_DIR=~/aibo
+
 ### Building the robot binaries
 
 Change into the trunk/robot directory and type 'make'.

Add link to development tools
diff --git a/aibo/Compiling.txt b/aibo/Compiling.txt
index 5bf6be7..3667651 100644
--- a/aibo/Compiling.txt
+++ b/aibo/Compiling.txt
@@ -1,5 +1,11 @@
 = Building the rUNSWift code =
 
+To build the cross-compiler, first download the code from
+
+http://www.cse.unsw.edu.au/~cs3431/local/Openr-stuff.tgz
+
+Untar this and follow the instructions to build the development environment.
+
 === Checkout ===
 
 To build and install code on the AIBO ERS-7 robots check out a working copy from the [wiki:SubversionRepository Subversion Repository] and change to the trunk/robot directory, then:

diff --git a/aibo/YUVPlaneFormat.txt b/aibo/YUVPlaneFormat.txt
index 466c4af..d45ee8b 100644
--- a/aibo/YUVPlaneFormat.txt
+++ b/aibo/YUVPlaneFormat.txt
@@ -1,35 +1,75 @@
-= YUV Plane Format =
-
-The YUV image as captured by the dog's camera is 208x160 full resolution pixels, but the underlying image has a higher resolution with less data per pixel. Colour information (U, V) is shared among pixels while intensity (Y) is at a higher res. We currently ignore the higher resolution Y values, only using those pixels about which we have full information.
-
-The underlying image is a 4:1:1 format, meaning 4 Y values, 1 U and 1 V value per macropixel (the Y plane is sampled at twice the resolution of the U and V planes) but we generally only use YLL as the Y value and ignore the others. What do YLL, YLH etc mean? I have no idea, but Jing's 2003 colour classifier code implies that they are positioned:
-
- YHH YHL[[BR]]
- YLH YLL
-
-within a macropixel.
-
-The YUV image is stored as a series of rows of values, the Y row first, then U then V values for a row. When running offline (i.e. from saved YUV images) this sequence repeats so the image looks like:
-
- YYYYYYYY...[[BR]]
- UUUUUUUU...[[BR]]
- VVVVVVVV...[[BR]]
- YYYYYYYY...[[BR]]
- UUUUUUUU...[[BR]]
- ...........[[BR]]
-
-The actual data from the camera when running online has three more rows of information though - three more Y rows, so it looks more like
-
- YYYYYYYY...[[BR]]
- UUUUUUUU...[[BR]]
- VVVVVVVV...[[BR]]
- YYYYYYYY...[[BR]]
- YYYYYYYY...[[BR]]
- YYYYYYYY...[[BR]]
- YYYYYYYY...[[BR]]
- UUUUUUUU...[[BR]]
- ...........
-
-We ignore that extra data, and only process the one Y row per pixel row.
-
-See also [wiki:BflFileFormat BFL file format] - the classified YUV images, and http://www.fourcc.org/index.php?http%3A//www.fourcc.org/yuv.php for more than you wanted to know about YUV.
+= YUV Plane Format =
+
+
+
+The YUV image as captured by the dog's camera is 208x160 full resolution pixels, but the underlying image has a higher resolution with 
+less data per pixel. Colour information (U, V) is shared among pixels while intensity (Y) is at a higher res. We currently ignore the 
+higher resolution Y values, only using those pixels about which we have full information.
+
+
+
+The underlying image is a 4:1:1 format, meaning 4 Y values, 1 U and 1 V value per macropixel (the Y plane is sampled at twice the resolution 
+of the U and V planes) but we generally only use YLL as the Y value and ignore the others. What do YLL, YLH etc mean? I have no idea, but 
+Jing's 2003 colour classifier code implies that they are positioned:
+
+
+
+ YHH YHL[[BR]]
+
+ YLH YLL
+
+
+
+within a macropixel.
+
+
+
+The YUV image is stored as a series of rows of values, the Y row first, then U then V values for a row. When running offline 
+(i.e. from saved YUV images) this sequence repeats so the image looks like:
+
+
+
+ YYYYYYYY...[[BR]]
+
+ UUUUUUUU...[[BR]]
+
+ VVVVVVVV...[[BR]]
+
+ YYYYYYYY...[[BR]]
+
+ UUUUUUUU...[[BR]]
+
+ ...........[[BR]]
+
+
+
+The actual data from the camera when running online has three more rows of information though - three more Y rows, so it looks more like
+
+
+
+ YYYYYYYY...[[BR]]
+
+ UUUUUUUU...[[BR]]
+
+ VVVVVVVV...[[BR]]
+
+ YYYYYYYY...[[BR]]
+
+ YYYYYYYY...[[BR]]
+
+ YYYYYYYY...[[BR]]
+
+ YYYYYYYY...[[BR]]
+
+ UUUUUUUU...[[BR]]
+
+ ...........
+
+
+
+We ignore that extra data, and only process the one Y row per pixel row.
+
+
+
+See also [wiki:BflFileFormat BFL file format] - the classified YUV images, and http://www.fourcc.org/index.php?http%3A//www.fourcc.org/yuv.php for more than you wanted to know about YUV.
+

Instuctions for turning off distcc
diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index 2a80eb9..8773abc 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -50,6 +50,15 @@ You'll need to edit the login scripts to set some environment variables.  Login
 
 Change into the trunk/robot directory and type 'make'.
 
+If you get a lot of `distcc` errors, then either configure distcc, or stop the system from using it.  To turn off distcc, edit `robot/Makefile.config`.  Comment out the `distcc` line to turn this:
+
+    CXX          = distcc $(PREFIX)/bin/mipsel-linux-g++
+
+into this:
+
+    #CXX          = distcc $(PREFIX)/bin/mipsel-linux-g++
+    CXX          = $(PREFIX)/bin/mipsel-linux-g++
+
 ### Making a memory stick
 
 Insert a memory stick into the computer.  If the computer mounts the memory stick itself, then you'll need to check it is mounted in the right spot.  Run "memstick_path" to get the directory where the build system is expecting to find the memory stick.  If this is incorrect, then you can either remount the memory stick in the right location, or edit the "memstick_path" script so that it gives the correct location.  The standard location is "/media/ms".

Pointed to wiki on Robolab
diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index 83267a1..2a80eb9 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -85,3 +85,4 @@ The "ins" command copies the compiled binaries and config files to the memory st
 * I removed the calls to coverage.py as many systems don't have this and it is not very useful for the class.
 * Everything above was originally written for the [subversion](http://subversion.tigris.org/) version control system.  To help with the groupwork in the class, I've since moved to the [git](http://git-scm.com/) version control system (starting Semester 2 2009).  I've tried to update things, but if I missed a reference to svn, please substitute it yourself.
 * by default it would be nice to call the cloned git repository something other than 'trunk', but that's what it was called by default with the old subvserion based system so I've left it the same to reduce the chance I'll miss a change in these notes or one of the helper scripts.
+* More information about the computer network in the Robotics Laboratory is available on the [Robolab](http://robolab.ai.cse.unsw.edu.au/wiki/) wiki, particularly on the [Computers](http://robolab.ai.cse.unsw.edu.au/wiki/Computers) page.

Looks like it gets included, not linked, so rearrange text.
diff --git a/notes/Lecture2A.mdwn b/notes/Lecture2A.mdwn
index dc64f91..7ae476c 100644
--- a/notes/Lecture2A.mdwn
+++ b/notes/Lecture2A.mdwn
@@ -2,7 +2,7 @@
    * RGB, [YUV](http://en.wikipedia.org/wiki/YUV), HSV
    * The AIBOs use YUV natively.
  * Symbolic colours
-   * Mapping from YUV to symbolic colours (see [[pics/colours.jpg]] for an example of a colour space with symbolic colours marked)
+   * Mapping from YUV to symbolic colours [[pics/colours.jpg]]
    * Drop low order bit - use 128x128x128 table
 
  * Detecting objects

Try fixing link
diff --git a/notes/Lecture2A.mdwn b/notes/Lecture2A.mdwn
index 873d139..dc64f91 100644
--- a/notes/Lecture2A.mdwn
+++ b/notes/Lecture2A.mdwn
@@ -1,8 +1,8 @@
  * Colour Spaces or [models](http://en.wikipedia.org/wiki/Color_models)
-   * RGB, [YUV](http://en.wikipedia.org/wiki/YUV), HSV (see [[pics/colours]])
+   * RGB, [YUV](http://en.wikipedia.org/wiki/YUV), HSV
    * The AIBOs use YUV natively.
  * Symbolic colours
-   * Mapping from YUV to symbolic colours
+   * Mapping from YUV to symbolic colours (see [[pics/colours.jpg]] for an example of a colour space with symbolic colours marked)
    * Drop low order bit - use 128x128x128 table
 
  * Detecting objects

Add example picture.
diff --git a/notes/Lecture2A.mdwn b/notes/Lecture2A.mdwn
index 36707c0..873d139 100644
--- a/notes/Lecture2A.mdwn
+++ b/notes/Lecture2A.mdwn
@@ -1,5 +1,5 @@
  * Colour Spaces or [models](http://en.wikipedia.org/wiki/Color_models)
-   * RGB, [YUV](http://en.wikipedia.org/wiki/YUV), HSV
+   * RGB, [YUV](http://en.wikipedia.org/wiki/YUV), HSV (see [[pics/colours]])
    * The AIBOs use YUV natively.
  * Symbolic colours
    * Mapping from YUV to symbolic colours
diff --git a/pics/colours.jpg b/pics/colours.jpg
new file mode 100644
index 0000000..6e74aef
Binary files /dev/null and b/pics/colours.jpg differ

change references for use with git.
diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index e8452bd..83267a1 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -5,6 +5,8 @@ An older version of these notes is in [[aibo/GettingStarted]].
 
 ### Automated Script for Setup
 
+**This script has not been updated for use with git**
+
 An auto setup script can be run from:
 
     /home/group09/public/cs3431_setup
@@ -25,17 +27,17 @@ There is another script that just performs compilation and memory stick copying
 
 ### Getting the code
 
-Use [subversion](http://subversion.tigris.org) to check out the code.
+Use [git](http://git-scm.com/) to check out the code.
 
-    svn co svn+ssh://robolab.cse.unsw.edu.au/data/svn/comp3431/trunk
+    git clone http://www.cse.unsw.edu.au/~cs3431/rUNSWift.git trunk
 
 If you ran this command in your home directory, you should now have a directory called 'trunk' in your home directory.
 
 Remember that you can type:
 
-    svn help
+    git help
 
-To get help on using subversion.  You can also look at the [subversion book](http://svnbook.red-bean.com) for more help.
+To get help on using git.  You can also look at the [git documentation page](http://git-scm.com/documentation) for more help.
 
 ### Setting up your home directory
 
@@ -80,5 +82,6 @@ The "ins" command copies the compiled binaries and config files to the memory st
 
 #### Notes
 
-I removed the calls to coverage.py as many systems don't have this and it is not very useful for the class.
-
+* I removed the calls to coverage.py as many systems don't have this and it is not very useful for the class.
+* Everything above was originally written for the [subversion](http://subversion.tigris.org/) version control system.  To help with the groupwork in the class, I've since moved to the [git](http://git-scm.com/) version control system (starting Semester 2 2009).  I've tried to update things, but if I missed a reference to svn, please substitute it yourself.
+* by default it would be nice to call the cloned git repository something other than 'trunk', but that's what it was called by default with the old subvserion based system so I've left it the same to reduce the chance I'll miss a change in these notes or one of the helper scripts.

Update dates for 2009
diff --git a/lecture_plan.mdwn b/lecture_plan.mdwn
index c8b2a14..b33ba92 100644
--- a/lecture_plan.mdwn
+++ b/lecture_plan.mdwn
@@ -1,4 +1,6 @@
-### Week 1 - 28/7
+Dates for Semester 2, 2009.
+
+### Week 1 - 20/7
 
 #### [[notes/Lecture1A]]
 
@@ -18,15 +20,7 @@
       Flow Control between objects
       Interfaces between objects
 
-#### Lab (Level 3)
-
-    Intro to rUNSWift agent
-      Subversion
-      Compiling
-      Running
-      Base Station
-
-### Week 2 - 4/8
+### Week 2 - 27/7
 
 #### [[notes/Lecture2A]]
 
@@ -46,12 +40,13 @@
 
 #### Lab (Level 3)
 
-    Ball tracking
-    Assignment 1 out at end of lab (Tracking & Life Saver)
-    Assignment 2 out at end of lab (Grab Ball - get to other half of field)
-    Assignment 3 out at end of lab (1x1 penalty shooter)
+    Intro to rUNSWift agent
+      Subversion
+      Compiling
+      Running
+      Base Station
 
-### Week 3 - 11/8
+### Week 3 - 3/8
 
 #### [[notes/Lecture3A]]
 
@@ -68,10 +63,11 @@
 
 #### Lab (Level 3)
 
-    Go To Point
-      Experiments with tracking (odom/obs, bad mean/var)
+    Ball tracking
+    Assignment 1 out at end of lab (Tracking & Life Saver)
+    Assignment 3 out at end of lab (Grab Ball - get to other half of field)
 
-### Week 4 - 18/8
+### Week 4 - 10/8
 
 #### [[notes/Lecture4A]]
 
@@ -90,9 +86,10 @@
 
 #### Lab (Level 3)
 
-    Work on Assignment 1
+    Go To Point
+      Experiments with tracking (odom/obs, bad mean/var)
 
-### Week 5 - 25/8
+### Week 5 - 17/8
 
 #### [[notes/Lecture5A]]
 
@@ -113,9 +110,9 @@
 
 #### Lab (Level 3)
 
-    Work on assignment 1
-  
-### Week 6 - 1/9
+    Work on Assignment 1
+
+### Week 6 - 24/8
 
 #### [[notes/Lecture6A]]
 
@@ -134,7 +131,7 @@
 
     Assignment 1 graded in lab
 
-### Week 7 - 8/9
+### Week 7 - 31/8
 
 #### [[notes/Lecture7A]]
 
@@ -152,7 +149,9 @@
 
     A*/Islands/Heuristics
 
-### Week 8 - 15/9
+### Mid Semester Break - 7/9
+
+### Week 8 - 14/9
 
 #### [[notes/Lecture8A]]
 
@@ -174,7 +173,7 @@
 
     Work on Assignment 3
 
-### Week 9 22/9
+### Week 9 21/9
 
 #### [[notes/Lecture9A]]
 
@@ -194,9 +193,7 @@
 
     Planning
 
-### Mid Semester Break - 29/9
-
-### Week 10 - 6/10
+### Week 10 - 28/9
 
 #### [[notes/Lecture10A]]
 
@@ -225,7 +222,7 @@
 
     Optimization
 
-### Week 11 - 13/10
+### Week 11 - 5/10
 
 #### [[notes/Lecture11A]]
 
@@ -245,7 +242,7 @@
 
     No Lab - use time for review if needed.
 
-### Week 12 - 20/10
+### Week 12 - 12/10
 
 #### [[notes/Lecture12A]]
 
@@ -258,6 +255,8 @@
 
     Review
 
+### Week 13 - 19/10
+
 #### Lab (Level 3)
 
     Assignment 3 graded in lab

Add something on WAM limits and waiting lists
diff --git a/index.mdwn b/index.mdwn
index 3a531eb..2553bca 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -36,6 +36,8 @@ I expect students in this course to be able to program in C++ and Java, and to b
 
 While not a formal pre-requisite or co-requisite, I highly recommend that students take a machine learning course if they are interested in artificial intelligence, eg COMP9417.  That course does not need to be taken before this one. The artificial intelligence course, COMP3411, is not a bad choice either (although it isn't going to give you the depth of Machine Learning knowledge I'd recommend).  While it isn't a formal pre-requisite, students who have already taken COMP3411 or an equivalent course often find my course easier.
 
+Because there are only a small number of robots, this class is limited in size.  As it is somewhat difficult, I have placed a WAM requirement on the course.  For people who have a WAM below the required WAM, there is a waiting list.  That waiting list is used to fill up any positions remaining just before the start of the semester.
+
 Course Web Pages
 ----------------
 You're reading them :).  <http://www.cse.unsw.edu.au/~cs3431/>

Remove week 0 and test commit
diff --git a/lecture_plan.mdwn b/lecture_plan.mdwn
index 32dc3c8..c8b2a14 100644
--- a/lecture_plan.mdwn
+++ b/lecture_plan.mdwn
@@ -1,17 +1,3 @@
-### Week 0 - 21/7
-
-#### A
-
-    No lecture A in week 0
-
-#### B
-
-    Re-schedule classes to try and accommodate everyone.
-
-#### Lab
-
-    No labs week 0
-
 ### Week 1 - 28/7
 
 #### [[notes/Lecture1A]]

Finish commit that broke because of missing git
diff --git a/news/Welcome_2009.mdwn b/news/Welcome_2009.mdwn
new file mode 100644
index 0000000..995d486
--- /dev/null
+++ b/news/Welcome_2009.mdwn
@@ -0,0 +1,3 @@
+Welcome to Semester 2 2009.
+
+Classes start next Tuesday (21st July) at 11am in Quadrangle 1046 (K-E15-1046).

A small tweak to the copying policy
diff --git a/index.mdwn b/index.mdwn
index c17f914..3a531eb 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -101,7 +101,7 @@ Plagiarism
 
 I dislike dealing with plagiarism, so please don't make this an issue.  For the written assignments, I follow the standard [CSE Plagiarism guide](http://www.cse.unsw.edu.au/~chak/plagiarism/plagiarism-guide.html).  
 
-For the teamwork assignments things are a little more complex as you will have access to open-source code that solves the problem.  I encourage you to look at that code and understand it.  The assignment sheet will clearly state which code you are allowed to include directly in your submission.  Apart from that explicitly allowed code, all code you submit should be written by you or your team.  A member of each team must be able to clearly explain any of your code to me on request.
+For the teamwork assignments things are a little more complex as you will have access to open-source code that solves the problem.  I encourage you to look at that code, understand it, and then write your own code based on that understanding.  The assignment sheet will clearly state which code you are allowed to include directly in your submission.  Apart from that explicitly allowed code, all code you submit should be written by you or your team.  A member of each team must be able to clearly explain any of your code to me on request.
 
 Feedback
 --------

Update for 2009
diff --git a/index.mdwn b/index.mdwn
index 6da9ca0..c17f914 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -12,8 +12,8 @@ This course gives both a theoretical and a practical introduction to the control
 
 <dl>
 <dt>The <a href="http://www.cse.unsw.edu.au/~robocup/">rUNSWift</a> architecture</dt>
-<dd>This part of the course gives students a practical introduction to some specific robot architectures; the rUNSWift architecture used by the UNSW/NICTA robot soccer team and the <A HREF="http://orca-robotics.sourceforge.net/">Orca</A> architecture used by the Sydney-Berkeley Driving team. The elements of the robot's software are described. Assignments consist of re-implementing some simple soccer behaviours on the Sony AIBO robot hardware.</dd>
-<dt>An overview of planning systems</dt>
+<dd>This part of the course gives students a practical introduction to some specific robot architectures; the main architecture will be that used by the rUNSWift UNSW/NICTA robot soccer team in 2006.  The <A HREF="http://orca-robotics.sourceforge.net/">Orca</A> architecture used by the Sydney-Berkeley Driving team will also be touched on. The elements of the robot's software are described. Assignments consist of re-implementing some simple soccer behaviours on the Sony AIBO robot hardware.</dd>
+<dt>An overview of agent planning and learning systems</dt>
 <dd>This part of the course gives students an introduction to the theory of decision making: How can an agent build up knowledge of its world?  Having done that, how can an agent choose its actions? A variety of different decision making and planning architectures are covered; including classical planning, reinforcement learning and cognitive architectures. In labs, students will get hands on experience with some of these planning systems. Assessment of this part will be by quiz and final exam.</dd>
 </dl>
 
@@ -32,7 +32,7 @@ Pre-requisites
 
 This course is for postgraduate students (COMP9431) and advanced undergraduates (COMP3431).  It is a 3rd year course because it has few pre-requisites.  It is not an easy course.
 
-I expect students in this course to be able to program in C++ and java, and to be prepared to learn Python.
+I expect students in this course to be able to program in C++ and Java, and to be prepared to learn Python.
 
 While not a formal pre-requisite or co-requisite, I highly recommend that students take a machine learning course if they are interested in artificial intelligence, eg COMP9417.  That course does not need to be taken before this one. The artificial intelligence course, COMP3411, is not a bad choice either (although it isn't going to give you the depth of Machine Learning knowledge I'd recommend).  While it isn't a formal pre-requisite, students who have already taken COMP3411 or an equivalent course often find my course easier.
 
@@ -82,7 +82,8 @@ There is no set text for this course. However, the following books are recommend
 Assignments
 -----------
 
-There are three assignments in this course.  Details are in the [[assignment|assignments]] sheets.  All three assignments are on real robots.  Due dates are on the calendar section of the web page.  Each assignment is worth equal marks.  As the second semester of 2008 will be the first time this course has run with a 12 week semester, I'll be carefully monitoring the course to see how the new workload fits.  This means things might be somewhat more fluid this semester.
+There are three assignments in this course.  Details are in the [[assignment|assignments]] sheets.  There will be two assignments on real robots and one written assignment.  The robotics assignments also have a written component.
+Due dates are on the calendar section of the web page.  Each assignment is worth equal marks.
 
 Assessment
 ----------
@@ -91,4 +92,20 @@ Assessment
  - Quiz about Week 9: 10%
  - Final exam: 45%
 
-Lectures and Assignments are similar between COMP3431 and COMP9431 students.  I am required to make the the COMP9431 course 'harder' than COMP3431, and hence the exam is more in-depth for COMP9431.  As I noted above, both courses are hard.
+Lectures and Assignments are similar between COMP3431 and COMP9431 students.  I am required to make the the COMP9431 course 'harder' than COMP3431, and hence the exam is more in-depth for COMP9431.  As I noted above, both courses are difficult.
+
+Units of credit: This is a 6 UOC course
+
+Plagiarism
+----------
+
+I dislike dealing with plagiarism, so please don't make this an issue.  For the written assignments, I follow the standard [CSE Plagiarism guide](http://www.cse.unsw.edu.au/~chak/plagiarism/plagiarism-guide.html).  
+
+For the teamwork assignments things are a little more complex as you will have access to open-source code that solves the problem.  I encourage you to look at that code and understand it.  The assignment sheet will clearly state which code you are allowed to include directly in your submission.  Apart from that explicitly allowed code, all code you submit should be written by you or your team.  A member of each team must be able to clearly explain any of your code to me on request.
+
+Feedback
+--------
+
+I very much appreciate constructive feedback on how the course might be improved.  The course does change based on this feedback (e.g. there used to be three robotics assignments, but one of them has been replaced with a written assignment so that students get more feedback about their performance on the written work before the exam.).  Feedback can be sent to me at any time.  I particularly encourage students to fill in the CATEI survey at the end of each semester.  A link to the online CATEI surverys is on your myUNSW page.
+
+

Modify to note that feedback is always welcome
diff --git a/news/Feedback_please.mdwn b/news/Feedback_please.mdwn
index ea6d471..9ce03d7 100644
--- a/news/Feedback_please.mdwn
+++ b/news/Feedback_please.mdwn
@@ -1,6 +1,6 @@
 Hi all,
 
-  The University is running its CATEI evaluations again.  This is where you get to give feedback on my course.
+  The University is running its CATEI evaluations again.  This is another opportunity for you to give feedback on my course.  (Feedback is welcome outside of CATEI too.)
 
   I really appreciate all feedback.  Positive feedback helps me convince NICTA to keep running the course.
 Constructive negative feedback lets me know how to improve the course for future years.  Even if you
@@ -12,7 +12,7 @@ Will
 
 ----
 
-Here is a, slightly edited, excerpt from the mail I received (and everyone enrolled in the course should have received a similar one):
+Here is a, slightly edited, excerpt from the announcement mail I received (and everyone enrolled in the course should have received a similar one):
 
 > Students can access evaluation form(s) by login into [myUNSW](https://my.unsw.edu.au/), click the CATEI icon in the left menu bar on my survey area.
 > 

Advertise CATEI forms
diff --git a/news/Feedback_please.mdwn b/news/Feedback_please.mdwn
new file mode 100644
index 0000000..ea6d471
--- /dev/null
+++ b/news/Feedback_please.mdwn
@@ -0,0 +1,25 @@
+Hi all,
+
+  The University is running its CATEI evaluations again.  This is where you get to give feedback on my course.
+
+  I really appreciate all feedback.  Positive feedback helps me convince NICTA to keep running the course.
+Constructive negative feedback lets me know how to improve the course for future years.  Even if you
+loved the course, please let me know of any suggestions for improvement in the comments section.
+
+Be well,
+
+Will
+
+----
+
+Here is a, slightly edited, excerpt from the mail I received (and everyone enrolled in the course should have received a similar one):
+
+> Students can access evaluation form(s) by login into [myUNSW](https://my.unsw.edu.au/), click the CATEI icon in the left menu bar on my survey area.
+> 
+> Only those students who have yet to finish all forms will be sent reminders in the UNSW email account.
+> 
+> If you require any further information, please contact your school CATEI coordinator:
+> 
+> * John Shepherd - School of Computer Science
+> * Bill Wilson - School of Computer Science
+> * Colin Taylor - School of Computer Science

Exam announcement
diff --git a/news/Exam_Time___38___Place.mdwn b/news/Exam_Time___38___Place.mdwn
new file mode 100644
index 0000000..fe21405
--- /dev/null
+++ b/news/Exam_Time___38___Place.mdwn
@@ -0,0 +1,9 @@
+The exam will be 3 hours.
+
+It will be held on the morning of Monday 3rd November in room ASB 220.
+
+You should be there by 8:45am, and it should end around noon.
+
+The exam is open book.  A calculator is allowed and may be useful for some questions.
+You are *not* allowed to use any communications device to communicate with another human
+during the exam.

Fix formatting
diff --git a/notes/Lecture8A.mdwn b/notes/Lecture8A.mdwn
index f557645..49901b8 100644
--- a/notes/Lecture8A.mdwn
+++ b/notes/Lecture8A.mdwn
@@ -1,6 +1,9 @@
 Review
+
  * Building Models
+
 Today
+
  * Building Heuristics (deterministic, goal state(s))
    * Backward search / Dynamic programming
      * Both cost and search heuristics

Update pages to point to latest versions of slides...
diff --git a/notes/Lecture7B.mdwn b/notes/Lecture7B.mdwn
index 640d083..c0adb4c 100644
--- a/notes/Lecture7B.mdwn
+++ b/notes/Lecture7B.mdwn
@@ -1 +1 @@
-Malcolm Ryan's guest lecture on planning.  His slides are available from [his web page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or from the [[course wiki|/slides/2005/malcolmr-planning]] from the course web page.
+Malcolm Ryan's guest lecture on planning.  His slides are available from [his web page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or from the [[course wiki|/slides/2008/malcolmr-planning]] from the course web page.
diff --git a/notes/Lecture8B.mdwn b/notes/Lecture8B.mdwn
index d37d010..5f5315d 100644
--- a/notes/Lecture8B.mdwn
+++ b/notes/Lecture8B.mdwn
@@ -1 +1 @@
-Malcolm Ryan's guest lecture on plan space planning.  His slides are available [his web page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or the [[course wiki|/slides/2005/malcolmr-planning]].
+Malcolm Ryan's guest lecture on plan space planning.  His slides are available [his web page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or the [[course wiki|/slides/2008/malcolmr-planning]].

Add Malcolm's Planning slides
diff --git a/slides/2008/malcolmr-planning.mdwn b/slides/2008/malcolmr-planning.mdwn
new file mode 100644
index 0000000..e190a08
--- /dev/null
+++ b/slides/2008/malcolmr-planning.mdwn
@@ -0,0 +1,3 @@
+Malcolm Ryan's planning slides:
+
+[[!map pages="slides/2008/malcolmr-planning/*"]]
diff --git a/slides/2008/malcolmr-planning/CS3431-1.ppt b/slides/2008/malcolmr-planning/CS3431-1.ppt
new file mode 100644
index 0000000..7523d4e
Binary files /dev/null and b/slides/2008/malcolmr-planning/CS3431-1.ppt differ
diff --git a/slides/2008/malcolmr-planning/CS3431-2.ppt b/slides/2008/malcolmr-planning/CS3431-2.ppt
new file mode 100644
index 0000000..5e1c7de
Binary files /dev/null and b/slides/2008/malcolmr-planning/CS3431-2.ppt differ

Seminar announcement
diff --git a/news/Relevant_talk....mdwn b/news/Relevant_talk....mdwn
new file mode 100644
index 0000000..1923664
--- /dev/null
+++ b/news/Relevant_talk....mdwn
@@ -0,0 +1,92 @@
+The `seminar-ai@cse` mailing list announces talks that people in this class might find interesting.  For example,  here is an announcement for Thursday:
+
+----
+
+Dear All,
+
+Announcing a New AI Seminar. The details are:
+
+Title: Model-based Programming of Robust Agile Systems
+
+Presenter: Brian C. Williams
+
+Presenter URL: <http://people.csail.mit.edu/williams/Web%20site/williams.shtml>
+
+Affiliation: Model-based Embedded and Robotic Systems,  Massachusetts Institute of Technology
+
+Affiliation URL: <http://groups.csail.mit.edu/mers/mers.htm>
+
+Date: Thursday 11th September 2008
+
+Time: 12:00:00
+
+Location: CSE Seminar Room, Level 1, K17
+
+Abstract:
+Autonomous, self-repairing explorers, such as deep space probes, have
+successfully performed complex missions by employing model-based
+executives that continuously monitor mission goals, diagnose failures and
+plan repairs. These executives employ models encoded as probabilistic
+constraint automata, in order to observe and control the hidden states of
+the system. These executives have also been incorporated within model-based
+programming languages that facilitate the creation of a wide range of fault
+adaptive systems, including automobiles and naval ships.
+
+Future explorers, such as autonomous air vehicles and walking robots,
+will require far greater agility, in order to robustly achieve their
+missions. For example, to avoid falling, a walking robot must quickly
+detect a loss of balance, and replan its control trajectory appropriately.
+This talk presents recent advances in model-based programming and
+execution for agile systems. First, to reason about a system~Rs dynamics,
+these executives employ probabilistic constraint automata that are
+extended to hybrid discrete/continuous constraints. Second, to robustly
+achieve missions, these executives employ planning methods that reason
+about continuous, as well as discrete, state changes, and employ
+compilation and model-predictive control methods in order to adapt on the
+fly. Finally, these executives employ estimation methods for hybrid PHA
+that detect subtle failures through active control. Model-based execution
+is demonstrated both on a team of cooperative air vehicles and a biped
+walking machine.
+
+
+Biography of Speaker:
+Professor Williams leads the Model-based Embedded and Robotic Systems
+<http://mers.csail.mit.edu/mers.htm> group, within the Computer Science
+and Artificial Intelligence Laboratory
+<http://www.csail.mit.edu/index.php>(CSAIL) at the Massachusetts Institute
+of Technology <http://web.mit.edu/>. His research concentrates on
+model-based autonomy <http://ic-www.arc.nasa.gov/ic/project/mba/index.html>
+-- the creation of long-lived systems that explore autonomously, while
+commanding, diagnosing and repairing themselves using fast, commonsense
+reasoning. Current research focuses on model-based programming and
+cooperative robotics: Model-based programming supports goal-directed
+programming of robust explorers and everyday devices, by incorporating
+model-based deductive capabilities within traditional embedded programming
+languages. Cooperative robotics extends model-based autonomy to robotic
+networks of cooperating space, air, land and undersea vehicles, on Earth
+and on other planets.
+
+Professor Williams received his S.B., S.M and Ph.D. in Computer Science and
+Electrical Engineering at MIT, and worked at the Xerox Palo Alto Research
+Center and NASA Ames Research Center, prior to joining the faculty at MIT.
+He is a pioneer in the fields of qualitative reasoning, model-based
+diagnosis and autonomous systems. He received a NASA Space Act Award for
+Remote Agent, the first fully autonomous, self-repairing space explorer,
+demonstrated onboard the NASA Deep Space One probe in May, 1999. He was a
+member of the Tom Young Blue Ribbon Team in 2000, assessing future Mars
+missions in light of the Mars Climate Orbiter and Polar Lander incidents,
+and is currently a member of the Advisory Council of the NASA Jet
+Propulsion Laboratory at Caltech. He has won four best paper prizes for
+his research in diagnosis, qualitative algebras, propositional inference
+and soft constraints. He is a fellow of AAAI, has served as guest editor
+of the Artificial Intelligence Journal
+<http://www.elsevier.nlinca/publications/store/5/0/5/6/0/1/> and has been
+on the editorial boards of the Journal of Artificial Intelligence Research
+<http://www.jair.org/>, and MIT Press.
+
+
+Host: Toby Walsh
+
+Seminar Convenor: Van Hai Ho
+
+Thankyou

Announce Assignment 2
diff --git a/assignments.mdwn b/assignments.mdwn
index aeba7d4..fd515cc 100644
--- a/assignments.mdwn
+++ b/assignments.mdwn
@@ -1,7 +1,12 @@
-There are three assignments distributed throughout the semester.  All are team assignments to make the AIBO robots do something.
+There are three assignments distributed throughout the semester.
 
-The three 2007 assignments were:
+Assignments 1 and 3 are the same as 2007 in all ways except the due date.
+These two assignments are practical assignments on the AIBOs and will be marked in lab.
+
+The second assignment is a written assignment.
+
+Due dates for all assignments are shown on the [[lecture plan]].
 
  * [[Assignment_1|assignments/2007/assign1-2007.pdf]]
- * [[Assignment_2|assignments/2007/assign2-2007.pdf]]
+ * [[Assignment_2|assignments/2008/assign2.pdf]]
  * [[Assignment_3|assignments/2007/assign3-2007.pdf]]
diff --git a/news/Assignment_2.mdwn b/news/Assignment_2.mdwn
new file mode 100644
index 0000000..0b13ee8
--- /dev/null
+++ b/news/Assignment_2.mdwn
@@ -0,0 +1 @@
+[[Assignment_2|/assignments/2008/assign2.pdf]] has been released.  Not all the work in that assignment has been covered yet, but will be at least a week before the assignment is due.

Add assignment 2
diff --git a/assignments/2008/assign2.pdf b/assignments/2008/assign2.pdf
new file mode 100644
index 0000000..c14bc18
Binary files /dev/null and b/assignments/2008/assign2.pdf differ

Add the RoboCup 2006 rules locally.
diff --git a/aibo.mdwn b/aibo.mdwn
index 9c12f87..7bb7bc6 100644
--- a/aibo.mdwn
+++ b/aibo.mdwn
@@ -7,7 +7,7 @@ These pages were all exported from a previous wiki and are in the wrong wiki for
 
 I just added a new page on [[aibo/comp3431/GettingStarted]].
 
-The Robocup 2006 rules are available [here](http://www.tzi.de/4legged/pub/Website/Downloads/Rules2006.pdf)
+The Robocup 2006 rules are available on the [RoboCup SPL web site](http://www.tzi.de/4legged/pub/Website/Downloads/Rules2006.pdf) and [[locally|/papers/Rules2006.pdf]].
 
 There are notes from the previous COMP3431 class wiki:
 
diff --git a/papers/Rules2006.pdf b/papers/Rules2006.pdf
new file mode 100644
index 0000000..30be3d3
Binary files /dev/null and b/papers/Rules2006.pdf differ

Try changing path
diff --git a/notes/Lecture7B.mdwn b/notes/Lecture7B.mdwn
index 23b64d7..640d083 100644
--- a/notes/Lecture7B.mdwn
+++ b/notes/Lecture7B.mdwn
@@ -1 +1 @@
-Malcolm Ryan's guest lecture on planning.  His slides are available from [his web page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or from the [[course wiki|slides/2005/malcolmr-planning]] from the course web page.
+Malcolm Ryan's guest lecture on planning.  His slides are available from [his web page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or from the [[course wiki|/slides/2005/malcolmr-planning]] from the course web page.
diff --git a/notes/Lecture8B.mdwn b/notes/Lecture8B.mdwn
index 9d9fb4c..d37d010 100644
--- a/notes/Lecture8B.mdwn
+++ b/notes/Lecture8B.mdwn
@@ -1 +1 @@
-Malcolm Ryan's guest lecture on plan space planning.  His slides are available [his web page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or the [[course wiki|slides/2005/malcolmr-planning]].
+Malcolm Ryan's guest lecture on plan space planning.  His slides are available [his web page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or the [[course wiki|/slides/2005/malcolmr-planning]].

Move header page
diff --git a/notes/slides/2005/malcolmr-planning.mdwn b/notes/slides/2005/malcolmr-planning.mdwn
deleted file mode 100644
index 3641d16..0000000
--- a/notes/slides/2005/malcolmr-planning.mdwn
+++ /dev/null
@@ -1,3 +0,0 @@
-Malcolm Ryan's planning slides:
-
-[[!map pages="*"]]
diff --git a/slides/2005/malcolmr-planning.mdwn b/slides/2005/malcolmr-planning.mdwn
new file mode 100644
index 0000000..39f2864
--- /dev/null
+++ b/slides/2005/malcolmr-planning.mdwn
@@ -0,0 +1,3 @@
+Malcolm Ryan's planning slides:
+
+[[!map pages="slides/2005/malcolmr-planning/*"]]

Add an overview page
diff --git a/notes/slides/2005/malcolmr-planning.mdwn b/notes/slides/2005/malcolmr-planning.mdwn
new file mode 100644
index 0000000..3641d16
--- /dev/null
+++ b/notes/slides/2005/malcolmr-planning.mdwn
@@ -0,0 +1,3 @@
+Malcolm Ryan's planning slides:
+
+[[!map pages="*"]]

Update wiki formatting
diff --git a/notes/Lecture7B.mdwn b/notes/Lecture7B.mdwn
index ead9e64..23b64d7 100644
--- a/notes/Lecture7B.mdwn
+++ b/notes/Lecture7B.mdwn
@@ -1 +1 @@
-Malcolm Ryan's guest lecture on planning.  His slides are available from [his_web_page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or from the [course_webpage|slides/2005/malcolmr-planning] from the course web page.
+Malcolm Ryan's guest lecture on planning.  His slides are available from [his web page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or from the [[course wiki|slides/2005/malcolmr-planning]] from the course web page.
diff --git a/notes/Lecture8B.mdwn b/notes/Lecture8B.mdwn
index 7e8fc7b..9d9fb4c 100644
--- a/notes/Lecture8B.mdwn
+++ b/notes/Lecture8B.mdwn
@@ -1 +1 @@
-Malcolm Ryan's guest lecture on plan space planning.  His slides are available [http://www.cse.unsw.edu.au/~malcolmr/cs3431/ from his web page] or [http://www.cse.unsw.edu.au/~cs3431/slides/2005/malcolmr-planning/ from the course web page].
+Malcolm Ryan's guest lecture on plan space planning.  His slides are available [his web page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or the [[course wiki|slides/2005/malcolmr-planning]].

Reformat
diff --git a/notes/Lecture7A.mdwn b/notes/Lecture7A.mdwn
index ca1f0bd..7545126 100644
--- a/notes/Lecture7A.mdwn
+++ b/notes/Lecture7A.mdwn
@@ -1,5 +1,8 @@
-= Course overview =
-== So far ==
+Course overview
+---------------
+
+### So Far
+
  * Agent Systems
    * RoboCup
    * Other robot architectures
@@ -19,7 +22,8 @@
       * Heuristic
       * Current State
 
-== Yet to see ==
+### Yet to see
+
  * Some representations for discrete search
  * Building Models
  * Building Heuristics
@@ -31,7 +35,7 @@
  * More on Hierarchy
  * Adversarial Agents
 
-= Today =
+### Today
 
  * Building Models
    * Try actions in different locations

make the distinction between two type of ball coordinate clearer for beginners
diff --git a/aibo/comp3431/UsefulPython.txt b/aibo/comp3431/UsefulPython.txt
index 76861b7..5fe6a7e 100644
--- a/aibo/comp3431/UsefulPython.txt
+++ b/aibo/comp3431/UsefulPython.txt
@@ -1,252 +1,503 @@
-{{{
-
-# Useful Python Code for Beginning
-
-
-###
-# most useful modules to import:
-
-import math
-import Global
-import Constant
-import VisionLink
-import Action
-import Indicator
-import hMath
-
-
-###
-# head stuff
-
-Action.setHeadParams(pan, tilt, crane)
-
-Action.setHeadToLastPoint()
-
-# current head params
-Global.pan
-Global.tilt
-Global.crane
-
-# N.B. these are the [same as/source for] the above:
-VisionLink.getJointSensor(Constant.jHeadPan)
-VisionLink.getJointSensor(Constant.jHeadTilt)
-VisionLink.getJointSensor(Constant.jHeadCrane)
-
-
-# maximum / minimum values for the head:
-Constant.MAX_PAN   # = 93
-Constant.MIN_PAN   # = -93
-Constant.MAX_TILT  # = 3
-Constant.MIN_TILT  # = -80
-Constant.MAX_CRANE # = 50
-Constant.MIN_CRANE # = -20
-
-
-
-
-###
-# walking
-
-Action.walk(forward/back, left/right, rotation)
-
-Action.kick(Action.SOMEKICKTYPE)
-
-hMath.walkSpeedToDistance(speed, type)
-hMath.walkDistanceToSpeed(distance, type)
-
-
-
-
-###
-# maths
-
-
-# arctan( a / b )
-math.atan2(a, b)
-
-
-
-# the following are some pickings from hMath:
-
-hMath.dotProduct2D(vec1x, vec1y, vec2x, vec2y)
-
-hMath.normaliseVector2D(vec1x, vec1y)
-
-# returns -1, 1 or 0 according to the sign of the input
-hMath.sign(x)
-
-hMath.getLength(vec)
-
-hMath.normalise(vec)
-
-# Rotates a 2D vector counter-clockwise by the given angle in degrees
-hMath.rotate(vec, angle, rad = False)
-
-
-
-
-###
-# Coordinates:
-
-
-# Clip a coordinate to a point in the field
-hMath.clipPosition((x,y))
-
-
-# convert a point from local to global coordinates
-hMath.localToGlobalCoordinates(x, y):
-
-# convert a point from global to local coordinates
-hMath.globalToLocalCoordinates(x, y):
-
-
-
-
-###
-# Time:
-
-VisionLink.getCurrentTime()
-
-# RETURN: the time elapsed in MILLI-seconds
-# takes 2 time tuples in (sec, mirco-sec) form,
-hMath.getTimeElapsed(oldTime, newTime = None)
-
-
-
-
-
-###
-# ball stuff
-
-
-Global.vBall.isVisible()
-
-
-
-# this is the Visible x and y position of a point on the ball, on the *ground*, relative to the ground-point under the dog's head
-# these are local coordinates
-# top-view:
-#
-#  ^ 
-#  |
-#  y
-#  |    -'ve     0       +'ve
-#  v   <-------- x ---------->
-#              _____
-#             / head \		
-x, y = VisionLink.getProjectedBall()
-
-
-
-# x and y of a point on the ball (local coords),
-# heading and
-# distance (both relative to neck base)
-# as determined by the Kalman Filter / Baysian stuff
-Global.gpsLocalBall.getPos()
-Global.gpsLocalBall.getHeading()
-Global.gpsLocalBall.getDistance()
-
-# x and y of a point on the ball (global),
-# heading and
-# distance (both relative to neck base)
-# as seen on the camera
-Global.vBall.getPos()
-Global.vBall.getHeading()
-Global.vBall.getVobDistance()
-	
-
-# Global's best guess at where the ball is (using vision AND gps)
-Global.ballX
-Global.ballY
-# distance to the ball
-Global.ballD
-# ball's heading
-Global.ballH
-
-
-# variance of the ball
-# N.B. standard deviation is the square root of the variance
-# assumed to be in cm.
-VisionLink.getGPSBallMaxVar()
-
-
-###
-# robot stuff
-
-# the position of the robot in global coordinates
-Global.selfX
-Global.selfY
-
-# robot's heading
-Global.selfH
-
-
-# Note: these values are retrieved from VisionLink in Global using:
-selfLoc.setVals(*VisionLink.getGPSSelfInfo())
-(selfX, selfY, selfH) = selfLoc.getPose()
-
-
-
-###
-# pretty/cute/debug stuff
-
-Indicator.setFaceLed( a number 1-15 )
-# 13 = red eyes
-# 9 and 10 = white eyes

(Diff truncated)
Rearrange guest lectures.
Note due date of Assignment 2.
diff --git a/lecture_plan.mdwn b/lecture_plan.mdwn
index b630e38..32dc3c8 100644
--- a/lecture_plan.mdwn
+++ b/lecture_plan.mdwn
@@ -152,13 +152,15 @@
 
 #### [[notes/Lecture7A]]
 
-    Planning
-      State Space search
-
+    Reinforcemnt Learning
+      Style of problem
+      Optimality criteria
+      Exploration/Exploitation trade-off
+  
 #### [[notes/Lecture7B]]
 
     Planning
-      Plan space planning
+      State Space search
 
 #### Lab (Computer lab)
 
@@ -168,13 +170,6 @@
 
 #### [[notes/Lecture8A]]
 
-    Reinforcemnt Learning
-      Style of problem
-      Optimality criteria
-      Exploration/Exploitation trade-off
-  
-#### [[notes/Lecture8B]]
-
     Markov Decision Processes
       Formal definition
       Model based updates
@@ -184,9 +179,14 @@
         Q-learning
         Adaptive Heuristic Critic
 
-#### Lab (Computer lab)
+#### [[notes/Lecture8B]]
 
     Planning
+      Plan space planning
+
+#### Lab (Level 3)
+
+    Work on Assignment 3
 
 ### Week 9 22/9
 
@@ -202,9 +202,11 @@
     Introduction to Optimization
       1D Golden Section Search
 
-#### Lab (Level 3)
+    Assignment 2 Due at start of lecture.
 
-    Work on Assignment 3
+#### Lab (Computer lab)
+
+    Planning
 
 ### Mid Semester Break - 29/9
 
diff --git a/notes/Lecture7A.mdwn b/notes/Lecture7A.mdwn
index a8393f1..ca1f0bd 100644
--- a/notes/Lecture7A.mdwn
+++ b/notes/Lecture7A.mdwn
@@ -1 +1,40 @@
-Malcolm Ryan's guest lecture on planning.  His slides are available from [his_web_page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or from the [course_webpage|slides/2005/malcolmr-planning] from the course web page.
+= Course overview =
+== So far ==
+ * Agent Systems
+   * RoboCup
+   * Other robot architectures
+     * Three Layer Architectures (planner/Symbolic reactive/non-symbolic reactive)
+     * Subsumption
+   * Cognitive Architectures
+     * ACT-R
+   * Search
+     * Graph search
+       * BFS/DFS/BFS/A*/Approx A*/Iterative Deepening
+     * Logic spaces
+       * State space planning
+       * Plan space/Partial Order planning
+    * Things for search:
+      * Representation
+      * Model of World
+      * Heuristic
+      * Current State
+
+== Yet to see ==
+ * Some representations for discrete search
+ * Building Models
+ * Building Heuristics
+   * Relationship to hierarchy
+ * Incremental/cached/dynamic programming search
+ * Stochastic worlds
+ * Search through continuous spaces
+ * Incomplete state/partial observability
+ * More on Hierarchy
+ * Adversarial Agents
+
+= Today =
+
+ * Building Models
+   * Try actions in different locations
+   * Learn to predict the results of actions
+   * Machine Learning problem
+   * Need to sample entire space to get model over entire space
diff --git a/notes/Lecture7B.mdwn b/notes/Lecture7B.mdwn
index 7d8f5bf..ead9e64 100644
--- a/notes/Lecture7B.mdwn
+++ b/notes/Lecture7B.mdwn
@@ -1 +1 @@
-Malcolm Ryan's guest lecture on plan space planning.  His slides are available [http://www.cse.unsw.edu.au/~malcolmr/cs3431/ from his web page] or [http://www.cse.unsw.edu.au/~cs3431/slides/2005/malcolmr-planning/ from the course web page].
\ No newline at end of file
+Malcolm Ryan's guest lecture on planning.  His slides are available from [his_web_page](http://www.cse.unsw.edu.au/~malcolmr/cs3431/) or from the [course_webpage|slides/2005/malcolmr-planning] from the course web page.
diff --git a/notes/Lecture8A.mdwn b/notes/Lecture8A.mdwn
index 292483c..f557645 100644
--- a/notes/Lecture8A.mdwn
+++ b/notes/Lecture8A.mdwn
@@ -1,40 +1,42 @@
-= Course overview =
-== So far ==
- * Agent Systems
-   * RoboCup
-   * Other robot architectures
-     * Three Layer Architectures (planner/Symbolic reactive/non-symbolic reactive)
-     * Subsumption
-   * Cognitive Architectures
-     * ACT-R
-   * Search
-     * Graph search
-       * BFS/DFS/BFS/A*/Approx A*/Iterative Deepening
-     * Logic spaces
-       * State space planning
-       * Plan space/Partial Order planning
-    * Things for search:
-      * Representation
-      * Model of World
-      * Heuristic
-      * Current State
-
-== Yet to see ==
- * Some representations for discrete search
+Review
  * Building Models
- * Building Heuristics
-   * Relationship to hierarchy
- * Incremental/cached/dynamic programming search
- * Stochastic worlds
- * Search through continuous spaces
- * Incomplete state/partial observability
- * More on Hierarchy
- * Adversarial Agents
+Today
+ * Building Heuristics (deterministic, goal state(s))
+   * Backward search / Dynamic programming
+     * Both cost and search heuristics
+   * Relaxing problem to find admissible (optimistic) heuristic
+ * Dynamic Programming for Markov Decision Processes
+   * Stochasticity
+   * Random order of update
+     * Value iteration
+     * Policy iteration
+     * Modified Policy iteration
+   * State and state/action value functions
+     * Q(s,a) = E(r + V(s')) = Sum_s' P(s,a,s') ( r + V(s') )
+       * "Expected reward for taking action a in state s and then following policy pi"
+       * Note: P(s,a,s') is the model of the world
+     * V(s) = max_a Q(s, a)
+       * "Expected reward for following policy pi from state s"
+     * pi*(s) = argmax_a Q(s, a)
+       * pi* is the optimal policy (assuming everything has converged)
+   * Other optimality criterion
+     * One way to view what we were doing is to find a policy that maximises the long term sum of reward
+       * sum_{0 < t < infinity} r_t
+       * Maximise "sum of reward" is tricky if sums can be infinite (loops)
+     * infinite horizon, discounted
+       * Find policy to maximise sum_{0 < t < infinity} gamma^t r_t
+       * gamma is:
+         * trick to keep things bounded
+         * Interest rate
+         * (1-gamma) = probability of transitioning to 0-value terminal state each step
+       * Q(s,a) = E(r + gamma V(s'))
+     * average reward
+       * Maximise lim t_max -> infinity 1/t_max sum_{0 < t < t_max} r_t
+  * Discussion
+    * MDP solving finds a complete policy -> looks at entire state space
 
-= Today =
+Introduction to Soft-Max / Boltzmann distribution
+ The formula is p(i) = e^(f(i) / T) / (sum of all probabilities)
 
- * Building Models

(Diff truncated)
Use teximg for formulae
diff --git a/notes/Lecture3B.mdwn b/notes/Lecture3B.mdwn
index 4bd10c3..6729902 100644
--- a/notes/Lecture3B.mdwn
+++ b/notes/Lecture3B.mdwn
@@ -1,22 +1,43 @@
-Representations for Probability distributions:
-
- * Table of values
-   * Discretization effects
- * Particles
-   * Use sampling with replacement to re-normalize
-   * Use motion model to separate duplicates from sampling with replacement
- * Closed form
-   * Conjugate priors - http://www.cis.hut.fi/ahonkela/dippa/node23.html
-     * Basically the initial distribution is of the same class as the transition model (eg both gaussian)
-   * Normal (Gaussian) Distribution:
-     * f(x) = 1/(s sqrt(2pi)) exp(-(x-mu)^2/2s^2)
-     * In multi-dimensions, mean becomes a vector and co-variance (measure of spread) becomes a matrix
-     * Known as a Kalman filter when implemented with Matrix math
-       * Assumes linear-gaussian transition and sensor models (linear function + gaussian noise)
-       * Works well with "any system characterised by continuous state variables and noisy measurements" (R&N p557)
-     * Use tagent as approximation to linear form (linearization) if a distribution is non-gaussian
-   * Also: Beta, Dirichet distributions (the conjugate prior for multinomial distributions)
-
- * Also covered decomposition of P(x,y) into P(x).P(y|x)
-   * e.g. P(x, y, theta) split into P(x, y) and P(theta | x, y)
-   * Much smaller tables, cannot represent correlations
\ No newline at end of file
+Representations for Probability distributions:
+
+
+
+ * Table of values
+
+   * Discretization effects
+
+ * Particles
+
+   * Use sampling with replacement to re-normalize
+
+   * Use motion model to separate duplicates from sampling with replacement
+
+ * Closed form
+
+   * Conjugate priors - http://www.cis.hut.fi/ahonkela/dippa/node23.html
+
+     * Basically the initial distribution is of the same class as the transition model (eg both gaussian)
+
+   * Normal (Gaussian) Distribution:
+
+     * [[!teximg code="f(x) = \frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{( x - \mu )^2}{2 \sigma^2}}"]]
+
+     * In multi-dimensions, mean becomes a vector and co-variance (measure of spread) becomes a matrix
+
+     * Known as a Kalman filter when implemented with Matrix math
+
+       * Assumes linear-gaussian transition and sensor models (linear function + gaussian noise)
+
+       * Works well with "any system characterised by continuous state variables and noisy measurements" (R&N p557)
+
+     * Use tagent as approximation to linear form (linearization) if a distribution is non-gaussian
+
+   * Also: Beta, Dirichet distributions (the conjugate prior for multinomial distributions)
+
+
+
+ * Also covered decomposition of P(x,y) into P(x).P(y|x)
+
+   * e.g. P(x, y, theta) split into P(x, y) and P(theta | x, y)
+
+   * Much smaller tables, cannot represent correlations

Update labs to take into account assignment 1 due date change
diff --git a/lecture_plan.mdwn b/lecture_plan.mdwn
index 55bf444..b630e38 100644
--- a/lecture_plan.mdwn
+++ b/lecture_plan.mdwn
@@ -127,7 +127,7 @@
 
 #### Lab (Level 3)
 
-    Assignment 1 graded in lab
+    Work on assignment 1
   
 ### Week 6 - 1/9
 
@@ -144,9 +144,9 @@
       Mixing Search and Heuristics (Korf)
       Heuristics as simplifications/relaxations
 
-#### Lab (Computer lab)
+#### Lab (Level 3)
 
-    A*/Islands/Heuristics
+    Assignment 1 graded in lab
 
 ### Week 7 - 8/9
 
@@ -162,7 +162,7 @@
 
 #### Lab (Computer lab)
 
-    Planning
+    A*/Islands/Heuristics
 
 ### Week 8 - 15/9
 
@@ -186,7 +186,7 @@
 
 #### Lab (Computer lab)
 
-    Assignement 2 graded in lab
+    Planning
 
 ### Week 9 22/9
 
@@ -202,7 +202,7 @@
     Introduction to Optimization
       1D Golden Section Search
 
-#### Lab (Computer lab)
+#### Lab (Level 3)
 
     Work on Assignment 3
 
@@ -270,6 +270,6 @@
 
     Review
 
-#### Lab
+#### Lab (Level 3)
 
     Assignment 3 graded in lab

Notes on assignment 1
diff --git a/news/Assignment_1.mdwn b/news/Assignment_1.mdwn
new file mode 100644
index 0000000..e4d9f06
--- /dev/null
+++ b/news/Assignment_1.mdwn
@@ -0,0 +1,12 @@
+Hi all,
+  A few notes on Assignment 1.  All of this has been mentioned in class - I'm just documenting it here.
+
+ - The assignment is the same as last year, so you can use last year's assignment sheet: [[assignments/2007/assign1-2007.pdf]]
+ - The due date on the assignment sheet from last year is wrong (that's last year's due date).  Use the one on the [[lecture_plan]] instead.
+ - The due date of the assignment has changed.  You have an extra week now.  It is now due at the start of the week 6 lab (and will be marked in that lab).
+
+If anyone does not have a group for the first assignment they should see me ASAP!
+
+Be well,
+
+Will          :-}

Add a link to the external rules
diff --git a/aibo.mdwn b/aibo.mdwn
index 66ca697..9c12f87 100644
--- a/aibo.mdwn
+++ b/aibo.mdwn
@@ -7,6 +7,8 @@ These pages were all exported from a previous wiki and are in the wrong wiki for
 
 I just added a new page on [[aibo/comp3431/GettingStarted]].
 
+The Robocup 2006 rules are available [here](http://www.tzi.de/4legged/pub/Website/Downloads/Rules2006.pdf)
+
 There are notes from the previous COMP3431 class wiki:
 
 [[!inline pages="aibo/comp3431/*" archive="yes" feeds="no" sort="title"]]
@@ -14,4 +16,3 @@ There are notes from the previous COMP3431 class wiki:
 There are notes from the previous rUNSWift wiki:
 
 [[!inline pages="aibo/*" archive="yes" feeds="no" sort="title"]]
-

Add a note about how to get the diffs
diff --git a/recentchanges.mdwn b/recentchanges.mdwn
new file mode 100644
index 0000000..0ee48be
--- /dev/null
+++ b/recentchanges.mdwn
@@ -0,0 +1,7 @@
+[[!if test="enabled(meta)" then="""
+[[!meta title="RecentChanges"]]
+"""]]
+Recent changes to this wiki: (Note that diffs will appear in the atom feed, but not on this page.)
+
+[[!inline pages="internal(recentchanges/change_*) and !*/Discussion" 
+template=recentchanges show=0]]

Formatting
diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index db62e6a..e8452bd 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -10,12 +10,13 @@ An auto setup script can be run from:
     /home/group09/public/cs3431_setup
 
 Notes:
-Your existing ~/trunk directory will be deleted
-trunk will be checked out to ~/trunk
-Assumes your .bashrc does not already contain the required environmental variables
-Will compile code
-Provides a step by step guide to building a memory stick
-Will always setup a pForward
+
+* Your existing ~/trunk directory will be deleted
+* trunk will be checked out to ~/trunk
+* Assumes your .bashrc does not already contain the required environmental variables
+* Will compile code
+* Provides a step by step guide to building/setting up a memory stick
+* Will always setup a pForward
 
 There is another script that just performs compilation and memory stick copying in:
 

Added instructions for shell script that performs setup
diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index b96720d..db62e6a 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -3,6 +3,25 @@ Getting Started with the rUNSWift AIBO system
 
 An older version of these notes is in [[aibo/GettingStarted]].
 
+### Automated Script for Setup
+
+An auto setup script can be run from:
+
+    /home/group09/public/cs3431_setup
+
+Notes:
+Your existing ~/trunk directory will be deleted
+trunk will be checked out to ~/trunk
+Assumes your .bashrc does not already contain the required environmental variables
+Will compile code
+Provides a step by step guide to building a memory stick
+Will always setup a pForward
+
+There is another script that just performs compilation and memory stick copying in:
+
+    /home/group09/public/new_stick
+
+
 ### Getting the code
 
 Use [subversion](http://subversion.tigris.org) to check out the code.

Change subversion repos url to use svn+ssh:// rather than file://
diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index a9512cc..b96720d 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -7,7 +7,7 @@ An older version of these notes is in [[aibo/GettingStarted]].
 
 Use [subversion](http://subversion.tigris.org) to check out the code.
 
-    svn co file:///data/svn/comp3431/trunk
+    svn co svn+ssh://robolab.cse.unsw.edu.au/data/svn/comp3431/trunk
 
 If you ran this command in your home directory, you should now have a directory called 'trunk' in your home directory.
 

Update notes for recent lecture
diff --git a/notes/Lecture2A.mdwn b/notes/Lecture2A.mdwn
index afdc6a8..36707c0 100644
--- a/notes/Lecture2A.mdwn
+++ b/notes/Lecture2A.mdwn
@@ -1,32 +1,35 @@
-= Low level vision =
-
- * How the dogs see objects
-   * Distance (based on size)
-
- * Steps
-   * Perform ring correction
-   * Obtain symbolic colours
-   * Flood filling
-   * Blob formation with disjoint sets algorithms
-
- * Colour Segmentation
-   * Examples
-   * Maybe colours
-   * Machine learning of Look up Table through Decision Trees, kernel stuff (influence of data points over 
-     surrounding data points), Ripple Down Rules.
-
- * Run length encoding
- * Blobbing
-   * Disjoint Set Algorithms -- Cormen, Leiserson & Rivest, section 22.3
-
- * Other low level vision
-   * German subsampling, uses vertical lines spaced apart, then perform 1D edge detection along these lines to find 
-     edges on the ball and field lines. To find beacons used horizontal lines to find pink blob, then do blobbing around this. 
-
- * High level vision
-   * Object Detection
-     * RANSAC
-   * Sanity checks
-   * Locating an object
-     * Distance based on size
-     * Distance based on ground plane
+ * Colour Spaces or [models](http://en.wikipedia.org/wiki/Color_models)
+   * RGB, [YUV](http://en.wikipedia.org/wiki/YUV), HSV
+   * The AIBOs use YUV natively.
+ * Symbolic colours
+   * Mapping from YUV to symbolic colours
+   * Drop low order bit - use 128x128x128 table
+
+ * Detecting objects
+   * Blobs of colour
+     * Disjoint Set Algorithms -- Cormen, Leiserson & Rivest, section 22.3
+   * Edge detection
+     * Full algorithms are slow (for embedded, serial, computers)
+     * Use a cut-down system that only detects edges in one direction
+     * See [Alex North's honours thesis](http://www.cse.unsw.edu.au/~robocup/2005site/reports05/north05-subsampled.pdf)
+
+ * Detecting the ball
+   * Circles of orange edge
+   * Use [RANSAC](http://en.wikipedia.org/wiki/RANSAC) style algorithm to find the ball (again, see Alex's thesis for details)
+
+ * Distance to objects
+   * Size
+     * Integer size causes large distance jumps at around 2m
+     * Use average size (e.g. sqrt(num pixels) or average height across a number of columns of pixels)
+   * Projection
+     * If we know an object is on the ground, we can use kinematics to find out its location relative to our head
+     * Ball
+          * Project centre of ball onto 1-radius high plane
+   * For ball, size is better at long distances, projection is better up close
+
+ * Where to look
+   * If you look at the centre of the ball, then when it is close you just see orange everywhere and cannot localise it accurately
+
+ * Ring correction
+   * The ERS-7 model AIBOs had an awful camera with chromatic distortion
+   * 'Ring correction' used a lookup table to partially correct for this before further processing

Fill out details of aibo kinematics
diff --git a/notes/Lecture2B.mdwn b/notes/Lecture2B.mdwn
index 5b88588..0457895 100644
--- a/notes/Lecture2B.mdwn
+++ b/notes/Lecture2B.mdwn
@@ -1,13 +1,39 @@
- * Kinematics
-   * source:trunk/robot/actuatorControl/legsGeometry.cc
-     * Line 23 - robot geometry
-     * Line 74 - leg kinematics
-   * source:trunk/robot/vision/PointProjection.h
-     * Line 399 - head kinematics
-
- * Inverse Kinematics
-   * source:trunk/robot/actuatorControl/legsGeometry.cc
-     * Line 108
-   * source:trunk/robot/actuatorControl/HeadKinematics.cc
-     * Line 53
-
+ * Linear algebra
+   * Use vector for location
+   * Add vectors to translate
+   * Multiply by appropriate matrix to rotate (see [Rotation Matrix](http://en.wikipedia.org/wiki/Rotation_matrix))
+   * Note that rotation is not commutative
+ * Kinematics: Find the location of the limb given the joint angles
+   * Start at base of robot limb
+   * Repeat
+     * Translate along next limb segment
+     * Rotate to account for joint angle
+   * Note that for the camera stuff we want both location and angle of the camera
+     * For angle:
+       * Start a unit vector at the origin pointing in a reference direction
+       * Do the same thing as for location, but leave out the translations
+   * source
+     * trunk/robot/actuatorControl/legsGeometry.cc
+         * Line 69 - robot geometry
+         * Line 156 - leg kinematics
+     * trunk/robot/vision/PointProjection.h
+         * Line 701 - head kinematics
+ * Inverse Kinematics: Given a desired location of a limb, find the joint angles required
+   * Often an under-specified problem
+   * AIBO legs
+     * First use total distance of end-point to find knee angle
+     * Then treat entire leg as one piece
+     * Get distance sideways from body with abductor
+     * Get forward-back distance with rotator
+   * AIBO head
+     * Approach has changed as head geometry has changed
+     * Assume Crane is 90 degrees
+     * Find tilt using just y and z    (y = height, z = forward, x = left)
+     * Assume that we're only getting tilt to do part of this (65%)
+     * Fix tilt at that value, then use crane and pan to point at the final point
+     * Note that camera is offset
+   * source
+     * trunk/robot/actuatorControl/legsGeometry.cc
+         * Line 190
+     * trunk/robot/actuatorControl/HeadKinematics.cc
+         * Line 99

More on subversion
diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index 8ca3d27..a9512cc 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -5,12 +5,18 @@ An older version of these notes is in [[aibo/GettingStarted]].
 
 ### Getting the code
 
-Use [subversion](http://subverison.tigris.org) to check out the code.
+Use [subversion](http://subversion.tigris.org) to check out the code.
 
     svn co file:///data/svn/comp3431/trunk
 
 If you ran this command in your home directory, you should now have a directory called 'trunk' in your home directory.
 
+Remember that you can type:
+
+    svn help
+
+To get help on using subversion.  You can also look at the [subversion book](http://svnbook.red-bean.com) for more help.
+
 ### Setting up your home directory
 
 You'll need to edit the login scripts to set some environment variables.  Login scripts are scripts like ".profile", ".bashrc", etc.  If you checked out the source into your home directory, then adding the following lines to the end of your login script should work:

Correct spacing
diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
index baa682f..8ca3d27 100644
--- a/aibo/comp3431/GettingStarted.mdwn
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -6,6 +6,7 @@ An older version of these notes is in [[aibo/GettingStarted]].
 ### Getting the code
 
 Use [subversion](http://subverison.tigris.org) to check out the code.
+
     svn co file:///data/svn/comp3431/trunk
 
 If you ran this command in your home directory, you should now have a directory called 'trunk' in your home directory.

Add a new 'Getting Started' page. Turns out it is very similar to the old one...
diff --git a/aibo.mdwn b/aibo.mdwn
index 86ad1a3..66ca697 100644
--- a/aibo.mdwn
+++ b/aibo.mdwn
@@ -5,6 +5,8 @@ These notes describe the rUNSWift code for driving the Sony AIBO robots.  The mo
 
 These pages were all exported from a previous wiki and are in the wrong wiki format for this wiki.  This wiki uses [[ikiwiki/Markdown]] as its format, whereas the previous wiki used the [Trac](http://trac.edgewall.org/) wiki format.  At the moment you'll just see the raw Trac wikitext, but it is still very readable.  Feel free to convert the information.
 
+I just added a new page on [[aibo/comp3431/GettingStarted]].
+
 There are notes from the previous COMP3431 class wiki:
 
 [[!inline pages="aibo/comp3431/*" archive="yes" feeds="no" sort="title"]]
diff --git a/aibo/comp3431/GettingStarted.mdwn b/aibo/comp3431/GettingStarted.mdwn
new file mode 100644
index 0000000..baa682f
--- /dev/null
+++ b/aibo/comp3431/GettingStarted.mdwn
@@ -0,0 +1,57 @@
+Getting Started with the rUNSWift AIBO system
+=============================================
+
+An older version of these notes is in [[aibo/GettingStarted]].
+
+### Getting the code
+
+Use [subversion](http://subverison.tigris.org) to check out the code.
+    svn co file:///data/svn/comp3431/trunk
+
+If you ran this command in your home directory, you should now have a directory called 'trunk' in your home directory.
+
+### Setting up your home directory
+
+You'll need to edit the login scripts to set some environment variables.  Login scripts are scripts like ".profile", ".bashrc", etc.  If you checked out the source into your home directory, then adding the following lines to the end of your login script should work:
+
+    export ROBOCUP_DIR=~/trunk
+    export PATH=$PATH:${ROBOCUP_DIR}/bin:${ROBOCUP_DIR}/robot/bin
+
+### Building the robot binaries
+
+Change into the trunk/robot directory and type 'make'.
+
+### Making a memory stick
+
+Insert a memory stick into the computer.  If the computer mounts the memory stick itself, then you'll need to check it is mounted in the right spot.  Run "memstick_path" to get the directory where the build system is expecting to find the memory stick.  If this is incorrect, then you can either remount the memory stick in the right location, or edit the "memstick_path" script so that it gives the correct location.  The standard location is "/media/ms".
+
+If the computer doesn't mount the memory stick itself, then you should be able to mount the memory stick with the 'mountms' script.  If this doesn't mount the memory stick, then you'll need to figure out why.
+
+You should never eject a memory stick without unmounting it first.  Most of the robocup scripts will do this for you.  You should never eject the memory stick before the scripts have finished unmounting it.
+
+#### The first time you use a memory stick
+
+The very first time you use a memory stick, you should format it if you can.  You should only do this with a Sony brand device.  We've had problems with sticks breaking when formatted with non-Sony devices.  If you re-format a memory stick, you should rename it to 'ms'.
+
+Once formatted, you can copy the Aperios operating system onto the memory stick with the command 'os'.  This command will delete everything on the memory stick and copy the operating system onto the memory stick.
+
+#### Configuring the robot
+
+The command 'spip' is used to Set the Player and IP.
+
+    spip playerModule IP_Postfix [playerNum] [teamNum]
+
+e.g.
+
+    spip pForward 142
+
+Choose IP addresses of the form 1TP there T is the team number, and P is the player number (usually 1-4).
+
+#### Copying the rUNSWift code to the memory stick
+
+The "ins" command copies the compiled binaries and config files to the memory stick.
+
+#### Notes
+
+I removed the calls to coverage.py as many systems don't have this and it is not very useful for the class.
+

Add a link to the AIBO page to the side-bar
diff --git a/sidebar.mdwn b/sidebar.mdwn
index d2a6d28..c7bc7af 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -6,3 +6,4 @@ Quick Links
  - [[Lecture_plan]]
  - [[Assignments]]
  - [[Site_Map|Map]]
+ - [[aibo]]

Remove the z-index again as it doesn't achieve what I wanted...
diff --git a/local.css b/local.css
index b381bde..4d3bd7a 100644
--- a/local.css
+++ b/local.css
@@ -1,7 +1,6 @@
 #sidebar {
 	border: 1px solid;
 	background: white;
-	z-index: 5;
 }	
 
 #sidebar h1 {

Replace recentchanges width.
Add sidebar z-index.
diff --git a/local.css b/local.css
index 8ba75b2..b381bde 100644
--- a/local.css
+++ b/local.css
@@ -1,12 +1,9 @@
 #sidebar {
 	border: 1px solid;
 	background: white;
+	z-index: 5;
 }	
 
 #sidebar h1 {
 	text-align: center;
 }
-
-div.recentchanges {
-	width: auto;
-}

Play with recentchanges width
diff --git a/local.css b/local.css
index 4d3bd7a..8ba75b2 100644
--- a/local.css
+++ b/local.css
@@ -6,3 +6,7 @@
 #sidebar h1 {
 	text-align: center;
 }
+
+div.recentchanges {
+	width: auto;
+}

Force the sidebar to have a white background
diff --git a/local.css b/local.css
index 8f0c5a9..4d3bd7a 100644
--- a/local.css
+++ b/local.css
@@ -1,5 +1,6 @@
 #sidebar {
 	border: 1px solid;
+	background: white;
 }	
 
 #sidebar h1 {

More indent fixes
diff --git a/notes/Lecture1B.mdwn b/notes/Lecture1B.mdwn
index daf54d0..4538f4c 100644
--- a/notes/Lecture1B.mdwn
+++ b/notes/Lecture1B.mdwn
@@ -2,37 +2,37 @@
    * Aperios
      * Embedded C/C++
      * http://www.openr.org/
-     * RoboCup Wiki
-     * Aperios objects
-         * Shared memory
-         * Message Passing
-         * Lacks normal linking
-     * Our Objects/systems
-         * Vision
-         * Tracking
-             * Location
-             * Ball
-             * Opponents
-             * Wireless teammates
-         * Behaviours
-             * Python language
-             * Python/C interface
-             * PyCode
-             * TOIB/Modules
-         * Wireless
-             * TCP gateway
-             * TCP
-             * UDP
-         * ActuatorControl
-             * Walks
-             * Motions
-             * Odometry/stepComplete
-             * HeadControl
-             * PWalk
-      * Flow Control between objects
-      * Interfaces between objects
-      * OfflineVision
-      * OffActuator
+     * RoboCup Wiki - [[aibo]]
+   * Aperios objects
+       * Shared memory
+       * Message Passing
+       * Lacks normal linking
+   * Our Objects/systems
+       * Vision
+       * Tracking
+           * Location
+           * Ball
+           * Opponents
+           * Wireless teammates
+       * Behaviours
+           * Python language
+           * Python/C interface
+           * PyCode
+           * TOIB/Modules
+       * Wireless
+           * TCP gateway
+           * TCP
+           * UDP
+       * ActuatorControl
+           * Walks
+           * Motions
+           * Odometry/stepComplete
+           * HeadControl
+           * PWalk
+    * Flow Control between objects
+    * Interfaces between objects
+    * OfflineVision
+    * OffActuator
 
 == The Himalayan Tea Ceremony ==
 

fix spacing
diff --git a/notes/Lecture1B.mdwn b/notes/Lecture1B.mdwn
index 60a4c78..daf54d0 100644
--- a/notes/Lecture1B.mdwn
+++ b/notes/Lecture1B.mdwn
@@ -1,85 +1,43 @@
  * rUNSWift overview
-
    * Aperios
-
      * Embedded C/C++
-
      * http://www.openr.org/
-
      * RoboCup Wiki
-
      * Aperios objects
-
-       * Shared memory
-
-       * Message Passing
-
-       * Lacks normal linking
-
+         * Shared memory
+         * Message Passing
+         * Lacks normal linking
      * Our Objects/systems
-
-       * Vision
-
-       * Tracking
-
-         * Location
-
-         * Ball
-
-         * Opponents
-
-         * Wireless teammates
-
-       * Behaviours
-
-         * Python language
-
-         * Python/C interface
-
-         * PyCode
-
-         * TOIB/Modules
-
-       * Wireless
-
-         * TCP gateway
-
-         * TCP
-
-         * UDP
-
-       * ActuatorControl
-
-         * Walks
-
-         * Motions
-
-         * Odometry/stepComplete
-
-         * HeadControl
-
-         * PWalk
-
+         * Vision
+         * Tracking
+             * Location
+             * Ball
+             * Opponents
+             * Wireless teammates
+         * Behaviours
+             * Python language
+             * Python/C interface
+             * PyCode
+             * TOIB/Modules
+         * Wireless
+             * TCP gateway
+             * TCP
+             * UDP
+         * ActuatorControl
+             * Walks
+             * Motions
+             * Odometry/stepComplete
+             * HeadControl
+             * PWalk
       * Flow Control between objects
-
       * Interfaces between objects
-
       * OfflineVision
-
       * OffActuator
 
-
-
 == The Himalayan Tea Ceremony ==
 
-
-
 In the inns of certain Himalayan villages is practiced a most civilized and refined tea ceremony. The ceremony involves a host and exactly two guests, neither more nor less. When his guests have arrived and seated themselves at his table, the host performs three services for them. These services are listed in order of the nobility that the Himalayans attribute to them: (1) Stoking the Fire, (2) Pouring the Tea, and (3) Reciting Poetry. During the ceremony, any of those present may ask another, "Honored Sir, may I perform this onerous task for you?" However, a person may request of another only the least noble of the tasks which the other is performing. Further, if a person is performing any tasks, then he may not request a task that is nobler than the least noble task he is already performing. Custom requires that by the time the tea ceremony is over, all the tasks will have been transferred from the host to the more senior of the guests. How may this be accomplished?
 
-
-
 == Mutilated Tiling Problem ==
 
-
-
 You have an 8x8 grid, and a set of identical rectangular tiles.  Each tile can cover two squares in the grid.  If the grid is mutilated so that two diagonally opposite corners are removed, show how the remaining squares in the grid can be covered with the tiles, or if this is not possible, show why not.

Remove incorrect information
diff --git a/notes/Lecture1B.mdwn b/notes/Lecture1B.mdwn
index a6ca255..60a4c78 100644
--- a/notes/Lecture1B.mdwn
+++ b/notes/Lecture1B.mdwn
@@ -1,43 +1,85 @@
- * rUNSWift overview
-   * Aperios
-     * Embedded C/C++
-     * http://www.openr.org/
-     * RoboCup Wiki
-     * Aperios objects
-       * Shared memory
-       * Message Passing
-       * Lacks normal linking
-     * Our Objects/systems
-       * Vision
-       * Tracking
-         * Location
-         * Ball
-         * Opponents
-         * Wireless teammates
-       * Behaviours
-         * Python language
-         * Python/C interface
-         * PyCode
-         * TOIB/Modules
-       * Wireless
-         * TCP gateway
-         * TCP
-         * UDP
-       * ActuatorControl
-         * Walks
-         * Motions
-         * Odometry/stepComplete
-         * HeadControl
-         * PWalk
-      * Flow Control between objects
-      * Interfaces between objects
-      * OfflineVision
-      * OffActuator
-
-== The Himalayan Tea Ceremony ==
-
-In the inns of certain Himalayan villages is practiced a most civilized and refined tea ceremony. The ceremony involves a host and exactly two guests, neither more nor less. When his guests have arrived and seated themselves at his table, the host performs three services for them. These services are listed in order of the nobility that the Himalayans attribute to them: (1) Stoking the Fire, (2) Pouring the Tea, and (3) Reciting Poetry. During the ceremony, any of those present may ask another, "Honored Sir, may I perform this onerous task for you?" However, a person may request of another only the least noble of the tasks which the other is performing. Further, if a person is performing any tasks, then he may not request a task that is nobler than the least noble task he is already performing. Custom requires that by the time the tea ceremony is over, all the tasks will have been transferred from the host to the more senior of the guests. How may this be accomplished?
-
-== Mutilated Tiling Problem ==
-
-You have an 8x8 grid, and 31 rectangular tiles.  Each tile can cover two squares in the grid.  If the grid is mutilated so that two diagonally opposite corners are removed, show how the remaining squares in the grid can be covered with the 31 tiles, or if this is not possible, show why not.
+ * rUNSWift overview
+
+   * Aperios
+
+     * Embedded C/C++
+
+     * http://www.openr.org/
+
+     * RoboCup Wiki
+
+     * Aperios objects
+
+       * Shared memory
+
+       * Message Passing
+
+       * Lacks normal linking
+
+     * Our Objects/systems
+
+       * Vision
+
+       * Tracking
+
+         * Location
+
+         * Ball
+
+         * Opponents
+
+         * Wireless teammates
+
+       * Behaviours
+
+         * Python language
+
+         * Python/C interface
+
+         * PyCode
+
+         * TOIB/Modules
+
+       * Wireless
+
+         * TCP gateway
+
+         * TCP
+
+         * UDP
+
+       * ActuatorControl
+
+         * Walks
+
+         * Motions
+
+         * Odometry/stepComplete
+
+         * HeadControl
+
+         * PWalk
+
+      * Flow Control between objects
+
+      * Interfaces between objects
+
+      * OfflineVision
+
+      * OffActuator
+
+
+
+== The Himalayan Tea Ceremony ==
+
+
+
+In the inns of certain Himalayan villages is practiced a most civilized and refined tea ceremony. The ceremony involves a host and exactly two guests, neither more nor less. When his guests have arrived and seated themselves at his table, the host performs three services for them. These services are listed in order of the nobility that the Himalayans attribute to them: (1) Stoking the Fire, (2) Pouring the Tea, and (3) Reciting Poetry. During the ceremony, any of those present may ask another, "Honored Sir, may I perform this onerous task for you?" However, a person may request of another only the least noble of the tasks which the other is performing. Further, if a person is performing any tasks, then he may not request a task that is nobler than the least noble task he is already performing. Custom requires that by the time the tea ceremony is over, all the tasks will have been transferred from the host to the more senior of the guests. How may this be accomplished?
+
+
+
+== Mutilated Tiling Problem ==
+
+
+
+You have an 8x8 grid, and a set of identical rectangular tiles.  Each tile can cover two squares in the grid.  If the grid is mutilated so that two diagonally opposite corners are removed, show how the remaining squares in the grid can be covered with the tiles, or if this is not possible, show why not.

Rename files pulled from the old wiki to have .txt after their name.
diff --git a/aibo/AperiosOpenR b/aibo/AperiosOpenR
deleted file mode 100644
index 28f91f3..0000000
--- a/aibo/AperiosOpenR
+++ /dev/null
@@ -1,104 +0,0 @@
-= Aperios OPEN-R =
-
-Aperios is a proprietary operating system from Sony, and OPEN-R is our interface to the robot.
-
-See also [wiki:AperiosObjects Aperios Objects] for details of how we fit our code into Aperios.
-
-== Overview ==
-
-OPEN-R software is modular and object oriented (not in the C++/Java sense, but the COM/CORBA sense). Processing is performed by multiple objects running concurrently and communicating via interobject communication. Connections between objects are specified in an external description file (stub.cfg). Connection ports in objects are identified by service name. The system layer (access to sensors and actuators) is also implemented by inter-object communication.
-
-An object is similar to a UNIX process in that it is implemented by an executable file and runs concurrently with other objects (N.B. we don't know how the task switching works on AIBO). However, unlike UNIX processes objects have multiple entry points. Objects exchange information using message passing. A message contains a selector and some data; the selector identifies which method of the object to run and the data provides arguments. Objects are internally single threaded - an object can process only one message at a time. Additional messages wait in a queue.
-
-== Inter-object communication ==
-When two objects communicate, the side that sends data is called the "subject",  and the side that receives data is called the "observer". (subject --data--> observer) 
-
-When the observer is ready to receive data, the observer sends a "ASSERT-READY" message to the subject. Otherwise, the observer sends "DEASSERT-READY" to the subject. When the subject receives ASSERT-READY from the observer, the subject starts to send data to the observer. After the observer receives this data and is ready to receive the next data, the subject sends ASSERT-READY again.
-
-== Core class ==
-A core class is a C++ class that represents an object. Each object should be represented by only one core class.
-
-Characteristics of a core class:
- * A core class inherits from the OObject class. 
- * A core class implements {{{DoInit()}}}, {{{DoStart()}}}, {{{DoStop()}}}, {{{DoDestroy()}}}. 
- * A core class has the necessary number of OSubject and OObserver. Example:
-{{{
-    OSubject* subject[numOfSubject]; 
-    OObserver* observer[numOfObserver]; 
-}}}
- * numOfSubject and numOfObserver are defined in def.h that is generated by the stubgen2 command. 
-
-more coming...
-
-== Stub ==
-Stub is a specification of OPEN-R object. 
-Every OPEN-R object you define, you must have a stub file and usually called stub.cfg. 
-Currently, in our rUNSWift architecture, we have four (I think...) OPEN-R objects namely: 
- * vision 
- * actuator
- * wireless
- * GameController
-Thus, we have four stub files and they reside in vision, actuatorControl, GameController and wireless directories respectively. 
-Each OPEN-R object has several services that can be invoked between objects and each of these services is defined as 
-
-"(Connection name)", (Member function 1), (Member fuction 2) 
-
-* Connection name - The connection name consists of the following items. 
-(Object name).(Subname).(Data name).(Service type)
-
-Object Name - Any name you want, but usually the core class name. 
-
-Subname - This is a service name and must be unique. Do not use the same subname that other serivces use. 
-
-Data Name - This is the name corresponding to the data type used in inter-object communication. 
-
-Service Type - S for subject and O for observer. 
-
-* Member function 1 - This member function is called when a connection result is received. 
-
-* Member function 2 - If this service is for observers, this function is called when a message is received from a subject. If this service is for subjects, this function is called when ASSERT-READY or DEASSERT-READY is received from an observer. 
-
-Below is a snippet of stub.cfg in vision directory.
-Explanation on this snippet is coming soon. 
-{{{
-ObjectName : Vision
-NumOfOSubject   : 8
-NumOfOObserver  : 7
-
-Service : "Vision.SetIndication.int.S", 		null, null
-...
-Service : "Vision.Sensor.OSensorFrameVectorData.O", 	null, ResultSensor()
-...
-}}}
-
-== OPEN-R Configuration Files ==
-
-=== OBJECT.CFG ===
-This file lists all of the objects that the dog will load and execute.
-
-=== CONNECT.CFG ===
-There needs to be a way to interconnect all the objects and their interfaces. These interfaces are defined in each object's respective stub.cfg file. Then by using a connect.cfg file, it will draw links between the interfaces on stub.cfg files.
-
-=== DESIGNDB.CFG ===
-
-
-== Building the bin file ==
-
-== Some History ==
-Currently, rUNSWift has different OPEN-R objects like vision, actuator and wireless. 
-However, in 2002 rUNSWift, they only had one OPEN-R object that did everything. 
-Since OPEN-R object is single threaded, there was a significant performance slow down in using wireless. 
-When the object was handling wireless process (e.g. AIBOs communicating each other), it blocked out all the other requested services like vision and actuator.  
-So, M. S. K. told me that 2002 rUNSWift decided not to use wireless at all! (interesting)
-Which means AIBOs weren't communicating each other... which also means no team work between AIBOs in 2002? 
-
-Thus, in 2003 or 2004? rUNSWift introduced other OPEN-R objects like wireless... So that when AIBOs communicate via wireless, wireless process won't block other processes, thereby smoothing actuator and vision processes.    
-
-== Note ==
- * The senser data is sent every 32ms (frequency = 31.25Hz)   (open-r::Level2!ReferenceGuilde.pdf)
- * 3 types of data used for communication:
-{{{
-    OCommandVectorData
-    OSensorFrameVectorData
-    OFbkImageVectorData
-}}}
diff --git a/aibo/AperiosOpenR.txt b/aibo/AperiosOpenR.txt
new file mode 100644
index 0000000..28f91f3
--- /dev/null
+++ b/aibo/AperiosOpenR.txt
@@ -0,0 +1,104 @@
+= Aperios OPEN-R =
+
+Aperios is a proprietary operating system from Sony, and OPEN-R is our interface to the robot.
+
+See also [wiki:AperiosObjects Aperios Objects] for details of how we fit our code into Aperios.
+
+== Overview ==
+
+OPEN-R software is modular and object oriented (not in the C++/Java sense, but the COM/CORBA sense). Processing is performed by multiple objects running concurrently and communicating via interobject communication. Connections between objects are specified in an external description file (stub.cfg). Connection ports in objects are identified by service name. The system layer (access to sensors and actuators) is also implemented by inter-object communication.
+
+An object is similar to a UNIX process in that it is implemented by an executable file and runs concurrently with other objects (N.B. we don't know how the task switching works on AIBO). However, unlike UNIX processes objects have multiple entry points. Objects exchange information using message passing. A message contains a selector and some data; the selector identifies which method of the object to run and the data provides arguments. Objects are internally single threaded - an object can process only one message at a time. Additional messages wait in a queue.
+
+== Inter-object communication ==
+When two objects communicate, the side that sends data is called the "subject",  and the side that receives data is called the "observer". (subject --data--> observer) 
+
+When the observer is ready to receive data, the observer sends a "ASSERT-READY" message to the subject. Otherwise, the observer sends "DEASSERT-READY" to the subject. When the subject receives ASSERT-READY from the observer, the subject starts to send data to the observer. After the observer receives this data and is ready to receive the next data, the subject sends ASSERT-READY again.
+
+== Core class ==
+A core class is a C++ class that represents an object. Each object should be represented by only one core class.
+
+Characteristics of a core class:
+ * A core class inherits from the OObject class. 
+ * A core class implements {{{DoInit()}}}, {{{DoStart()}}}, {{{DoStop()}}}, {{{DoDestroy()}}}. 
+ * A core class has the necessary number of OSubject and OObserver. Example:
+{{{
+    OSubject* subject[numOfSubject]; 
+    OObserver* observer[numOfObserver]; 
+}}}
+ * numOfSubject and numOfObserver are defined in def.h that is generated by the stubgen2 command. 
+
+more coming...
+
+== Stub ==
+Stub is a specification of OPEN-R object. 
+Every OPEN-R object you define, you must have a stub file and usually called stub.cfg. 
+Currently, in our rUNSWift architecture, we have four (I think...) OPEN-R objects namely: 
+ * vision 
+ * actuator
+ * wireless
+ * GameController
+Thus, we have four stub files and they reside in vision, actuatorControl, GameController and wireless directories respectively. 
+Each OPEN-R object has several services that can be invoked between objects and each of these services is defined as 
+
+"(Connection name)", (Member function 1), (Member fuction 2) 
+
+* Connection name - The connection name consists of the following items. 
+(Object name).(Subname).(Data name).(Service type)
+
+Object Name - Any name you want, but usually the core class name. 
+
+Subname - This is a service name and must be unique. Do not use the same subname that other serivces use. 
+
+Data Name - This is the name corresponding to the data type used in inter-object communication. 
+
+Service Type - S for subject and O for observer. 
+
+* Member function 1 - This member function is called when a connection result is received. 
+
+* Member function 2 - If this service is for observers, this function is called when a message is received from a subject. If this service is for subjects, this function is called when ASSERT-READY or DEASSERT-READY is received from an observer. 
+
+Below is a snippet of stub.cfg in vision directory.
+Explanation on this snippet is coming soon. 
+{{{
+ObjectName : Vision
+NumOfOSubject   : 8
+NumOfOObserver  : 7
+
+Service : "Vision.SetIndication.int.S", 		null, null
+...
+Service : "Vision.Sensor.OSensorFrameVectorData.O", 	null, ResultSensor()
+...
+}}}
+
+== OPEN-R Configuration Files ==
+
+=== OBJECT.CFG ===
+This file lists all of the objects that the dog will load and execute.
+
+=== CONNECT.CFG ===
+There needs to be a way to interconnect all the objects and their interfaces. These interfaces are defined in each object's respective stub.cfg file. Then by using a connect.cfg file, it will draw links between the interfaces on stub.cfg files.
+
+=== DESIGNDB.CFG ===
+
+

(Diff truncated)
small updates & spacing change
diff --git a/notes/Lecture1A.mdwn b/notes/Lecture1A.mdwn
index 0aa1ab9..14c825d 100644
--- a/notes/Lecture1A.mdwn
+++ b/notes/Lecture1A.mdwn
@@ -1,73 +1,75 @@
- * Course Overview
-   * What is course about?
-     * AI as what humans do
-     * AI as what we cannot do yet
-     * AI as systems to achieve weak goals
-   * Overview vs detail - some of each
-   * Aiming at top of class
-   * Discussion in class - need to take own notes - almost problem based learning
-   * Plagiarism policy
-   * Systems, search, bayes
-   * Representation is important
-
- * Agents building = system building
-   * KISS ( Keep It Short & Simple)
-     * Premature profiling is the root of all evil
-     * Good software engineering helps
-     * Code reviews
-     * Only as strong as weakest link
-     * Trade-offs between approaches
-
- * Approximation:
-   * Take a machine learning course
-   * Bayes' Rule
-
- * Overview of Agent in world
-
- * Types of systems:
-   * Discrete vs Continuous
-     * Finite vs Infinite
-     * Continuous/Smooth vs Discontinuous
-       * Discrete is usually linked with Discontinuous because it tends to have "jumps"
-   * Fully Observable vs Partially Observable
-     * Fully Observable - when agent sensors world means it knows everything about the world
-     * Partially Observable - almost all real agents can only see what they can observe through sensors
-   * Markov vs. Non-markov
-     * Assuming time is discrete
-     * In Markov model, what state is happening at the moment does not depend on what state & action in previous time 
-     * It is not necessary to remember the full history, since we only want to record sufficient statistics to be able to predict what happens next
-   * Deterministic vs Non-deterministic vs Stochastic (Non-deterministic with probabilities)
-     * Deterministic, no probability
-     * Non-deterministic, occasionally probability is given
-     * Stochastic, probability is always given
-   * Implicit vs explicit time
-     * Systems often have collection of states & actions
-     * Implicit time means all action to change state I into state II assume 1 time step
-   * Tracking vs Acting
-     * Acting --> at every time step, perform an action, given sufficient statistics
-     * Tracking --> the world perform the change for the agent, finding sufficient statistic to find a state or an action to perform. (can be think of a subset of Acting)
-   * Online vs Offline  (Anytime algs)
-     * Offline - Not attached to robot
-     * Online - continuous problems
-   * Stationary vs Non-stationary (world changes over time without actions of agent)
-
- * Goal types:
-   * Goal = state
-   * Goal = trajectory
-     * Goal is specified in a path, go through X states of states (exact goal)
-   * Maintenance goals
-   * Reward (Loss)
-
- * Plan types:
-   * Complete policy
-   * Markov policy
-     * All history is irrelevant
-   * Linear plan
-   * Telioreactive plan
-
- * Representation:
-   * Raw states
-   * Decomposed state space ( have list of variables and coordinate system)
-   * Predicate calculus  (boolean predicates)
-   * First order calculus  (relations)
-   * Turing complete
+ * Course Overview
+   * What is course about?
+     * AI as what humans do
+     * AI as what we cannot do yet
+     * AI as systems to achieve weak goals
+   * Overview vs detail - some of each
+   * Aiming at top of class
+   * Discussion in class - need to take own notes - almost problem based learning
+   * Plagiarism policy
+   * Systems, search, bayes
+   * Representation is important
+
+ * Agents building = system building
+   * KISS ( Keep It Simple & Stupid)
+     * Premature profiling is the root of all evil
+     * Good software engineering helps
+     * Code reviews
+     * Only as strong as weakest link
+     * Trade-offs between approaches
+
+ * Approximation:
+   * Take a machine learning course
+   * Bayes' Rule
+
+ * Overview of Agent in world
+
+ * Types of systems:
+
+   * Discrete vs Continuous
+     * Finite vs Infinite
+     * Continuous (Smooth, Discontinuous, etc)
+         * Discrete is usually linked with Discontinuous because it tends to have "jumps"
+   * Fully Observable vs Partially Observable
+     * Fully Observable - when agent sensors world means it knows everything about the world
+     * Partially Observable - almost all real agents can only see what they can observe through sensors
+   * Markov vs. Non-markov
+     * Assuming time is discrete
+     * In Markov model, what state is happening at the moment does not depend on what state & action in previous time 
+     * It is not necessary to remember the full history, since we only want to record sufficient statistics to be able to predict what happens next
+   * Deterministic vs Non-deterministic vs Stochastic (Non-deterministic with probabilities)
+     * Deterministic, no probability
+     * Non-deterministic, occasionally probability is given
+     * Stochastic, probability is always given
+   * Implicit vs explicit time
+     * Systems often have collection of states & actions
+     * Implicit time means all action to change state I into state II assume 1 time step
+   * Tracking vs Acting
+     * Acting --> at every time step, perform an action, given sufficient statistics
+     * Tracking --> the world perform the change for the agent, finding sufficient statistic to find a state or an action to perform. (can be think of a subset of Acting)
+   * Online vs Offline  (Anytime algs)
+     * Offline - Not attached to robot
+     * Online - continuous problems
+   * Stationary vs Non-stationary (world changes over time without actions of agent)
+
+ * Goal types:
+   * Goal = state
+   * Goal = trajectory
+     * Goal is specified in a path, go through X states of states (exact goal)
+   * Maintenance goals
+   * Reward (Loss)
+
+ * Plan types:
+   * Complete policy
+   * Markov policy
+     * Only previous state (not the prior history) is relevant
+   * Linear plan
+   * Telioreactive plan
+
+
+ * Representation: (See [Chomsky Hierarchy](http://en.wikipedia.org/wiki/Chomsky_hierarchy) of Languages)
+   * Raw states
+   * Decomposed state space ( have list of variables - a coordinate system )
+   * Propositional calculus  (boolean set of variables)
+   * First order (Predicate) calculus  (relations)
+   * Turing complete

Feedback from timetabling meeting
diff --git a/news/Timetable_Changes.mdwn b/news/Timetable_Changes.mdwn
new file mode 100644
index 0000000..4bef435
--- /dev/null
+++ b/news/Timetable_Changes.mdwn
@@ -0,0 +1,13 @@
+Hi all,
+
+  Just a quick note about what happened at the timetabling meeting last Thursday.
+
+- There were no clash-free times to move the Thursday class to.  (Monday afternoon was best, but wasn't any better than the current time, and I'd prefer to leave things as they are if possible.)
+- I found out that one of the other classes that was clashing is planning to move, and it appears it is easier for them to move than for us.
+- I am trying to expand the size of the 11am lab on Tuesday and cancel the noon lab.  Noone at the meeting had a problem with this and it will make things run more smoothly.
+
+Overview: No changes in lecture times.  I'm looking to cancel the noon lab and just run the 11am lab.
+
+See you all tomorrow,
+
+Will

more css stuff
diff --git a/local.css b/local.css
index a2465b3..8f0c5a9 100644
--- a/local.css
+++ b/local.css
@@ -1,5 +1,5 @@
 #sidebar {
-	border: 1px solid #FFFFFF;
+	border: 1px solid;
 }	
 
 #sidebar h1 {

Try css changes again
diff --git a/local.css b/local.css
index 82547f9..a2465b3 100644
--- a/local.css
+++ b/local.css
@@ -1,51 +1,7 @@
 #sidebar {
+	border: 1px solid #FFFFFF;
 }	
 
 #sidebar h1 {
-	margin: 10px 0 0 0;
-	padding: 5px 0 5px 10px; 
-	border: 1px solid #EFF0F1;
-	background: #EEF0F1;
-	color: #555555;
-	font-family: Verdana,'Trebuchet MS',Sans-serif;
-	font-style: normal;
-	font-variant: normal;
-	font-weight: bold;
-	font-size: 1.1em;
-	line-height: normal;
-}
-
-#sidebar .left-box {
-	margin: 0 0 5px 0;	
-	padding: 0;
-	border: 1px solid #EFF0F1; 
-}
-
-#sidebar ul {
-	margin: 3px 0 8px 0;
-	padding: 0;
-	list-style: none;
-	text-align: left;
-	text-decoration: none;		
-}
-
-#sidebar ul li {
-	display: block;
-	margin: 0 2px;	
-	padding: 2px 0 2px 25px;
-	border-bottom: 1px solid #EFF0F1;
-}
-
-#sidebar ul a {
-	margin: 0;
-	padding: 0;
-	font-weight: bolder;
-	text-decoration: none;	
-	background-image: none;	
-}
-
-#sidebar .selflink {
-	background: white;
-	color: #333333;
-	font-weight: bolder;
+	text-align: center;
 }

Remove outline in sidebar.mdwn (should be in css file)
diff --git a/sidebar.mdwn b/sidebar.mdwn
index 2823b93..d2a6d28 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -1,13 +1,8 @@
-<TABLE BORDER=1 FRAME=BOX RULES=NONE><TR><TD>
-<CENTER>
 Quick Links
 -----------
-</CENTER>
 
  - [Front Page](http://www.cse.unsw.edu.au/~cs3431/)
  - [[News]]
  - [[Lecture_plan]]
  - [[Assignments]]
  - [[Site_Map|Map]]
-
-</TD><TD>&nbsp;&nbsp;</TD></TR></TABLE>

Try a stylesheet.
diff --git a/local.css b/local.css
new file mode 100644
index 0000000..82547f9
--- /dev/null
+++ b/local.css
@@ -0,0 +1,51 @@
+#sidebar {
+}	
+
+#sidebar h1 {
+	margin: 10px 0 0 0;
+	padding: 5px 0 5px 10px; 
+	border: 1px solid #EFF0F1;
+	background: #EEF0F1;
+	color: #555555;
+	font-family: Verdana,'Trebuchet MS',Sans-serif;
+	font-style: normal;
+	font-variant: normal;
+	font-weight: bold;
+	font-size: 1.1em;
+	line-height: normal;
+}
+
+#sidebar .left-box {
+	margin: 0 0 5px 0;	
+	padding: 0;
+	border: 1px solid #EFF0F1; 
+}
+
+#sidebar ul {
+	margin: 3px 0 8px 0;
+	padding: 0;
+	list-style: none;
+	text-align: left;
+	text-decoration: none;		
+}
+
+#sidebar ul li {
+	display: block;
+	margin: 0 2px;	
+	padding: 2px 0 2px 25px;
+	border-bottom: 1px solid #EFF0F1;
+}
+
+#sidebar ul a {
+	margin: 0;
+	padding: 0;
+	font-weight: bolder;
+	text-decoration: none;	
+	background-image: none;	
+}
+
+#sidebar .selflink {
+	background: white;
+	color: #333333;
+	font-weight: bolder;
+}

Invert include order
diff --git a/aibo.mdwn b/aibo.mdwn
index 071ce2a..86ad1a3 100644
--- a/aibo.mdwn
+++ b/aibo.mdwn
@@ -5,10 +5,11 @@ These notes describe the rUNSWift code for driving the Sony AIBO robots.  The mo
 
 These pages were all exported from a previous wiki and are in the wrong wiki format for this wiki.  This wiki uses [[ikiwiki/Markdown]] as its format, whereas the previous wiki used the [Trac](http://trac.edgewall.org/) wiki format.  At the moment you'll just see the raw Trac wikitext, but it is still very readable.  Feel free to convert the information.
 
-These are notes transferred from the previous wiki about the UNSW/NICTA rUNSWift architecture:
+There are notes from the previous COMP3431 class wiki:
 
-[[!inline pages="aibo/*" archive="yes" feeds="no" sort="title"]]
+[[!inline pages="aibo/comp3431/*" archive="yes" feeds="no" sort="title"]]
 
-There are also notes from the previous class wiki:
+There are notes from the previous rUNSWift wiki:
+
+[[!inline pages="aibo/*" archive="yes" feeds="no" sort="title"]]
 
-[[!inline pages="aibo/comp3431/*" archive="yes" feeds="no" sort="title"]]

cleanup
diff --git a/aibo.mdwn b/aibo.mdwn
index bcc7940..071ce2a 100644
--- a/aibo.mdwn
+++ b/aibo.mdwn
@@ -1,9 +1,9 @@
 AIBO Notes
 ==========
 
-These notes describe the rUNSWift code for driving the Sony AIBO robots.  The most useful places to start are probably the [[aibo/WikiStart]] and [[aibo/comp3431/WikiStart]] pages.
+These notes describe the rUNSWift code for driving the Sony AIBO robots.  The most useful places to start are probably the rUNSWift [[aibo/WikiStart]] and the COMP3431 [[aibo/comp3431/WikiStart]] pages.
 
-These pages were all exported from a previous wiki and are in the wrong wiki format for this wiki.  This wiki uses [[Markdown|ikiwiki/Markdown]] as its format, whereas the previous wiki used the [Trac](http://trac.edgewall.org/) wiki format.  At the moment you'll just see the raw Trac wikitext, but it is still very readable.  Feel free to convert the information.
+These pages were all exported from a previous wiki and are in the wrong wiki format for this wiki.  This wiki uses [[ikiwiki/Markdown]] as its format, whereas the previous wiki used the [Trac](http://trac.edgewall.org/) wiki format.  At the moment you'll just see the raw Trac wikitext, but it is still very readable.  Feel free to convert the information.
 
 These are notes transferred from the previous wiki about the UNSW/NICTA rUNSWift architecture:
 

Give some pointers on where to start
diff --git a/aibo.mdwn b/aibo.mdwn
index fa7f075..bcc7940 100644
--- a/aibo.mdwn
+++ b/aibo.mdwn
@@ -1,6 +1,10 @@
 AIBO Notes
 ==========
 
+These notes describe the rUNSWift code for driving the Sony AIBO robots.  The most useful places to start are probably the [[aibo/WikiStart]] and [[aibo/comp3431/WikiStart]] pages.
+
+These pages were all exported from a previous wiki and are in the wrong wiki format for this wiki.  This wiki uses [[Markdown|ikiwiki/Markdown]] as its format, whereas the previous wiki used the [Trac](http://trac.edgewall.org/) wiki format.  At the moment you'll just see the raw Trac wikitext, but it is still very readable.  Feel free to convert the information.
+
 These are notes transferred from the previous wiki about the UNSW/NICTA rUNSWift architecture:
 
 [[!inline pages="aibo/*" archive="yes" feeds="no" sort="title"]]

Link to old wiki pages
diff --git a/news/Pages_from_old_wiki.mdwn b/news/Pages_from_old_wiki.mdwn
new file mode 100644
index 0000000..43c004c
--- /dev/null
+++ b/news/Pages_from_old_wiki.mdwn
@@ -0,0 +1,3 @@
+I've moved web pages across from the old rUNSWift and COMP3431 wikis.  Currently all the ported pages are linked from the [[AIBO]] page.  You'll also find them in the [[Site_Map|Map]] link.
+
+These pages are all in the wrong wiki format for this wiki.  This wiki uses [[Markdown|ikiwiki/Markdown]] as its format.  The previous wiki used the [Trac](http://trac.edgewall.org/) wiki format.  At the moment you'll just see the raw Trac wikitext, but it is still very readable.  Feel free to convert what you want.

Add comp3431 notes
diff --git a/aibo.mdwn b/aibo.mdwn
index 036bd92..fa7f075 100644
--- a/aibo.mdwn
+++ b/aibo.mdwn
@@ -5,3 +5,6 @@ These are notes transferred from the previous wiki about the UNSW/NICTA rUNSWift
 
 [[!inline pages="aibo/*" archive="yes" feeds="no" sort="title"]]
 
+There are also notes from the previous class wiki:
+
+[[!inline pages="aibo/comp3431/*" archive="yes" feeds="no" sort="title"]]

Add a base page for the old AIBO notes
diff --git a/aibo.mdwn b/aibo.mdwn
new file mode 100644
index 0000000..036bd92
--- /dev/null
+++ b/aibo.mdwn
@@ -0,0 +1,7 @@
+AIBO Notes
+==========
+
+These are notes transferred from the previous wiki about the UNSW/NICTA rUNSWift architecture:
+
+[[!inline pages="aibo/*" archive="yes" feeds="no" sort="title"]]
+

Comment on minor edit
diff --git a/news/Week_0_location.mdwn b/news/Week_0_location.mdwn
new file mode 100644
index 0000000..719c8aa
--- /dev/null
+++ b/news/Week_0_location.mdwn
@@ -0,0 +1,5 @@
+Just a quick note to confirm the location for tomorrow's timetabling meeting: ASB 219 (ASB == Australian School of Business).  This is the currently timetabled location for the Thursday class for the rest of semester.
+
+Be well,
+
+Will

Note logging where changes are mentioned
diff --git a/index.mdwn b/index.mdwn
index be68635..6da9ca0 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -1,4 +1,4 @@
-This page gives a broad overview of the COMP3431/9431 Robot Software Architectures course.  This web site is an [[ikiwiki]] based [wiki](http://en.wikipedia.org/wiki/Wiki) and most pages are editable by anyone enrolled in the course.  Pages are all publicly readable.  You'll need to use your normal [CSE](http://www.cse.unsw.edu.au/) account name and password to log in to make changes.
+This page gives a broad overview of the COMP3431/9431 Robot Software Architectures course.  This web site is an [[ikiwiki]] based [wiki](http://en.wikipedia.org/wiki/Wiki) and most pages are editable by anyone enrolled in the course.  Pages are all publicly readable.  You'll need to use your normal [CSE](http://www.cse.unsw.edu.au/) account name and password to log in to make changes.  All changes are logged.
 
 Course Introduction Page Contents
 ---------------------------

Insert table of contents
diff --git a/index.mdwn b/index.mdwn
index d8b2e7c..be68635 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -1,7 +1,9 @@
-COMP3431/9431 Course Introduction
-=================================
+This page gives a broad overview of the COMP3431/9431 Robot Software Architectures course.  This web site is an [[ikiwiki]] based [wiki](http://en.wikipedia.org/wiki/Wiki) and most pages are editable by anyone enrolled in the course.  Pages are all publicly readable.  You'll need to use your normal [CSE](http://www.cse.unsw.edu.au/) account name and password to log in to make changes.
 
-This page gives a broad overview to the COMP3431/9431 Robot Software Architectures course.  This web site is an [[ikiwiki]] based [wiki](http://en.wikipedia.org/wiki/Wiki) and most pages are editable by anyone enrolled in the course.  Pages are all publicly readable.  You'll need to use your normal [CSE](http://www.cse.unsw.edu.au/) account name and password to log in to make changes.
+Course Introduction Page Contents
+---------------------------
+
+[[!toc levels=2]]
 
 Aims
 ----
@@ -32,7 +34,7 @@ This course is for postgraduate students (COMP9431) and advanced undergraduates
 
 I expect students in this course to be able to program in C++ and java, and to be prepared to learn Python.
 
-While not a formal pre-requisite or co-requisite, I highly recommend that students take a machine learning course if they are interested in artificial intelligence, eg COMP9417.  That course does not need to be taken before this one. The artificial intelligence course, COMP3411, is not a bad choice either (although it isn't going to give you the depth of Machine Learning knowledge I'd recommend).
+While not a formal pre-requisite or co-requisite, I highly recommend that students take a machine learning course if they are interested in artificial intelligence, eg COMP9417.  That course does not need to be taken before this one. The artificial intelligence course, COMP3411, is not a bad choice either (although it isn't going to give you the depth of Machine Learning knowledge I'd recommend).  While it isn't a formal pre-requisite, students who have already taken COMP3411 or an equivalent course often find my course easier.
 
 Course Web Pages
 ----------------

Add a user page for Will
diff --git a/users/willu.mdwn b/users/willu.mdwn
new file mode 100644
index 0000000..b4e1988
--- /dev/null
+++ b/users/willu.mdwn
@@ -0,0 +1,3 @@
+Will is the Lecturer in Charge of the Robot Software Architectures course.
+
+More detail is available on his web page: <http://www.cse.unsw.edu.au/~willu/>

Clean up some links
diff --git a/index.mdwn b/index.mdwn
index 5448f26..d8b2e7c 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -61,7 +61,7 @@ The labs are also unusual.  I dislike busywork, so I have already implemented ev
 Syllabus
 --------
 
-Course [[notes]] and [[rough_syllabus|lecture_plan]] are available on the class wiki.  A [[sample_exam|exams/3431-sample-exam-2006.pdf]] is available from previous years as well.
+Course notes and [[rough syllabus|lecture_plan]] are available on the class wiki.  A [[sample exam|exams/3431-sample-exam-2006.pdf]] is available from previous years as well.
 
 Reading Materials
 -----------------

Update for new pre-processor directive syntax
diff --git a/map.mdwn b/map.mdwn
index c7f0ec0..f6b5e5b 100644
--- a/map.mdwn
+++ b/map.mdwn
@@ -1,4 +1,4 @@
 Robot Software Architectures wiki map
 =====================================
 
-[[map pages="*"]]
+[[!map pages="*"]]

Add a notice about the week 0 timetabling meeting
diff --git a/news/Week0.mdwn b/news/Week0.mdwn
new file mode 100644
index 0000000..1711e2c
--- /dev/null
+++ b/news/Week0.mdwn
@@ -0,0 +1,11 @@
+Week 0 is this week (starting 21 July 2008).
+
+During week 0, the University does not allow us to teach coursework, but encourages us to get admin stuff out of the way.
+
+I have had a large number of requests to re-schedule the classes because of conflicts.  I will be holding a meeting this Thursday in the normal Thursday timeslot (24 July, 2pm).  I hope to hold this in the normal Thursday room (Australian School Business room 219 (K-E12-219)), but I haven't had confirmation that is available yet.  I'll update the room information here when I know for sure.
+
+Everyone who cares when we reschedule the Lectures and Labs is encouraged to attend.  If you cannot attend, you can send me email with your timetabling constraints (mon-fri 9-6pm).  Attending is better.
+
+Be well,
+
+Will      :-)

Import raw Trac markup from old robocup and comp3431 wikis
diff --git a/aibo/AperiosOpenR b/aibo/AperiosOpenR
new file mode 100644
index 0000000..28f91f3
--- /dev/null
+++ b/aibo/AperiosOpenR
@@ -0,0 +1,104 @@
+= Aperios OPEN-R =
+
+Aperios is a proprietary operating system from Sony, and OPEN-R is our interface to the robot.
+
+See also [wiki:AperiosObjects Aperios Objects] for details of how we fit our code into Aperios.
+
+== Overview ==
+
+OPEN-R software is modular and object oriented (not in the C++/Java sense, but the COM/CORBA sense). Processing is performed by multiple objects running concurrently and communicating via interobject communication. Connections between objects are specified in an external description file (stub.cfg). Connection ports in objects are identified by service name. The system layer (access to sensors and actuators) is also implemented by inter-object communication.
+
+An object is similar to a UNIX process in that it is implemented by an executable file and runs concurrently with other objects (N.B. we don't know how the task switching works on AIBO). However, unlike UNIX processes objects have multiple entry points. Objects exchange information using message passing. A message contains a selector and some data; the selector identifies which method of the object to run and the data provides arguments. Objects are internally single threaded - an object can process only one message at a time. Additional messages wait in a queue.
+
+== Inter-object communication ==
+When two objects communicate, the side that sends data is called the "subject",  and the side that receives data is called the "observer". (subject --data--> observer) 
+
+When the observer is ready to receive data, the observer sends a "ASSERT-READY" message to the subject. Otherwise, the observer sends "DEASSERT-READY" to the subject. When the subject receives ASSERT-READY from the observer, the subject starts to send data to the observer. After the observer receives this data and is ready to receive the next data, the subject sends ASSERT-READY again.
+
+== Core class ==
+A core class is a C++ class that represents an object. Each object should be represented by only one core class.
+
+Characteristics of a core class:
+ * A core class inherits from the OObject class. 
+ * A core class implements {{{DoInit()}}}, {{{DoStart()}}}, {{{DoStop()}}}, {{{DoDestroy()}}}. 
+ * A core class has the necessary number of OSubject and OObserver. Example:
+{{{
+    OSubject* subject[numOfSubject]; 
+    OObserver* observer[numOfObserver]; 
+}}}
+ * numOfSubject and numOfObserver are defined in def.h that is generated by the stubgen2 command. 
+
+more coming...
+
+== Stub ==
+Stub is a specification of OPEN-R object. 
+Every OPEN-R object you define, you must have a stub file and usually called stub.cfg. 
+Currently, in our rUNSWift architecture, we have four (I think...) OPEN-R objects namely: 
+ * vision 
+ * actuator
+ * wireless
+ * GameController
+Thus, we have four stub files and they reside in vision, actuatorControl, GameController and wireless directories respectively. 
+Each OPEN-R object has several services that can be invoked between objects and each of these services is defined as 
+
+"(Connection name)", (Member function 1), (Member fuction 2) 
+
+* Connection name - The connection name consists of the following items. 
+(Object name).(Subname).(Data name).(Service type)
+
+Object Name - Any name you want, but usually the core class name. 
+
+Subname - This is a service name and must be unique. Do not use the same subname that other serivces use. 
+
+Data Name - This is the name corresponding to the data type used in inter-object communication. 
+
+Service Type - S for subject and O for observer. 
+
+* Member function 1 - This member function is called when a connection result is received. 
+
+* Member function 2 - If this service is for observers, this function is called when a message is received from a subject. If this service is for subjects, this function is called when ASSERT-READY or DEASSERT-READY is received from an observer. 
+
+Below is a snippet of stub.cfg in vision directory.
+Explanation on this snippet is coming soon. 
+{{{
+ObjectName : Vision
+NumOfOSubject   : 8
+NumOfOObserver  : 7
+
+Service : "Vision.SetIndication.int.S", 		null, null
+...
+Service : "Vision.Sensor.OSensorFrameVectorData.O", 	null, ResultSensor()
+...
+}}}
+
+== OPEN-R Configuration Files ==
+
+=== OBJECT.CFG ===
+This file lists all of the objects that the dog will load and execute.
+
+=== CONNECT.CFG ===
+There needs to be a way to interconnect all the objects and their interfaces. These interfaces are defined in each object's respective stub.cfg file. Then by using a connect.cfg file, it will draw links between the interfaces on stub.cfg files.
+
+=== DESIGNDB.CFG ===
+
+
+== Building the bin file ==
+
+== Some History ==
+Currently, rUNSWift has different OPEN-R objects like vision, actuator and wireless. 
+However, in 2002 rUNSWift, they only had one OPEN-R object that did everything. 
+Since OPEN-R object is single threaded, there was a significant performance slow down in using wireless. 
+When the object was handling wireless process (e.g. AIBOs communicating each other), it blocked out all the other requested services like vision and actuator.  
+So, M. S. K. told me that 2002 rUNSWift decided not to use wireless at all! (interesting)
+Which means AIBOs weren't communicating each other... which also means no team work between AIBOs in 2002? 
+
+Thus, in 2003 or 2004? rUNSWift introduced other OPEN-R objects like wireless... So that when AIBOs communicate via wireless, wireless process won't block other processes, thereby smoothing actuator and vision processes.    
+
+== Note ==
+ * The senser data is sent every 32ms (frequency = 31.25Hz)   (open-r::Level2!ReferenceGuilde.pdf)
+ * 3 types of data used for communication:
+{{{
+    OCommandVectorData
+    OSensorFrameVectorData
+    OFbkImageVectorData
+}}}
diff --git a/aibo/BflFileFormat b/aibo/BflFileFormat
new file mode 100644
index 0000000..74d46ec
--- /dev/null
+++ b/aibo/BflFileFormat
@@ -0,0 +1,15 @@
+= BFL File Format =
+
+BFL files are used for colour classification and contain the YUV image data along with information on how each pixel has been classified.
+
+The BFL file stores the image as a series of rows, top row first. (Note: there is no meta-data about how many rows might be in the image. You have to know). For each row the file stores:
+
+ * The YLL values for each pixel on the row (1 byte per pixel)
+ * The U values
+ * The V values
+ * The YLH values
+ * The YHL values
+ * the YHH values
+ * The classified colour values
+
+See [wiki:YUVPlaneFormat YUV Plane Format] for more information on the YUV values.
diff --git a/aibo/BuildingDevelopmentEnvironment b/aibo/BuildingDevelopmentEnvironment
new file mode 100644
index 0000000..a44b3d0
--- /dev/null
+++ b/aibo/BuildingDevelopmentEnvironment
@@ -0,0 +1,165 @@
+= Building Development Environment - Your 12 step guide to writing code! =
+
+shnl327@cse
+
+Note that for most of this stuff you should just install packages appropriate for your linux distro. The instructions here are for installing from source; mostly only needed if you use redhat.
+
+Most files mentioned here can be downloaded from simpson (192.168.0.206) under /home/willu/install. Download these files and folders:
+
+=== Java stuff ===
+ * j2sdk-1_4_2_06-linux-i586.rpm
+ * Jama-1.0.1.jar
+ * jogl-linux
+
+=== OS, SDK for the dogs ===
+ * OPEN_R_SDK-1.1.5-r3.tar.gz (you should get the newest one from http://www.openr.org/)
+
+=== Python libs. You should get packages for these for your system ===
+ * Python-2.4.tgz
+ * pychecker-0.8.14.tar.gz
+ * numarray-0.9.tar.gz
+ * python-profiler
+
+=== QT Libraries - again; get packages for your system ===
+ * qt-x11-free-3.3.3.tar.gz
+ * sip-4.1.1.tar.gz
+ * PyQt-x11-gpl-3.13.tar.gz
+
+=== OpenSSL is only needed for subversion. You should find svn packages for your system ===
+ * openssl-0.9.7e.tar.gz
+ * subversion-1.1.1.tar.gz < get the newest of this on cse mirror http://mirror.cse.unsw.edu.au/pub/debian/pool/main/s/subversion/
+
+=== MIPS version of gcc, binutils. Some distros provide this stuff, most don't. ===
+ * cross_dev_tools/*
+ - if you have to download use cse mirror:
+http://mirror.cse.unsw.edu.au/pub/gnu/binutils/binutils-2.14.tar.gz
+http://mirror.cse.unsw.edu.au/pub/gnu/gcc/gcc-3.3.2.tar.gz
+
+
+1. Install Java SDK
+Install the RPM with:
+{{{rpm -Uvh j2sdk-1_4_2_06-linux-i586.rpm}}}
+
+2. Install Jama and jogl
+Copy Jama.jar and the contents of jogl-linux into your JRE's lib/ext folder, which may be {{{/usr/java/j2sdk1.4.2_06/jre/lib/ext}}} if you used the default Java installation settings
+
+3. Install OPEN-R
+Copy OPEN_R_SDK-1.1.5-r3.tar.gz to {{{/usr/local}}} then untar it with:
+{{{tar -zxvf OPEN_R_SDK-1.1.5-r3.tar.gz}}}
+This untars the file to a folder OPEN_R_SDK, and thats all there is to installing the SDK.
+
+4. Install MIPS cross development tools
+There is a shell script called build-devtools in the cross development folder. Execute it and the script will install the development tools to the OPEN-R directory automatically
+
+5. Install OpenSSL
+OpenSSL is really only needed here for SVN (next one), and OpenSSL might already be installed on your machine, but if it isn't you can install it by untaring it with {{{tar -zxvf openssl-0.9.7e.tar.gz}}}, then install it with:
+{{{
+./config
+make
+make test
+make install
+}}}
+
+6. Install SVN

(Diff truncated)
Add link to Probabilistic Robotics
diff --git a/index.mdwn b/index.mdwn
index e504598..5448f26 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -70,10 +70,11 @@ There is no set text for this course. However, the following books are recommend
 
 <dl>
 <dt><a href="http://aima.cs.berkeley.edu/">Artificial Intelligence: A Modern Approach</a>; S. Russell and P. Norvig</dt><dd>This is a good overview textbook for artificial intelligence in general. If you were going to get one book on AI, this would be the one I'd choose.</dd>
+<dt><a href="http://robots.stanford.edu/probabilistic-robotics/">Probabilistic Robotics</a>; S. Thrun, W. Burgard and D. Fox</dt><dd>This is a newer textbook covering "perception and control in the face of uncertainty".  It covers those areas well, but doesn't have quite the breadth of this course.</dd>
 <dt><a href="http://www.laas.fr/planning/">Automated Planning: Theory and Practice</a>; M. Ghallab, D. Nau and P. Traverso</dt><dd>This book focusses on the planning and decision making areas of artificial intelligence. It goes goes into more detail in that one area. It provides a readable introduction to this area of artificial intelligence.</dd>
 <dt><a href="http://www-anw.cs.umass.edu/~rich/book/the-book.html">Reinforcement Learning: An Introduction</a>; R. Sutton and A. Barto</dt><dd>This is a good book on reinforcement learning and Markov Decision Processes, in the same way that "Automated Planning" is a good book on planning systems: it covers its section of AI well.</dd>
 <dt><a href="http://www.cs.cmu.edu/afs/cs.cmu.edu/user/mitchell/ftp/mlbook.html">Machine Learning</a>; T. Mitchell</dt><dd>While machine learning is only touched on in this course, I consider it a very important part of AI and robotics, so I'm putting this book here anyway.</dd>
-<dt><a href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471619779.html">Markov Decision Processes: Discrete Stochastic Dynamic Programming</a>; M. Puterman</dt><dd>This book focuses in great detail on the theory of Markov Decision Processes. It is almost 10 years old now, and so lacks some of the newer contributions to the field, but it is an excellent reference on the mathematical theory of stochastic decision making.</dd>
+<dt>Markov Decision Processes: Discrete Stochastic Dynamic Programming; M. Puterman</dt><dd>This book focuses in great detail on the theory of Markov Decision Processes. It is almost 10 years old now, and so lacks some of the newer contributions to the field, but it is an excellent reference on the mathematical theory of stochastic decision making.</dd>
 </dl>
 
 Assignments

Update main course page to include the link for the wiki's git repository.
diff --git a/index.mdwn b/index.mdwn
index 1b55ea3..e504598 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -36,7 +36,9 @@ While not a formal pre-requisite or co-requisite, I highly recommend that studen
 
 Course Web Pages
 ----------------
-You're reading it :).  <http://www.cse.unsw.edu.au/~cs3431/>
+You're reading them :).  <http://www.cse.unsw.edu.au/~cs3431/>
+
+As noted above, this is a wiki and many of these pages are editable by people enrolled in the course.  The git repository for the wiki has read-only access here: <http://www.cse.unsw.edu.au/~cs3431/wiki.git/>.
 
 Staff
 -----

Update class notes
diff --git a/lecture_plan.mdwn b/lecture_plan.mdwn
index 80b7ce7..55bf444 100644
--- a/lecture_plan.mdwn
+++ b/lecture_plan.mdwn
@@ -44,26 +44,19 @@
 
 #### [[notes/Lecture2A]]
 
-    Low Level Vision
+    Robot Vision
       Colour segmentation
       Blobbing
-      Edge Points
+      High level concepts
 
 #### [[notes/Lecture2B]]
 
-    High Level Vision
-      Object Detection
-      Sanity Checks
-        Hand
-        Learned
-        Ripple-Down Rules?
-      Distance to objects
-        Close-in ball localization
-
-    Other teams' vision
-      German team
-      CMU Ball
-      Point projection
+    Motion (low level)
+      Head Control
+      Forward and Inverse Kinematics  (Head and Legs)
+      Point Projection
+      Non-Commutable Rotations
+      Recorded motions
 
 #### Lab (Level 3)
 
@@ -76,18 +69,14 @@
 
 #### [[notes/Lecture3A]]
 
-    Motion (low level)
-      Head Control
-      Forward and Inverse Kinematics  (Head and Legs)
-      Point Projection
-      Non-Commutable Rotations
-      Recorded motions
+    Tracking
+      Bayesian Localization I
+        Tabular representation
 
 #### [[notes/Lecture3B]]
 
     Tracking
-      Bayesian Localization
-        Tables
+      Bayesian Localization II
         Particle Filters
         Kalman-Bucy Filters
 
diff --git a/notes/Lecture10A.mdwn b/notes/Lecture10A.mdwn
index fbc121a..3dce786 100644
--- a/notes/Lecture10A.mdwn
+++ b/notes/Lecture10A.mdwn
@@ -1,36 +1,67 @@
-Review
- * Building Models
-Today
- * Building Heuristics (deterministic, goal state(s))
-   * Backward search / Dynamic programming
-     * Both cost and search heuristics
-   * Relaxing problem to find admissible (optimistic) heuristic
- * Dynamic Programming for Markov Decision Processes
-   * Stochasticity
-   * Random order of update
-     * Value iteration
-     * Policy iteration
-     * Modified Policy iteration
-   * State and state/action value functions
-     * Q(s,a) = E(r + V(s')) = Sum_s' P(s,a,s') ( r + V(s') )
-       * "Expected reward for taking action a in state s and then following policy pi"
-       * Note: P(s,a,s') is the model of the world
-     * V(s) = max_a Q(s, a)
-       * "Expected reward for following policy pi from state s"
-     * pi*(s) = argmax_a Q(s, a)
-       * pi* is the optimal policy (assuming everything has converged)
-   * Other optimality criterion
-     * One way to view what we were doing is to find a policy that maximises the long term sum of reward
-       * sum_{0 < t < infinity} r_t
-       * Maximise "sum of reward" is tricky if sums can be infinite (loops)
-     * infinite horizon, discounted
-       * Find policy to maximise sum_{0 < t < infinity} gamma^t r_t
-       * gamma is:
-         * trick to keep things bounded
-         * Interest rate
-         * (1-gamma) = probability of transitioning to 0-value terminal state each step
-       * Q(s,a) = E(r + gamma V(s'))
-     * average reward
-       * Maximise lim t_max -> infinity 1/t_max sum_{0 < t < t_max} r_t
-  * Discussion
-    * MDP solving finds a complete policy -> looks at entire state space
+Non-gradient methods:
+
+ * Powell's Direction Set Method
+   * Pick a start point and N directions
+   * Minimise in each direction in turn
+     * Example - horizontal valley
+     * Example - 45 degree valley
+   * Conjugate directions: (p 414)
+     * Imagine we have all gradient information we might want.
+     * Do first line minimization - dir u
+     * Gradient is now T to line
+     * Add constraint - gradient must stay T to u
+       * Can be approximated using the Hessian matrix - the 2nd derivative matrix
+         * Will be perfect if we're in a parabola
+       * Gives a set of lines to minimise along - choose the one with highest gradient
+    
+   * Basic algorithm
+     * Save starting position as P0
+     * For i = 1...N
+       * Move P(i-1) to along direction Ui, and make new min Pi
+       For i = 1...(N-1)
+         * Ui <- Ui+1
+         * Un <- Pn - P0
+         * Minimise along Pn
+         * Repeat (result of prev min = new P0)
+      * k iterations make last k members mutually conjugate (for a parabolic function)
+        * Problem
+          * Can lose track of a dimension
+            * Become linearly dependant
+          * Reset the direction set ever N iterations
+            * Reset to original directions
+          * Just make sure we're not linearly dependant
+          * Modify which direction we replace to make a heuristically good function
+            * Remove the direction of largest decrease.
+
+ * Use of Gradient:
+   * Simple gradient descent
+   * Gradient descent with momentum
+   * Use gradient for line search
+   * Conguate gradient methods
+     * A set of vectors are conjugate if
+        minimizing along any one of them keeps gradient T to others
+     * Quasi-Newton or Variable Metric methods (BFGS)
+      Build up an estimate of the Hessian
+      Use that to find dir to min of quadratic function
+      Search in that direction
+      Note: because we don't have the hessian directly
+        It takes N minimizations to build it up from the gradient
+        This is not very different to the conjugate gradient methods, except
+          it requires storage for the whole hessian matrix, not just the last conjugate direction
+
+Estimating the Gradient
+  Take a step in each direction - method of differences
+
+		def approx_fprime(xk,f,*args):
+			f0 = apply(f,(xk,)+args)
+			grad = Num.zeros((len(xk),),'d')
+			ei = Num.zeros((len(xk),),'d')
+			for k in range(len(xk)):
+				ei[k] = 1.0
+				grad[k] = (apply(f,(xk+epsilon*ei,)+args) - f0)/epsilon
+				ei[k] = 0.0
+			return grad
+
+  Can do the same thing with randomized vectors
+    Don't get stuck becuase some partials are not good
+
diff --git a/notes/Lecture10B.mdwn b/notes/Lecture10B.mdwn
index 7e58532..53cbc85 100644
--- a/notes/Lecture10B.mdwn
+++ b/notes/Lecture10B.mdwn
@@ -1,70 +1,71 @@
-Linkage
+Agent Example:
 
- * Continuous search
-   * plan space - looking for a good point in space, not a good path
- * Relate this to what we saw in Lecture7A on Genetic Algorithms
- * Relate to reinforcement learning
-   * Search over the space of policies for one that optimises sum of reward
+  * Example one - DunceBot
+    * Get to corner of room
+    * Unknown map
+    * Known sensors, actuators/actions
+    * Deterministic, Markov
 
-Function minimization/maximization/optimization
+    * Discussion: Which is more important: Building a map, or reaching goal?
+      * Exploration/Exploitation trade off - depends upon how many times you'll use the map
+      * Are you going to be switching goals much?
+        * Including goals as state
 
- * [http://www.library.cornell.edu/nr/bookcpdf.html Numerical Recipies in C] - chapter 10
- * [http://www.ece.northwestern.edu/~nocedal/book/num-opt.html Wright and Nocedal - Numerical Optimization]
+    * As so much is known, it is possible to invent a policy
+    * This is an AI class - how can we make the system do more of the work?
+      * If I were to change the goals, would that just require another search or a human-in-the-loop re-design?

(Diff truncated)
Update links to the lecture plan
diff --git a/notes.mdwn b/notes.mdwn
index f6e4165..01b8572 100644
--- a/notes.mdwn
+++ b/notes.mdwn
@@ -1,30 +1,3 @@
-This page includes links to the notes I use when teaching:
+[[!meta redir=lecture_plan delay=10]]
 
- * [[notes/Lecture1A]] -- Course Overview, What is an Agent?
- * [[notes/Lecture1B]] -- rUNSWift Overview
- * [[notes/Lecture2A]] -- Vision
- * [[notes/Lecture2B]] -- Head Motion and Kinematics
- * [[notes/Lecture3A]] -- Tracking - Bayes' Filters
- * [[notes/Lecture3B]] -- Tracking - Tables, particles and gaussians
- * [[notes/Lecture4A]] -- Tracking - SLAM
- * [[notes/Lecture4B]] -- Walking
- * [[notes/Lecture5A]] -- Wireless and Behaviours
- * [[notes/Lecture5B]] -- Overview of architectures
- * [[notes/Lecture6A]] -- Intoduction to search
- * [[notes/Lecture6B]] -- Heuristic search
- * [[notes/Lecture7A]] -- Genetic Algorithms
- * [[notes/Lecture7B]] -- State Space Planning
- * [[notes/Lecture8A]] -- Plan Space Planning
- * [[notes/Lecture8B]] -- Cognitive Architectures (ACT-R and SOAR)
- * [[notes/Lecture9A]] -- Logic Based Planning
- * [[notes/Lecture9B]] -- Representation in search
- * [[notes/Lecture10A]] -- Learning Heuristics and solving Markov Decision Processes
- * [[notes/Lecture10B]] -- Non-Gradient Optimization
- * [[notes/Lecture11A]] -- Gradient Optimization
- * [[notes/Lecture11B]] -- Model Based, Model Free and Policy Gradient RL
- * [[notes/Lecture12A]] -- Hierarchy in MDPs
- * [[notes/Lecture12B]] -- Partially Observable Markov Decision Processes
- * [[notes/Lecture13A]] -- Function approximation in MDPs
- * [[notes/Lecture13B]] -- Adversarial Agents
- * [[notes/Lecture14A]] -- Review - Sample Exam
- * [[notes/Lecture14B]] -- Review
+You probably want to be looking at the [[lecture_plan]].  I'll send you there in 10 seconds.
diff --git a/sidebar.mdwn b/sidebar.mdwn
index 547bb59..2823b93 100644
--- a/sidebar.mdwn
+++ b/sidebar.mdwn
@@ -6,7 +6,7 @@ Quick Links
 
  - [Front Page](http://www.cse.unsw.edu.au/~cs3431/)
  - [[News]]
- - [[Notes]]
+ - [[Lecture_plan]]
  - [[Assignments]]
  - [[Site_Map|Map]]
 

Update lecture plan - add links to class notes. Still need to update class notes.
diff --git a/lecture_plan.mdwn b/lecture_plan.mdwn
index ab64ec5..80b7ce7 100644
--- a/lecture_plan.mdwn
+++ b/lecture_plan.mdwn
@@ -1,9 +1,26 @@
-Week 1 - 26/7
-  A
-	Course Overview
-	Agent/Planning systems
+### Week 0 - 21/7
+
+#### A
+
+    No lecture A in week 0
+
+#### B
+
+    Re-schedule classes to try and accommodate everyone.
+
+#### Lab
+
+    No labs week 0
+
+### Week 1 - 28/7
+
+#### [[notes/Lecture1A]]
+
+    Course Overview
+    Agent/Planning systems
+
+#### [[notes/Lecture1B]]
 
-  B
     rUNSWift overview
       Aperios
       Our Objects/systems
@@ -15,21 +32,25 @@ Week 1 - 26/7
       Flow Control between objects
       Interfaces between objects
 
-  Lab
+#### Lab (Level 3)
+
     Intro to rUNSWift agent
       Subversion
       Compiling
       Running
       Base Station
 
-Week 2 - 2/8
-  A
-	Low Level Vision
-	  Colour segmentation
-	  Blobbing
-	  Edge Points
+### Week 2 - 4/8
+
+#### [[notes/Lecture2A]]
+
+    Low Level Vision
+      Colour segmentation
+      Blobbing
+      Edge Points
+
+#### [[notes/Lecture2B]]
 
-  B
     High Level Vision
       Object Detection
       Sanity Checks
@@ -44,14 +65,17 @@ Week 2 - 2/8
       CMU Ball
       Point projection
 
-  Lab
+#### Lab (Level 3)
+
     Ball tracking
     Assignment 1 out at end of lab (Tracking & Life Saver)
     Assignment 2 out at end of lab (Grab Ball - get to other half of field)
     Assignment 3 out at end of lab (1x1 penalty shooter)
 
-Week 3 - 9/8
-  A
+### Week 3 - 11/8
+
+#### [[notes/Lecture3A]]
+
     Motion (low level)
       Head Control
       Forward and Inverse Kinematics  (Head and Legs)
@@ -59,38 +83,44 @@ Week 3 - 9/8
       Non-Commutable Rotations
       Recorded motions
 
-  B
+#### [[notes/Lecture3B]]
+
     Tracking
       Bayesian Localization
         Tables
         Particle Filters
         Kalman-Bucy Filters
 
-  Lab
+#### Lab (Level 3)
+
     Go To Point
       Experiments with tracking (odom/obs, bad mean/var)
 
-Week 4 - 16/8
+### Week 4 - 18/8
+
+#### [[notes/Lecture4A]]
 
-  A
     Finish Tracking
     Information form Kalman Filters
     SLAM
       Expectation Maximisation if time
 
-  B
+#### [[notes/Lecture4B]]
+
     Motion (Walking)
       Walking
         Normal Walk
         Odomentry Calibration
         Parameter Optimisation
 
-  Lab
+#### Lab (Level 3)
+
     Work on Assignment 1
 
-Week 5 - 23/8
+### Week 5 - 25/8
+
+#### [[notes/Lecture5A]]
 
-  A
     Wireless
       UDP vs TCP
     Behaviours
@@ -98,96 +128,107 @@ Week 5 - 23/8
       Hierarchies
       Software Engineering and State
 
-  B
+#### [[notes/Lecture5B]]
+
     Agent Architectures
       Engineered (subsumption)
       Logic based (Three layer, planning, golog)
-      Cognitive (ACT-R, not Golog in thie sense)
+      Cognitive (ACT-R, not Golog in this sense)
       Reinforcement Learning
 
-  Lab
+#### Lab (Level 3)
+
     Assignment 1 graded in lab
   
-Week 6 - 30/8
+### Week 6 - 1/9
+
+#### [[notes/Lecture6A]]
 
-  A
     Introduction to Search
       BFS/DFS
       A*
       Islands
   
-  B
+#### [[notes/Lecture6B]]
+
     Further search - heuristics
       Mixing Search and Heuristics (Korf)
       Heuristics as simplifications/relaxations
-      
 
-  Lab
+#### Lab (Computer lab)
+
     A*/Islands/Heuristics
 
-Week 7 - 6/9
+### Week 7 - 8/9
 
-  A
-  	Planning
-  	  State Space search
+#### [[notes/Lecture7A]]
+
+    Planning
+      State Space search
+
+#### [[notes/Lecture7B]]
 

(Diff truncated)
Clean up after test
diff --git a/news/noNewsIsGoodNews.mdwn b/news/noNewsIsGoodNews.mdwn
index ce34e75..c1736a3 100644
--- a/news/noNewsIsGoodNews.mdwn
+++ b/news/noNewsIsGoodNews.mdwn
@@ -1,3 +1 @@
 No news is good news... right?
-
-testing

blah
diff --git a/news/noNewsIsGoodNews.mdwn b/news/noNewsIsGoodNews.mdwn
index c1736a3..ce34e75 100644
--- a/news/noNewsIsGoodNews.mdwn
+++ b/news/noNewsIsGoodNews.mdwn
@@ -1 +1,3 @@
 No news is good news... right?
+
+testing

cleanup
diff --git a/news/noNewsIsGoodNews.mdwn b/news/noNewsIsGoodNews.mdwn
index de603f5..c1736a3 100644
--- a/news/noNewsIsGoodNews.mdwn
+++ b/news/noNewsIsGoodNews.mdwn
@@ -1,3 +1 @@
 No news is good news... right?
-
-Whee more testing

tesing 123
diff --git a/news/noNewsIsGoodNews.mdwn b/news/noNewsIsGoodNews.mdwn
index c1736a3..de603f5 100644
--- a/news/noNewsIsGoodNews.mdwn
+++ b/news/noNewsIsGoodNews.mdwn
@@ -1 +1,3 @@
 No news is good news... right?
+
+Whee more testing

clean up
diff --git a/news/noNewsIsGoodNews.mdwn b/news/noNewsIsGoodNews.mdwn
index 4bf417f..c1736a3 100644
--- a/news/noNewsIsGoodNews.mdwn
+++ b/news/noNewsIsGoodNews.mdwn
@@ -1,3 +1 @@
 No news is good news... right?
-
-another test

another test
diff --git a/news/noNewsIsGoodNews.mdwn b/news/noNewsIsGoodNews.mdwn
index c1736a3..4bf417f 100644
--- a/news/noNewsIsGoodNews.mdwn
+++ b/news/noNewsIsGoodNews.mdwn
@@ -1 +1,3 @@
 No news is good news... right?
+
+another test

Revert last test edit
diff --git a/news/noNewsIsGoodNews.mdwn b/news/noNewsIsGoodNews.mdwn
index f38d963..c1736a3 100644
--- a/news/noNewsIsGoodNews.mdwn
+++ b/news/noNewsIsGoodNews.mdwn
@@ -1,3 +1 @@
 No news is good news... right?
-
-Well, that's good news then :)

test change
diff --git a/news/noNewsIsGoodNews.mdwn b/news/noNewsIsGoodNews.mdwn
index c1736a3..f38d963 100644
--- a/news/noNewsIsGoodNews.mdwn
+++ b/news/noNewsIsGoodNews.mdwn
@@ -1 +1,3 @@
 No news is good news... right?
+
+Well, that's good news then :)