MobBob's servos are controlled by DFRobot's Bluno Beetle board. It is an Arduino-compatible board with built-in bluetooth LE
The Android phone then communicates with the Bluno Beetle using bluetooth LE. (So no explicit pairing is needed.)
The Arduino Software (Firmware)
The Arduino code accepts both high-level commands (like "walk 3 steps forward", "turn left", "do the wobble animation 3 times"), and low-level commands to directly set the positions of the servos.
The Android App (Main software)
The app code was written in C# using the Unity 3D engine. Using a game engine for robotics actually makes a lot of sense! For a start, games are real-time, always-running applications that respond to a frequent input... very similar to what's needed for a robot app. It also makes it easy to create dynamic visuals like MobBob's face, and easy to create nice user interfaces for interacting with MobBob.
And while I'm not using this in MobBob's app at the moment, game engines also provide support for representing 3D spaces (and obstacles in 3D spaces), and provides algorithms for things like path finding. Also, it would be possible to use a game engine's animation system to drive servo positions!
The voice recognition uses Google's speech-to-text functionality which is accessible on Android.
The computer vision is using OpenCV.
I wanted to make MobBob act alive, so his face is always animating, and stays on the screen even when the menu panel is displayed.
I will be continuing to add functionality to MobBob's app over time! He's going to do a lot more!
And, if other hackers want to build their own MobBobs and create their own apps... I would love to play with what other makers create. :D
The 3D Printed Parts
When I built the original MobBob, I was still figuring how to make him work so, there was some trial and error and hot glue!
However, I have refined the design with MobBob V2. V2 is easier to print and assemble, and it's possible to tweak the position of the parts during assembly to ensure that he is evenly balanced. (You need to make sure the mobile battery booster, and the phone balance each other out to keep him stable.)
Also, V2's new mounting holes can also be used to add MobBob accessories!! I have some fun ideas for these and will be putting them on Thingiverse soon. Stay tuned! :D