Box Head Robot
Update 02/08/2013
Box Head Base, his new mouth, Face Tracking, and
he Tweets - See at the Bottom
The Beginnings...
Just wanting all to say “Hello Box Head” - literally that is - to, well “Box Head”. Just like many of my builds, this one began as a discarded item - old old GoPro II display case. I saved it from certain destruction and dumped it into the “why not keep” pile for some future, unknown, possible use. I originally had thought of mounting some motors on it and making it yet another little mobile robot but other projects received attention first.
After watching what Chickenparmi did with Processing, a webcam, and an Arduino (http://letsmakerobots.com/node/35147) I thought that would be something cool to try. (BTW that STILL doesn’t work for me but it’s my limited capability I imagine) BUT instead of going the normal route and popping a cam on a couple servos I wanted it to have more personality. Something that would feel kind of cool if “IT” watched YOU, or you could talk to it, etc. Of course I’m still working on that watching you part but maybe soon.
The Box Head Solution...
I
took the easiest route to animation, two servos
for movement, NeckRoate and NeckTilt. In fact
one of the existing servos was from an old
pan/tilt setup I have on my home security cams
that can be moved around via the web with a
servo controller board, thus the extra servo
horn glued to the side. A Baby Orangutan from
another project is currently running the motion
side but I have a Pro Mini clone I am building
to make it a more permanent install. The Arduino
just reads the serial commands from the VB.net
app and does movements, reads sonar, etc. There
is a LOT more work to be done on both sides of
the solution to develop a more fluid Box Head
but the basics are working right now.
The Voice and Ears... err, Ear...
The VB.Net app is based on the Microsoft Speech Recognition engine and the Text To Speech solution. It’s very simple to use, and free, which is always good. In my case I have the 5.1 Speech SDK installed on a very old XP laptop and am using Visual Basic Express 2008 as the IDE. To make the Speech recognition and Text to Speech work required only a few lines of code from samples found online and adding the system references to the Box Head project. I’ve used the MS Text to Speech API before with VB 6 and wrote a small “SayIt” program (http://protowrxs.com/files/) that I still use today in our Home Automation systems so it wasn’t all foreign to me. But it’s still pretty easy to do with the sample code that is out there.
Once you get the hardware configured the Arduino code is similar to the rest of my robots. The only exception is that the commands are, for the most part, taken from the serial port as to what to do. I do have some things on the Arduino that the VB app never knows about such as looking away if you get too close to the sonar sensor. I would like to have the VB app aware of that action but haven’t added that yet. I have re-used my stepping code from TED the BiPed (http://letsmakerobots.com/node/35632) to allow a bit more fluid head movement for most routines which has turned out rather well in my opinion. He slowly moves from position to position actually slowing down as he approaches the final requested point. The only exception to that is the “find closest object” routine that drives the servos directly as he searches for what he thinks is the thing closest to him. Some noise and bugs there but the core function works.
Interaction...
Otherwise it’s just pretty fun interacting with Box Head. Sure the actual command and control is being run by the PC and he is tethered but with that connection comes lots of options for speech. For example Box Head can read the latest news headlines through an RSS read subroutine, can get the weather by running my home automation weather speaking VBScript routine, and in the long term I hope can decipher some search data and give me the results. THAT however requires a big step beyond the limited recognition setup currently being used and turns into the dictation functions which appear to be more complicated to me.
Of course as with any current, and especially free, voice recognition solution, you have to know what to say and have to say it pretty specifically. “Tell me the weather forecast” works, “What is the weather forecast” doesn’t. But since I wrote the code I remember most of the commands for now at least.
With my home automation system and my online house code I’ve developed over the years, I can have Box Head tell me if the garage door is open, tell him to turn certain lights on and off and have him turn the coffee pot on or off as well. This is only limited by how much time I want to spend adding the commands and responses to the special link that he talks through.
The
Humor...
Right now I have Box Head listen all the time once I have work him up with “Hello BoxHead”. Sometimes it’s funny just letting him sit there and listen to what’s going on and respond randomly, sometimes correctly, sometimes completely off the wall.
The Future...
Long term I would like to have more flexibility with the commands and recognition and make it a little more friendly to other speakers but that may be difficult with the current setup I am using. I’ve also been eying my LTBotV2 platform (http://letsmakerobots.com/node/34323) that has a netbook running on it already and would make an excellent mobile base for Box Head to get around on. I even have the motor controllers and needed hardware to make that work and the motors have some pretty good encoders on them. Maybe Box Head won’t be “Stuck here on my base” for too much longer if I stick with it.
I'm already looking for a smaller but similar "box" from something to make a mini-box head with some 9g servos. Thinking I'll use the female voice and call her "Boxy". ;-)
Update 02/08/2013
Box Head has a Base, Mouth and Tweets
Finally finished up a basic base for Box Head -
he used to have his guts all hanging out all
over the place but now has a workable place for
them. Nothing fancy but functional. Inside his
base is where the Arduino Pro Mini clone is, the
speaker up front for his speech, power
regulator, and a four port USB hub for the
camera, two USB to TTL converters and the power
run for the little speaker. The goal of the base
was to cover everything up and I believe that
goal is accomplished. Additionally I wanted to
end up with only a power wire, USB, and speaker
connection which the hub allows.
Face Tracking
Since the original concept of Box Head was some
way to play with Face Tracking I figured I
needed to get it working somehow. I ended up
using RobotSee from the RobotVision Tool Kit and
am quite happy with results. The down side is I
have to use another serial connection to the
Arduino / PC in addition to the one for the
VB.net app but it is simple and effective. After
saying Hello Box Head he initially turns on
FaceTracking mode which is just another mode he
can run in. The PC .see script runs sending
UP/Down/Left/Right commands as needed to stay
centered. Watch for a separate write up of how
it works as well as hopefully an AtTiny85
version as well..
Box Head’s Mouth
The goal from the start was to give Box Head
some type of LED mouth moving from the center
out and after watching people playing with LED
VU meters like hoff’s VU Meter Robot Face (http://letsmakerobots.com/node/36063)
I decided to give it a go. However I didn’t want
to make the main Arduino try to do that along
with movements, etc so I drug out one of my
ATTiny85 chips and changed the code they used to
only drive three outputs and then wired up the
mouth with five total LEDs. One green on in the
middle, two yellow outside of that tied
together, and two reds on the outside tied
together. The then basically light up from the
inside out. With only that many it’s a little
hard to see the actual movement but better than
nothing to me. A serial connection between the
main Arduino and the ATTiny85 is setup with my
goal for future abilities of the VB.net App,
RobotSee, or just the Arduino having the ability
to send a command to the ATTiny to change mouth
“modes” or whatever.
Box Head Tweets
Chatting on the LMR Shout Box about things with
others about Twitter reminded me about my
NolenHouse account and how my house tweets
activity. At first I wanted to setup a
completely different BoxHeadRobot Twitter
account for Box Head but with the need for the
account, a proxy or email proxy account to post,
etc I decided to just let Box Head talk through
the Nolen House account. You can see any
possible tweets here
http://www.Twitter.com/NolenHouse He’s part
of the house anyhow and adds some traffic to the
account. I’ve kept the Tweets pretty minimal:
startup, goodby, what’s his age, etc for now but
may add more over time as he learns new things
and has new responses.
Price Listing
$ 0.00 - Plastic Box
$ 7.00 - Pro Mini Clone
$15.00- Cheap webcam on sale
$ 2.10- HC-SR04
$10.00- PIR Sensor (Way overpaid at RS)
$ 0.00- Junk servos - need replaced eventually
$10.00- Portable speaker
$ 7.00- Four Port USB hub
$ 2.00- LEDs for mouth
$ 2.00- ATTiny85 CPU
$ 2.00- Power regulator
$ 0.00- VB.Net and RobotVisionToolKit
Misc other: Old plastic from dog door, switch
from junk, alumn from scrap, etc
Of course you have to have a computer for this
but I think we all do already
You are really going to have
You are really going to have to post some more video!
True - Need quite time here
True, I need to show the face tracking and mouth for sure. I have to get some quite time here without dish washer, people, TV's, and all the other "domestic noise pollution" here.
-Stephen
02/08/2013 Updates... Base, Mouth, Face Tracking, and Tweeting
Just updated with some progress in the description. Built a more permanent base, added an ATTiny85 based LED mouth, Face Tracking working and Box Head Tweets...
hahaha! this is awesome!
Boxhead's voice reminds me of dying HAL :P that is so awesome!!
this is the best robot that will revolt to human beings if it will revolt to human beings! :P
The future is now
...this is a very careful presentation of the impressive skills this Box Head has. The future is now. Thank you for pointing this out.
nice job
very cool.I love this project,is very creative and proves you don't need an advanced hardware to build something awesome.
good work !
PERFECT :)
i hope to build one like this in the future, this can be a stand alone robot using something like Rasberry Pi or GizmoSphere but they do not support windows OS, btw is there any similar product that supports windows OS?
He's a really cool little
He's a really cool little guy! Still working on making that face tracking into one easy installer, its getting there. I was the inspiration?! might explain why he is such a box head [:)]
Post new comment