We are working on the new release right now. We have hit a couple of
issues in getting the motors to run closed loop, including odometry data.
We've solved one issue having to do with a level shifter/buffer used
in the Robot Area Network (RAN) between the 5V motor node and the
rest of TrackBot which runs on 3.1 volts. Why 3.1? So that it can
work with both 3.3V (common) and 3.0V (not so common, but SunSPOT
uses 3V) devices.
The issue we are currently grappling with is the digital PID loop
which locks the motors to a commanded rate. This is going OK. But the
motor tachometer data (we have a patent filed on our method, which
doesn't use an added encoder) is really noisy. Much like typical gyro
or accelerometer data. We are working on a Kalman filter (written in
C, for the 8-bit AVR AtMega168 we use on the RAN). But working out
the details and trying to fit it in 16-bit integer math, and keep the
code small and fast, is a bit of a challenge. The fact that I haven't
done any matrix math for a while doesn't help, either!
If anyone has some good app notes or references that might help, we'd
be grateful. You can see the Kalman references we have already in my
delicious bookmarks - select the bundle "KalmanFilter" at
------- WWW.SYSTRONIX.COM ----------
Real embedded Java and much more
+1-801-534-1017 Salt Lake City, USA