strykeroz:
That really is an impressive leap forward you've made there!
Thanks 
I must admit, it is actually starting to fall into place quiet well now...
There is no intelligence in the code, it is just following simple instructions like move back until front sensor reading at 30cm, turn right until right sensor at 10cm etc. etc.
i.e.
// command format = mode , direction to move , setting , sensor to use
// modes
// 1 = set time
// 2 = find a distance (moving towards)
// 3 = find a distance (moving away from)
// 4 = until distance greater than
// 5 = until distance less than
warning_sound(2);
move_robot( 2 , "reverse" , 75 , "front" );
move_robot( 1 , "left" , 1500 , "" );
move_robot( 2 , "left" , 72 , "right" );
move_robot( 2 , "forward" , 65 , "front" );
move_robot( 1 , "right" , 1500 , "" );
move_robot( 2 , "right" , 55 , "left" ); // left towards vending machine
move_robot( 1 , "forward" , 4500 , "" );
move_robot( 1 , "left" , 500 , "" );
move_robot( 1 , "forward" , 4000 , "" );
move_robot( 1 , "right" , 300 , "" );
move_robot( 2 , "forward" , 40 , "front" );
move_robot( 1 , "left" , 1600 , "" );
move_robot( 2 , "left" , 27 , "right" );
move_robot( 1 , "forward" , 9400 , "" );
move_robot( 2 , "forward" , 45 , "front" ); // out of library door
move_robot( 1 , "right" , 1500 , "" );
move_robot( 2 , "right" , 33 , "left" );
move_robot( 3 , "forward" , 35 , "right" ); // forward until right is less than 35 (get fix at door frame)
in areas where there is poor returns coming from the sensors I tell it to run a set length of time then pick up a wall when it is close enough to get a good fix or say run until right sensor reading less ten 30cm etc. etc.
- this works surprisingly well as when it starts to drift off line then next measurement will tend to bring it back in line
there is a lot more work to do on the code but here it is so far for what it is worth:
http://homepage.ntlworld.com/alan.blackham/arduino/robot%20code%201.txt