Desktop companion robot with tracking eyes and a talking brain

Nov 10, 2026 Last reply: 1 hour ago 4 Replies
Jump to replies (4)

When everything is running, this little desktop companion watches the room, turns its neck to follow people, listens to speech and answers out loud. In the demo it handled a spoken question about a schedule and confirmed adding a reminder, tilting upward on its servos when acknowledging and settling back down after replying.



The construction is a clever mix of devices. An Android phone acts as the animated face, mounted on a pan-and-tilt bracket moved by two servos. A Pi Pico W drives those servos, receiving angles over serial and applying EMA smoothing to keep the motion clean. A MacBook runs mediapipe and AprilTags on a webcam feed to work out where people are, converts 2D coordinates into angles with two lines of best fit from a calibration script, and also hosts a conversation server built on Silero VAD, whisper-cpp and llama-cpp running gemma4:12b at Q4.



The details that stand out for me: the on-screen pupils track faces and blink, and switch to an open-book icon during data retrieval. People are identified by AprilTags worn on them, matched to the closest face, and the robot never saves or remembers faces, which the maker admits felt kinda creepy. The project is also modular, so the face and eye tracking, the conversation server, or the tracking control program can each run on their own.



As for what is still open, the maker wonders whether 2 degrees of freedom is enough for anthropomorphising or whether a third servo would help, and the wiring is admittedly a mess pending an enclosure. Voice detection also does not yet interrupt the TTS playback.


This is a really fun build. One thing I am curious about: how does the maker stop the robot's own spoken replies from tripping the Silero VAD on the conversation server? With a mic listening all the time, I would expect the TTS audio to be picked up and cause the robot to hear itself.

Using a phone as the animated face seems like the smartest single choice here. A phone screen gives bright, expressive eyes with pupils that track faces, and pairing that with a servo-driven neck makes the head and gaze move together. The trade-off is that the whole personality now depends on keeping that phone powered and mounted on the bracket, but for a desktop companion that seems well worth it.

Since the maker is already asking whether two degrees of freedom is enough, I would suggest adding a third servo for the neck before anything else. A bit more head motion would pair nicely with the blinking eyes and the tilting acknowledgment gesture, and it might make the robot feel more alive in conversation. It also looks like a smaller job than jumping straight to a custom PCB, which the maker feels is too early anyway.

The maker covered this one: the laptop checks the length of the TTS wav file and sleeps for that exact length before re-enabling VAD, since the robot's own speech could otherwise trigger the voice detection. Acoustic echo cancellation is not part of the setup, and the maker had not heard of it until it came up, but is planning to look into it for more natural use without a lav mic.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required