Curt the Creeper Update: Adding Voice Interactivity and Sound; 4 bar linkage design


I spent the past few weeks researching voice interactivity and sound effect playback (mainly through Google search), and designing a 4 bar linkage to figure out what powertrain I need to drive the feet movement.  I thought others might benefit from info about my work so I'm posting it here.  This project will likely move at a fairly slow pace mainly due to current budget constraints.

Speech Interaction:

Ideally, I'd like for Curt to converse with you, and ask questions that you respond to, and vv.  Also play sound effects, pre-recorded or self generated according to the program.  I have found a myriad of options for voice interactivity, but it appears the Uno is somewhat limiting here.  So, I have purchased a Pi Zero for experimentation, and will begin digging into that in a week or so when all the accessories arrive.  If anyone has good general resources for powertrain and voice control feel free to give advice.

What I envision is text to speech and speech to text processing working together, with control in between.  So, for instance, Curt could ask for your name, store it as text, and then use your name in future communication.  Alternativey, it could record you speaking your name, and then use that sound file as part of future communication when referring to you or other things.  I've found there are a lot of Voice Command programs, which recognize speech sounds, and then run commands associated with the sounds, but this is basic, and I'd like to use general speech recognition to get text of the speech to be used in future activities.  There are a lot of apps for android, so I'm considering using an old phone as a part of the robot system.  The IOIO board may be of use here: it allows you to control many IO devices by programming apps on Android phones using Java.  Any suggestions woud be greatly appreciated.  These are the voice interaction sources I've found so far for Arduino, Pi, and Android, and my initial assessment of them:  The thing is, I really only know Wiring for programming through the Arduino IDE, no other languages (besides basic Matlab and some VBA).  So I'd have to delve into C++, or Linux or Java, or Javascript which are fairly intimidating to me right now.  I'd love to know what you think.

Arduino Text to Speech Programs:
Parallax Emic 2 module:  $60

-Many voices, control over voice tones and inflections
-Uses serial communication.
-Has an amp for a 8ohm speaker, headphone out jack.

Speakjet Shield:  $90 ?
-Voice appears to be low quality monotone "Atari 8 bit" type, has many interesting robot sound effects.
-Needs to be programmed phonetically 

RoboVoice Shield:  $50 ?
-Voice appears to be low quality monotone "Atari 8 bit" type

Talkie Library:  free
-Uses pwm output, pin3 hardwired.
-Uses timers 1&2 and may interfere with other pwm outputs
-Speak&Spell like quality, only very limited vocabulary of certain words available

Magic Mouth Shield:  ?
-Seems to have low quality "Atari 8bit" voice.

DFRobot Speech Synthess Shield:  $42.05
-UART, IIC or SPI control
-Has a lot of functionality, several voices, Chinese language available.
MOVI speech recognizer and speech synthesizer shield:  ?
-Seems to have a lot of good functionality.
Up to 200 customizable English sentences; Speaker independent; Standalone, cloudless and private; Very easy to program"
-KickStarter Project, page indicates they were delivering production samples in February. 

Arduino Voice Command Programs:

EasyVR Shield:  $50

-Has a lot of functionality, some preprogrammed commands that are user independent, 
-Some commands trainable to a user.
-Uses serial communication.
-Has some playback capability?? 

uSpeech: opensource code
-runs entirely on arduino 328p boards
-limited range of recognizable sounds

ES6928P stand alone voice module:  $82
-Recognizes 4 short voice commands.
-Trains from user's voice 
-Not great at interpreting differnces between similar words. 

Linux Voice Related Programs:
eSpeak voice synthesizer:  free program

-seems very good, more to come later

Festival/Flite ?

Voice Command:  free program
-seems very good, more to come later

Android Voice Related Programs:
1Sheeld:  $55 
-Has many 'virtual shield' functions that export Android device capabilities to Arduino through BT connection. 
-Has TTS and voice command 'sheelds'.  Need to press button for Voice Command activation ?  Not good if phone is mounted on robot, checking on that.

BT Voice Control for Arduino:  Free App
-Seems like good quality and good reviews. 
-converts voice to text and sends to Arduino via BT. 

BT Voice App for Arduino:  Free App
-Seems like good quality and good reviews. 
-Converts voice to text and sends to Arduino via BT.  

Arduino Voice Control:  Free App
-Converts voice to text and sends to Arduino via BT, AND is able to receive text and data from Arduino. 

Voice Control Arduino:  $2.03 App
-Converts voice to text and sends to Arduino via BT.  

Sound Only Modules:
Adafruit Music Maker Shield:  $34.95 w/ 3W amp, $29.95 w/o
-Has a lot of capability, uses sd card, but uses processor interrupts which interferes with other processor activities such as motor control.

