Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: Beagle Bone Black and RIoT Board
What were the biggest problems encountered?: Lack of available schematics for the board
First off, I would like to again thank Element14 for sponsoring this Road Test. element14Dave, rscasny and the rest of the Element14 staff are always very helpful, friendly, and understanding. They go out of their way to make road-tester's efforts go as smoothly as possible.
For this Road Test, I decided to try out the new Raspberry Pi 3 in a software application. Over the past few years, I've followed the progress of an open source project aimed at modelling the operation of the neocortex of the mammalian brain. Basically, it takes streaming input and learns any temporal or spatial patterns that exist in the data. Based upon this pattern matching, it can make predictions about what the next data point(s) will look like or it can flag data as unexpected if it doesn't fit the pattern(s) that the software has learned. This basic functionality seems to me a good fit for implementation in an embedded system like the Raspberry Pi. After doing a little research, I found that the software had been ported to the Raspberry Pi in the past. So, I submitted my project proposal for the Road Test:
I want to road-test the Raspberry Pi 3 by creating a pattern recognition sensor using Hierarchical Temporal Memory (HTM). Numenta is an open source software which uses HTM to analyze data and recognize patterns. I would like to port this to the Raspberry Pi and use it to recognize speech patterns. For example, I would like to program it to recognize my voice and perform a task when I say a certain key word. I think that this would be an excellent test of the Raspberry Pi 3's capabilities.
The key tasks in this project are:
1. Port the Numenta engine to run on the raspberry pi. A brief search of the Numenta website shows this has at least been attempted before.
2. Convert the microphone input of the Pi into a format suitable for the Numenta engine.
3. Use the machine learning capabilities of Numenta to teach it my voice and a few key words.
4. Interface python to the Numenta engine to handle processing the inputs and outputs.
5. Write code to execute the required task upon sensing one of the key words has been received.
I look forward to your selection of participants for this road test. I hope that you will consider my application.
Much to my surprise, I was notified that I was selected to participate in the Road Test! So, I started out by ordering a few items that I would need for the project:
I successfully ported the Numenta engine to run on the Raspberry Pi, but it took quite a bit of effort to get there. I posted a couple of different blogs on the subject, Road Testing the Raspberry Pi 3 with HTM, and Road Testing the Raspberry Pi 3 with HTM: Building the Software for 32 bit ARM. After my last post, I spent several weeks getting the updates ready to be integrated into the mainline project.
From this point, the deadline was fast approaching and the project got bogged down in a myriad of issues both technical and personal. Ultimately, I came to the conclusion that the software was really not intended to do what I was trying to do with it. There are other software packages out there some of which have been blogged about on Element14 which are more suited to this task (see fvan's [Pi IoT] Alarm Clock #12: Voice Control or IoT Alarm Clock - Part 4 or Running Amazon Echo (Alexa) on Raspberry Pi Zero ). I suspect that as time goes on and Numenta evolves, it will be possible to easily do what I wanted to do with it. However, it's not there yet.
Despite this project not ending as I would have hoped, I found the Raspberry Pi 3 to be an excellent piece of hardware. I had no lasting issues with porting the Numenta engine or with compiling the project. In the end, that process was very much like the process on your typical Linux PC installation. In fact, I used an Ubuntu virtual box installation to test out the process before moving to the Raspberry Pi. From a software developer's standpoint, it should be fairly straight forward to port most Linux applications to run on the Raspberry Pi.
Demonstration software and support material is widely available due to the open source nature of the Raspberry Pi project. I found that I could easily find answers to non-Numenta specific topics online with a short search.
Finally, from the time the first Raspberry Pi was released, it has always amazed me how cost effective and powerful this little board is. The price to performance ratio is excellent. My only frustration has been the reluctance of the Raspberry Pi foundation to release full schematics. I have never understood Broadcom's business model of holding such information so close to the vest, so to speak.
Again thank to Element14 for sponsoring this RoadTest. I found the process both rewarding and humbling considering the challenges faced and my inability to come to my desired conclusion. I will soon be writing a blog to offer encouragement to those facing similar obstacles.