EECS 373 Winter 2007 Project

voiceBot


Results

Overall, our design worked close to what we expected. The LCD, distance sensor, and parallel port bus worked nearly as we expected. However, the voice recognition didn't work quite as well as we had hoped.

Before we wrote any code for the voice recognition, we did collected data on eight words being spoken at least ten times. We then computed the ratio of zero crossing in each frequency range, and the standard deviation of the ratios for each word. There were a few words in which the standard deviation was quite low. This encouraged us, and gave us hopes that it would work well on the MPC. However, it turned out that we underestimated the impact of not having floating point operations.

The distance sensor worked pretty much as expected. However, we did have to orientate the sensor vertically as opposed to horizontally. When horizontal the sensor field of view as too wide, and this lead to difficulties in analyzing the data. However, with the sensor rearrange to be vertical things worked much better. Well, that is as long as you approached the lab station in a straight line.

We ended up spending a lot of time debugging LCD bus controller issues. We went through three basic hardware designs before there was something that worked reliably. The first version of the hardware was pretty much just wrong. We weren't latching/buffering the right signals, and we only worked in the best of cases. The next version of the hardware fixed the latching/buffering problems but still left us with timing problems. Finally, with some thinking and reviewing the spec we were able to get the timing down. The only unresolved problem was an occasional character that would be lost or overwritten. In some discussions and tests with Matt Smith we were able to narrow this down to a byproduct of changing the direction of the data bus. When we fixed the direction of the bus and altered our software to match, the problem disappeared.

Finally, when we designed our four bit data bus to the parallel port we didn't allow for error correction due to resource limitations (remaining time as well as the number of dedicated input lines on the parallel port) and the assumption that there wouldn't be any problems due to the short wire length. However, we were wrong in our assumption. In somewhere around 10% of the bus transactions the computer spoke a different word than was requested on the bus. However, the error rate was low enough that it didn't critically affect our design.

Conclusion

Overall, we were able to achieve most of the functionality of our design. When the user approached the lab station in a perfectly straight line, the system was able to greet that person and count him as being near our station. The same went for when this person would leave. However, if there were deviations from the straight line or interference from people walking in lab we got unpredictable results.

The voice recognition worked with a reasonable level of accuracy when everything was just right. In order to hit this accuracy rate we needed the potentiometers to be adjusted correctly, the speaker to maintain a constant distance from the microphone, for the noise level to be low in the lab, and finally for the user to speak the words in a very consistent way. Basically, the system didn't allow much room for error. As noted above, we really feel that the addition of a floating point could have increased our accuracy.

Our design could have been improved with the following:

  • Floating point support on the processor
  • A quieter lab environment
  • A finer tuned pair of band-pass filters
  • A higher quality ultrasonic distance sensor, or a new method for detecting arrivals / departures

Created by Terry Dolan & Gary Wong