I know that tachometry in general isn't very good, and I was planing on using a diversity model with several different kinds of sensors bringing in different data that could then be cross analyzed for a more accurate picture. But in order for my tachometer readings to be useful players, I would like something with a lot more accuracy than what I got. If it was even just as good as Brian's that would be fine.

The main problem seems to be that my robot can't go in a straight line. Instead it seems to curve ever so gently in on direction or another (I suspect that this also impairs it's ability to rotate on point accurately). It has a simple triangle wheel base with the pivot wheel behind the two drive wheels. Any ideas as to why it isn't performing, and (more importantly) what can be done to fix it?

Hi,
The pilot class does not try to keep the motors in tight sync during a move. However, the motor regulation used by leJOS does work hard to maintain the speed of each motor to be the same and (unlike some control algorithms), it uses the total distance moved to do this. This tends to produce a pretty good level of synchronization between the two motors. I spent some time comparing (a slightly earlier version) of the leJOS motor controller with one based on a set of nested PID controllers (which did have active synchronization). As a result of this we made some changes to the leJOS controller, but overall the results actually looked pretty good. You can read all of the gory details here...
http://www.gloomy-place.net/lejos/lejospid.pdfMake sure you read the last couple of pages which detail the improvements to the leJOS controller....

Also of interest to you may be some changes made to the Navigation Pilot classes which allows for variation in wheel size (which may be what is causing your problem). I've not been involved with this so can't really say much about it. Some of the other developers may be able to tell you more....