Another voice-control experiment; more Talrik construction

I’ve attached my latest attempt at a voice-control toy using the wintox SR interface.

Last time I was just driving the output from the VR down a "hyperterminal"-like program that just copied text down a serial line to the bot. The bot then used a MBasic program to check for known strings, and callup the appropriate "action routine". For Unix-heads, this is pretty much a simple lex job.

This version throws away the RS232 cable and uses an IR link. All the string-to-code stuff is done on the laptop end. But the bot has a simple stack-like language that allows simple commands, programming and editing. Ah yes, this is dangerous. :)

In the vid (again, very dark; bright lights were interfering with the IR link and even this vid shows some problem when the bot gets too far from the IR and directly under a floor lamp) you can see the bot follow some fwd, back, left and right commands. Commands it understands result in a flashing LED, so that’s not an error. Bad IR codes or other "syntax errors" in its RPL programming language result in a little tune, much like the prev experiment.

After a few one-off commands (note I’ve used the idea of an explicit stop — when you say "forward" the bot moves forward until you say "stop"; maybe it should only move forward 10 cm and require another "forward"), a program mode is entered with the command "program".

Like many of those WowWee things, program mode is ended with a "play" or "doit" command.

A couple of "doits" are demonstrated, but some problem over on the rhs of the room (as above) means I have to take command of the bot using a handheld IR controller — and this is yet another toyland model of what things will probably be like in the real world with full-scale bots — to force the thing to turn around and move back to the centre of the room where it can see the IR broadcaster (this is a unit bought off the net and plugged into a USB port) that’s translating the speech to IR codes.

I also demonstrate the "interrupt" facility. Another safety feature for real-world products. :)

While the bot is executing an internal program it can be told to "stop" and go back to "listen mode".

Then the "edit" function is demonstrated. Basically, you can pretend the program stored on the bot is a text file and just replace, insert or delete codes. I only tried a "replace all", since that was approximately debugged! :)

Even so, I’ve noticed a tendency for the "replace all" to actually do an "insert" instead, meaning the bot seems to go backward and then go forward after I’ve directed "replace all forward with backward".

Sometimes things work as expected, sometimes not — more debugging later on all parts of the bot s/w (and maybe selecting more redundancy on the IR codes to represent the basic commands).


Elsewhere, Talrik is make very slow progress. I managed to burn a finger or 2 and assemble about 1/2 the wiring needed to get the motors turning under autonomous control.

But I also seem to have blown out a LED in the process. The IR sensors have been salvaged — I hope — via the use of teeny-tiny little fire-axes to scrape off some short-circuiting gunk. But the sensor hacking has still to get done properly before they can be mounted.

In the meantime, some new pix.

Underside of top-plate with some sensors, emitters and some wiring in place:

 

Some random views of the Mekatronix controller and wiring (hey — it’s boring to make the connectors and cables, let alone the soldering, so now it’s YOUR turn):

4 Comments

  • On 09.19.07 ash said:

    Haha that is awesome :) Was that a deathspiral reference? :)

    I am definitely going to have to try something similar with my Mindstorms once I get the crazy battery/firmware issues worked out. It has a bluetooth link which will be handy.

    Keep up the cool projects! :)

  • On 09.19.07 Anonymous said:

    The bot (this was take #27 or maybe #28 — I actually lost count at one point) had programmed me to recognise this kind of behaviour as “I’m out of control”. After being told to turn left or right it started spinning at faster-than-programmed speed and refusing to stop on voice command.

    The thickness of the carpet pile near the walls doesn’t help the motors, and it *may* have something to do with battery drain and getting the odd reset on the cpu.

    Bot being out of the direct line-of-site of the UIRT (the usb broadcaster I had attached to the USB port of the laptop) and under a bright light was also either stopping the IR codes getting through or maybe even generating a few wrong ones. :)

    Anyway, the IR codes were selected to correspond to some of the buttons on a universal remote that came with the Viper kit. So I can just use that remote (if I remember to pick it up!) in “emergencies” to force it to move back to the centre of the room.

    Is I said, take #27/8. Whew! It was hard to control all the things that could go wrong. Since the bot had no autonomy — not even a bump sensor — it kept missing some command or other and end getting wedged under the laptop, some piece of furniture, or even between a wall and (pile) carpet.

    I had *nearly* got a clean run — the lighting was also a lot better than the final clip turned out to be — when I noticed on playback the mike I was using to make the commentry had died and there was just a loud buzzing noise. :) I think that was take #10 or so… only another 20 to get back to that position… :{

    You can hear even in this clip “stop listening” as I noticed my laptop’s standard VR had somehow turned itself on and was doing something to my voice, too.

    Just after the start of the demo there was a M/S “clunk” noice which I initially ignored. But it turned out some things I was saying were opening and closing aps and popping up “please explain” menus. I’m lucky my whole desktop didn’t end up in the rubbishbin…

    (It was also funy to play back clips and sometimes a “start listening” accidentally on the vid started up the VR on the laptop after which it started executing all vid voice commands!)

    I’ve kept many of the out-takes (those where something didn’t go wrong inside just the first 10-15 seconds!) and some of these are hilarious. But they contain quite a bit of swearing… ;)

    This exercise was a bit of a multi-tasking nightmare. ;)

    Sitting on the floor, remembering to steer the laptop (webcam), watching the s/w running on the laptop and a nearby PC, controlling the movie program, positioning of the mike, remembering to talk and — sometimes — remembering to use a remote control to get the bot back into the frame; it was all a bit too much.

  • On 09.20.07 ash said:

    But i fear it will only be our children’s children who benefit from all of our hard work! :)

    Still, when it works it is the best thing ever…

    I personally am going to have a small explosive charge mounted in the brain of all of my household robots. I have seen them go wrong way to many times to be able to sleep soundly with a Honda Asimo walking silently around my house at night!! hehe :)

  • On 09.20.07 Anonymous said:

    I am thinking of putting in an Azimov-like “prime directive” to stay inside a ring of black paint for future experiments. :)