We get to see a lot of Pi-powered robots, but rarely (if ever) one crammed with quite so many features as Mambot. The creation of software developer Ahmed Al-Faris, it features a manipulator arm, five control methods (including autonomous), video streaming, Alexa voice interaction, obstacle avoidance system, and the ability to read text. Not only that, it is even integrated with the eAccounting ERP system at Ahmed’s employer, Visma Software International, enabling it to scan and handle orders.
It has certainly come a long way since Ahmed’s original aim: “At the beginning, I just wanted to turn two wheels using the Pi.” He reveals that the Mambot hardware is constructed primarily from the OWI-535 robot arm and OWI All Terrain Robot kit. “Both have been disassembled, reconfigured, and customised heavily. Trying to fit everything together was tricky. A lot of hacks were involved using bits and pieces.”
Ahmed has been working on Mambot for around a year, using the little free time he has. “There were many moments of desperation, where I wanted to abandon the whole build,” he admits. “Perseverance was the key to continue.”
Mambot’s software is written primarily in Python. “I used Python before now and then to automate tasks around the house,” says Ahmed, “but this is my first major Python project.” Other programming work included the creation of an Android app (in Java) which, as well as offering remote control of the robot and arm, acts as a hub for accessing all Mambot’s features.
“I started by adding gamepad control first. Then I thought, why not write an app for it?, so I did. The voice control was particularly challenging. I use Snowboy hotword to issue voice commands. It works great in a quiet environment.”
Everything is handled by a Raspberry Pi 3. “As I kept on adding features, I quickly realised that running everything on a single Pi could be problematic. Enter multithreading.” After running the main Bluetooth routine on the Pi to accept a connection from the Android app, and start video streaming and the web app server, you can easily switch on/off the features you want. “Each feature runs on its own thread. The Pi handles this nicely. For example, you can control Mambot from the app while someone else is controlling it from the gamepad at the same time.”
With the eAccounting integration, Mambot listens for incoming orders and when one is received, it matches it with the job that needs to be carried out. “Say the order is to pick up an item from a warehouse or perform a service like sweeping the floor. Mambot performs the order, updates, and reports back to the system.”
Mambot has another neat trick up its sleeve: using machine learning, it can predict when the next order will arrive. “Before the time comes, Mambot moves to the location where the predicted order is supposed to be carried out.” If it arrives, Mambot performs the task; if not, it learns from this to improve its predictions in the future. “The more orders you send to the system, the more accurate the prediction is.”