Ask Hackaday: What Are Invariant Representations?

book cover for on intelligence

Your job is to make a circuit that will illuminate a light bulb when it hears the song “Mary Had a Little Lamb”. So you breadboard a mic, op amp, your favorite microcontroller (and an ADC if needed) and get to work. You will sample the incoming data and compare it to a known template. When you get a match, you light the light. The first step is to make the template. But what to make the template of?

“Hey boss, what style of the song do you want to trigger the light? Is it children singing, piano, what?”

Your boss responds:

“I want the light to shine whenever any version of the song occurs. It could be singing, keyboard, guitar, any musical instrument or voice in any key. And I want it to work even if there’s a lot of ambient noise in the background.”

Uh oh. Your job just got a lot harder. Is it even possible? How do you make templates of every possible version of the song? Stumped, you talk to your friend about your dilemma over lunch, who just so happens to be [Jeff Hawkins] – a guy whose already put a great deal of thought into this very problem.

“Well, the brain solves your puzzle easily.” [Hawkins] says coolly. “Your brain can recall the memory of that song no matter if it’s vocal, instrumental in any key or pitch. And it can pick it out from a lot of noise.”

“Yea, but how does it do that though!” you ask. “The pattern’s of electrical signals entering the brain have to be completely different for different versions of the song, just like the patterns from my ADC. How does the brain store the countless number of templates required to ID the song?”

“Well…” [Hawkins] chuckles. “The brain does not store templates like that”. The brain only remembers the parts of the song that doesn’t change, or are invariant. The brain forms what we call invariant representations of real world data.”

Eureka! Your riddle has been solved. You need to construct an algorithm that stores only the parts of the song that doesn’t change. These parts will be the same in all versions – vocal or instrumental in any key. It will be these invariant, unchanging parts of the song that you will look for to trigger the light. But how do you implement this in silicon?

[Read more...]

Classic PDA finds second life as a network touch screen display

pocketviewer

[Tomas Janco] had an old Casio Pocket Viewer PDA collecting dust. Rather than throw it away, He decided to re-purpose it as a display for time, weather, and the current status of his garage door.

The Casio Pocket Viewer was a competitor to the Palm Pilot. The two systems even shared the same LCD resolution – 160×160 monochrome. [Tomas’] particular model is an S660, sporting 6 megabytes of ram and an NEC V30MZ (Intel 8086 compatible) processor. Similar to Palm, Casio made an SDK freely available.

The SDK is still available from Casio, and [Tomas] was able to get it running on his PC. Development wasn’t without pitfalls though. The Pocket Viewer SDK was last updated in April of 2001. Software is written in C, but the then new C99 standard is not supported. The SDK does include a simulator and debugger, but it too is not as polished as todays systems – every simulator startup begins with setting the clock and calibrating the touch screen. Keep reading after the jump to learn about the rest of the hurdles he overcame to pull this one off.

[Read more...]

Follow

Get every new post delivered to your Inbox.

Join 96,434 other followers