At my current job we have an RC robot named Rosie that the museum staff occasionally drive around and use to interact with guests. They wanted us to add an automatic mode when she isn't being driven, in which she will play a pre-recorded audio file when someone approaches. I decided to take it a step farther and make her head turn towards whoever is approaching. I am using OpenCV on a Raspberry Pi 3 and a cheap USB webcam. All of the drive hardware is already installed in Rosie, I just have to interface it with the RPi.
I have most of the hardware installed into Rosie and have basic tracking working. I have added a video of this.
I still need to add hardware limit switches and decide what to have it do when there are multiple faces in view. I will probably have it spend a certain time on one face then pan to another, and so on.
I have a proof of concept working with OpenCV running on a PC and using a Logitech webcam we had lying around. I have very professionally taped the webcam to a servo that I am driving from an arduino. The python code is interfacing with the arduino over usb serial.
I have ordered the hardware for the robot and am awaiting it's arrival. Once I get OpenCV up and running on the RPI3 then I will work on the hardware interface on Rosie.