Software apps and online services
Walaarm is a robotic arm powered by Walabot. Walaarm can be controlled by voice command using Amazon Alexa. It can pick an object automatically from any location within its range, Walabot helps it to find the location of the object. Walabot is working as an eye for the arm.
The logic behind it is very simple. A Raspberry Pi is working as the main controlling unit for the robotic arm. A Walabot is connected to the raspberry pi which calculate the position of any object within its range and sent the location information to Raspberry Pi. An Arduino controlled robotic arm is also connected to raspberry pi through USB port.
A custom Alexa skill was developed to control the arm. When user ask Alexa like "Alexa, ask Walaarm to pick the object," Alexa sends a MQTT message to raspberry pi. Raspberry pi then ask walabot for the location of the object and after getting the location information it sends the location to Arduino using serial protocol. Arduino drives the motors of the arm accordingly to pick the object from the specific location.
The Alexa skill 'Walaarm' is live at the store (Skill ID: amzn1.ask.skill.3afea6bd-1769-4dfb-83d8-fd3cccb76a05)
For the demonstration I used an open source 3D-printed small size robotic arm designed by bentommye. The arm is very small and inexpensive and only required five 9g micro servo. The design is available here.
As this is a very small size robotic arm and not very flexible I wrote an Arduino sketch to move the arm in four specific location only. So the arm can pick an object from four fixed locations and each location can be identified by Walabot. This is a proof of concept project and practically an object from any random location within the range can be picked using a more flexible and accurate robotic arm because Walabot can locate an object very precisely within it's range.
For interfacing Walabot with Raspberry Pi, Walabot official SDK for Raspberry Pi was used. The program was developed using Python. The complete Python program is attached in the code section. For receiving MQTT message paho-mqtt client module for Python was used. Python serial module was used to transmit data to Arduino Nano board.
JSON file for the Alexa skill is also attached to the code section. I am assuming you have some previous experience on developing custom Alexa skill. If not read the tutorial https://developer.amazon.com/alexa-skills-kit/alexa-skill-quick-start-tutorial.
If you don't like to build your own skill you can used my published skill Walaarm. Just search for walaarm or walabot from Alexa skills store and enable the skill. No account linking will be required.
After enabling the skill, launch the skill by asking
Alexa, open wala arm.
Then ask Alexa for help by the word
Alexa will speak a unique topic to which you should subscribe to receive command from AWS Lambda. Note down the topic and use it in the python code for Raspberry Pi provided in code section. The topic will start as:
First three word is common for all but after that Alexa will spell 10 characters from your unique user id which will be unique for you. Unique topic mean that only you will receive your command.
For the connection of the motors with Arduino please see the schematic.