Yes.

Paging @pbender ... he just posted some great links in another thread quite recently.

Also, it's not exactly DIY, but you can make one with an Arduino and a motor shield, by hacking the...