Changing Direction with Say It when it's running another command.
This is a response I got from one of the engineers that manufactuers the Say It module.
Hi Paul,
Unfortunately it might not be easy to get vocal commands while the robot is
moving, for two reasons:
1) The motor gears, especially servos, can be very noisy and you may also have
electrical noise coupling into the microphone input, if your hardware has not
been carefully designed. Recognition could work to some extent with soft
environmental noise, mostly homogeneous, but does not work reliably with sudden
noises.
2) You need some hardware support from your microcontroller, so that you're able
to receive at least one character while controlling the motors.
With Parallax Basic Stamps I think you only have one true serial port, which is
used for communication with the PC. The SayIt module is connected to pins 0-2,
which simulate a serial interface with a blocking software routine. Therefore
you can't receive the result of voice recognition while controlling the servo
motors, because during a servo pulse you could miss a received character,
partially or entirely.
With more powerful microcontrollers, with a spare hardware UART, you could try
to use voice recognition during robot movements, but you could always face noise
problems outlined above, either electrical or mechanical.
That's why the demo code was designed that way.
I hope this helps. Have a nice weekend.
Kind regards,
Markku
Well he didn't say it was impossible. I don't have a STOP command in the word set so if I add a STOP command and add a different command I think I can at least get it to follow something other than a straight path. Anyway I'll try it.
Hi Paul,
Unfortunately it might not be easy to get vocal commands while the robot is
moving, for two reasons:
1) The motor gears, especially servos, can be very noisy and you may also have
electrical noise coupling into the microphone input, if your hardware has not
been carefully designed. Recognition could work to some extent with soft
environmental noise, mostly homogeneous, but does not work reliably with sudden
noises.
2) You need some hardware support from your microcontroller, so that you're able
to receive at least one character while controlling the motors.
With Parallax Basic Stamps I think you only have one true serial port, which is
used for communication with the PC. The SayIt module is connected to pins 0-2,
which simulate a serial interface with a blocking software routine. Therefore
you can't receive the result of voice recognition while controlling the servo
motors, because during a servo pulse you could miss a received character,
partially or entirely.
With more powerful microcontrollers, with a spare hardware UART, you could try
to use voice recognition during robot movements, but you could always face noise
problems outlined above, either electrical or mechanical.
That's why the demo code was designed that way.
I hope this helps. Have a nice weekend.
Kind regards,
Markku
Well he didn't say it was impossible. I don't have a STOP command in the word set so if I add a STOP command and add a different command I think I can at least get it to follow something other than a straight path. Anyway I'll try it.
Comments
http://www.parallax.com/StoreSearchResults/tabid/768/txtSearch/servopal/List/0/SortField/4/ProductID/481/Default.aspx
You could also add something like this instead as a co-processor to handle the servo control
http://www.parallax.com/Store/Accessories/MotorServos/tabid/163/txtSearch/servopal/List/0/SortField/4/ProductID/595/Default.aspx
With this you can just send out the serial commands to tell how you want to move the servos and then just update it when you want to change it,