Adafruit Audio FX Sound Board: $14.95 - $29.99
-Can be standalone, plays sound files (11 total?) triggered either externally or by serial control.
-Models vary by memory included and amp option. 

Adafruit Wave Shield for Arduino: $22
-Has a lot of capability, uses sd card, real time voice changer, external triggers possible.
-"Audio is played asynchronously as an interrupt, so the Arduino can perform tasks while the audio is playing."
-Not sure if the other tasks will be performed normally however... 

SparkFun MP3 Player Shield:  $24.95
-Uses sd card, same VS1053 chip as Adafruit Music Maker, similar capabilities and drawbacks.

Sparkfun MP3 Trigger Shield:  $49.95
-Uses sd card
-18 external triggers
-256 files capable with serial control

Sparkfun Wave Trigger Shield:  $49.95
-Uses sd card
-16 external triggers
-Serial control
-Can play and mix 14 tracks simultaneously
-Can be controlled by Midi

DFPlayer Mini:  $8.90
-Plays mp3s from sd card.
-Very small size.
-Several control options including serial only. 

SeeedStudio Grove Serial MP3 Player:  $14.90
-Plays from sd card.
-Serial control.
-Appears simiar to the DFPlayer Mini in control functions

Banggood "Voice Playback Module Board MP3 Reminder For Arduino":  $7.99
-Uses sd card up to 16GB
-Appears to have 9 external triggers, and can be controlled with 5 digital select pins + 2 control pins, to select from 31 tracks.
-Volume control pot on board.
-Documentation questionable.

DealExtreme Serial MP3 Player v1.0 "UART Control Serial MP3 Music Player Module for Arduino, AVR, ARM, PIC":  $6.18
-Uses sd card.
-Uses serial control only.
-No limit for # tracks listed.  Looks reasonable. 


Foot Movement:


I'd like the feet to move like they do in the game, and more.  I envision a 4-bar linkage, the input link being attached to a disk on a gearmotor rotating at 120rpm max and the foot being the output link hinged at the body.  I procured one such motor, but found the torque insufficient (1.5 inlb), although it drew 900 mA at 6V at stall through the Adafruit Motorshield v2.  So I have used Matlab to calcuate the torque necessary to move the 4-bar linkage because the foot weighs ~1.5lb, and the link attachment is at a bad location that will require more force to operate it (estimated ~9 inlb).  For reference a std. servo produces about 6 inlb of torque.  See attached sketch:


I found a good 4-bar linkage analysis here:  From the initial analysis I estimate I will need > 6 in-lb powertrain output torque minimum to move 2 feet on a side at once.  See the attached graph figure and Matlab code.  If torque is proportional to current, then I may need a 4amp motor at 6V, which may be beyond the Adafruit Motor Shield v2 capabilities.












Matlab code m-file:

In the future I will implement individual foot control by linear actuator to give more possibilities for feet movement/features/functions (wave Hi, kick a ball etc.) .

Other Progress:

Adafruit Music Maker Shield:
-Got the Music Maker Adafruit shield working sort of.  I was going to use this shield to play sound effects and record sounds and voice with good quality but I found out through much troubleshooting that it is not compatible with using a servo at the same time a file is playing.  According to Adafruit this is due to the Music Maker's use of interrupts which intereferes with the servo signal generation.  I also found when playing tracks stepper motors slow by 30% so it's really not compatible with the MotorShield v2 as advertised.  I need another option for sound.

-Spent some time researching speakers.  The ones I have are bare uninstalled 3W, 4 ohm, 1.6 dia.  I was going to learn about designing speaker enclosures because by playing with them I've found they sound very different depending on how they are enclosed and mounted.  I also want to find out how to adjust the volume of specific mp3 files in the file, probably try Audacity..  However I've also found some enclosed speakers and bluetooth speakers that would probably be fine if I don't want to get too deep into speaker design, although it might be good knowledge for other projects in order to keep costs down.

Matlab Arduino Resource Pack:
I am doing a Matlab / Arduino interface software tutorial, because I am interested in using Simulink model based control with some projects.  I'll update here on how it goes.

In Summary:

In general, I think a great resource for robot makers would be databases of things related to different robot functions (voice control, movement, etc...) and requirements that have been evaluated by people so that that information can be accessed by anyone and thus make onging widespread development faster and more efficient.  Such as the tables you come across in wikipedia that have long lists of things comparing features.  I haven't found anything really like this, but haven't searched too hard or asked around much yet.  I would love to contribute to an organized database as well.   If you know of resources like this can you please let me know I'd appreciate it!  I think this website is well organized and is the place to have something like that!