Well, as far as discussions go, and sharing my shallow knowledge of ROS, here are a few collected thoughts to start steering this.
Voice or speech recognition is a very new and unexplored field; I've followed a recent discussion on the list and these are still early days. Might help understanding commands, but not simple instructions for instance. This was what the author himself said.
I am not 100% sure you will need to have Linux on the tablet, since Android tablets are essentially Linux and there are modules developed on ROS that allow some sort of interaction with the robot. Now, using your tablet's CPU to run the entire robot would be unrealistic, with the level of refinement you are expecting.
Regarding "head" movement, well, this is a somewhat easier field; Supposing that you have some sort of support for the tablet (you will have to be creative here), you can use the famous "pan and tilt" mechanism, driven by servo motors, to move the head up and down, and to the sides. Not very human-like, but coherent with the "budged specified".
Now, facial expressions, mimicking the human expressions or not, well, I personally think this is too much to ask from a tablet or regular ARM processors. You might want to re-think your hardware requirements. I have not heard of anything like this yet (well, I am new here), but this is something that the Kinect software and hardware did, with games. This is complex stuff, IMO.
Back to the tablet interface with ROS or whatever hardware you have in mind, well, from my experience tablets don't play well with the USB port, naturally. You might want to consider bluetooth or WIFI. OF course this supposes the tablet will run the face software and some other light stuff, and some other stronger hardware (beaglebone black perhaps ?) would run the power-hunger parts of the robot, including image processing (input from camera and processing your smiley face, sending the result to the tablet.
The project is nice. It will keep you entertained for days, but I am afraid it will require some degree of programming skill. If you are a beginner like me, you might want to look into coding in python, at least to start, until you get the hang of things. It is common sense that if you want serious, quick and powerful stuff you should go to C and its variations.
For camera input you have OpenCV, and also OpenNI. Those will help you with image processing.
Now, your intention, of creating a sort of companion, is brilliant. I had an idea like this, simpler, tough, to be used to monitor the health of debilitated patients. A dog-shaped robot that would have some degree of cute interaction, and be able to collect readings like body temperature, blood pressure, pulse, and other simple metrics, monitoring them and eventually sending them elsewhere, via wifi.
Now, let's "face" it. A head is a complex thing by itself. Add ot this human interaction, even at the most basic level, and you have a project that is already big, by itself, left alone the rest of the robotic stuff, like being mobile, route planning, object avoidance, among others.
Let's go kickstarter on this, and I'll quit my day job :D
Originally posted by ccapriotti with karma: 255 on 2014-07-17
This answer was ACCEPTED on the original site
Post score: 0
Comment by fschutzman on 2014-07-18:
Thanks for the input. I have seen robots running with far less computing power than a tablet. I was thinking of converting to linux to remove the constrictions that an android operating system. Too bad someone has not figured out how to make the tablet act as just a smart monitor taking input from another computer. The problem I see is that the necessary computing power of a robot requires a big form factor which is not advantageous to something small on a desk. I am sure someone can come up with an "app" that produces a moving face. Anyway it is a thought for someone to go with.