So Elaina (daughter) has a robot competition at church. Obviously at her age the kids aren’t going to be building them, the parents are. I’ve been tasked with building a robot, with no rules. I’m curious if anyone else here has ever ventured into this territory and might have some tips to share, things that you wish someone had told you before you started, or especially tips on offline voice recognition.
I ordered a bunch of stuff from pololu.com. Going with the Zuma for the base. Raspberry Pi for the brain. Trying with everything I have to manage voice recognition and custom responses without internet connectivity. Toying with pocketsphinx for input, which is fairly accurate if you limit it’s dictionary and tune it just a bit. Hoping to use Python to tie that with something like pyttsx to manage the voice output. Decent results thus far, though only one phrase and the code dies. I’m not great at making continuous listeners.
So there’s my story, and cry for help, for anyone capable and interested
So, sounds like you’ve got the base, the brains and the movement sorted, but are just looking to sort voice control. Whilst overkill, might be worth looking at some of the offline home automation systems you can run on the Pi…
Some people at work were playing with this as a DIY alternative to the Amazon Echo. I believe you can get it to call web hooks upon detection of a voice command. If you sort yourself out with a Flask API or similar for the various actions, and get Snips to trigger this, you might be able to smash something together with minimum effort. https://snips.ai
I do EE for fun and have just graduated from Uni, so if you’re wanting some input from that front I’d be happy to help
Good luck! Really glad that children are getting to see/learn/play with robots. It’s what inspired me as a child!
I had built quite few stuffs way back during my engineering days.
Touch-screen based wheelchair controller
Displays for Elevators
WiDACS (WiFi based Data Acquisition System)
and many more.
My next project was supposed to be a robot because at that time Honda’s ASIMO was cool AF (it is still).
Took Robotics as one of my subjects, was devastated in the end (Education system in India is not good)
So I did some research on my own to build a bot and here are some of the outcome as per your situation.
You should start with an Arduino board and code the program in Embedded C language (its easy). Rasberry Pi is for more advanced users.
With Arduino board you’ll be able to do the following:
Record user/input voice
Process it (you need a set of predetermined library for this and you’ll need a module) [Voice Modulation - reference]
Output (can be speech, control signals, movement, etc.)
Don’t go for higher end stuff which are complex. Start simple.
Although, Arduino board will not be able to handle a lot of complex stuff so you’ll have know the limitations. But since its for your daughter’s competition, involve her. She’ll be able to understand Arduino more quickly than Raspberry Pi.
I have no clue how young your daughter is, but it will be better if you let her do the major stuff of the project. She might lose, but she’ll learn a lot!
@JackHadrill +1 for snips. Didn’t know of it, but seems to fit the bill. Offline, works on Raspberry Pi, able to process voice I/O and able to train custom actions.
@BlaZe +1 for recommending something simpler so Elaina can learn. Arduino is a capable hardware, it should work better for real time programming but can it handle speech recognition?
I did some realtime programming in python using RPi few weeks ago (not related to voice I/O, but it had 4 inputs and 4 outputs which required continuous polling and required precision response times of ~10-20 ms). If there is a suitable library providing interrupts or event listener functions for the inputs (voice recognition in this case) it will make the whole thing easier to code. OTOH, if interrupts are not available in any library or plainly not working as intended, use loops and sleeps. To manage states inside the loop, use a library like transitions. Using loops and sleeps is not pretty, but it will do the job and test test test because there will be issues when the loop is running every 10 ms and updating a dozen states on each run.
The Raspberry Pi will be easier than a microcontroller. Sure, the Raspberry Pi is more complicated as a package, but it’s much easier to get started. You can do almost everything in Python and not have to worry about memory limits, performance/clock specifics, nor learn C. An inordinate amount of libraries to help you out with most of it, too.
Explaining the Arduino or any MCU to a kid will definitely be easier than explaining a Raspberry Pi, but I don’t think it’s worth sacrificing the ease of use and general utility of an RPi, after all that’s what it was created for.
My vote goes for Arduino & RobotC. Its very easy to learn and explain. I think RobotC even has a GUI version. Only doubt is speech recognition. RPi with something like snips is definitely an option but I would not recommend Python for realtime programming.
Thanks for the advice friends! I’m going to include her on design finalization and the logic for the robot. I get the joy of doing all of the wiring and soldering. I got the Pi running the motors today with Python scripts, and I got all of my sensors in the mail today which also included a nice little joystick
I’ve secretly been waiting for an excuse to get into this stuff lol