Introduction: Robbie - Your Own Customizable Humanoid Assistant!
Ever since Karel Capek released his famous play R.U.R. in 1920, humans around the world have been captivated by the idea of mechanical assistants and companions. Almost a century later, we are getting closer and closer to the much romanticized humanoid helper, but when it really comes down to the common man, are we there yet? The best way to get something done is to do it yourself. Thus the ability to build and operate a robotic helper needs to exist among a common man. Meet Robbie.
Robbie is a relatively cheap (less than $150) yet considerably functional humanoid robotic helper. Standing one and a half feet tall, this loyal assistant can help you accomplish a variety of tasks, from delivering a snack to transporting parts at a hackathon. He runs on a powerful ATMega 2560 processor running at 16 MHz on an Arduino Mega 2560 board. He can also be recharged so that money is saved on power. While Robbie is no Deep Blue or Optimus Prime, he can be built at home in a series of easy steps. And the piece de resistance? Robbie can be modified to serve each individual set of tasks, as his source code is openly available as an modifiable GitHub repository.
Here is a list of Robbie's cool features:
- Voice Recognition Capability
- Bluetooth Compatibility
- SD Card Reader
- Easy to use API for coding
- Low Cost
- Git Integration for Easy Updates
- Can Be Recharged
Why have I built this robot, you may ask. First off, let me introduce myself. I am a 16 year old student in the 11th grade at Dulles High School in Sugar Land, TX. From my readings of science fiction, which began in my 7th grade, I have been incessantly intrigued by the potential of humanity to create bigger, better, and smarter machines. Thus I started a robotics club in my school and was elected President of said club.To address the question, I am deeply appalled by the exorbitant prices demanded by humanoid robots like NAO and DARwIn-OP today. Things must change if we are to realize our imaginations - and they have to change soon. Thus I am entering my creation in the Instructables competitions and into the internet for people around the world to make their move and bring about the pleasures of tomorrow today.
Before we begin, I must issue a few small caveats: the finished product at the end of this Instructable is not completely finished. What I mean is while I provide the basic framework (id est, the hardware details and software simplification), the specific function of this robot is entirely up to you to decide! Not really too much of a bummer, huh? Nevertheless, I will provide a sample code that allows for simple control of the robot. Also, the materials used in construction of this robot would not be considered "A grade," but the point of Robbie's advent is to bring hackable humanoid hardware (+10 for that alliteration) to the masses.
So let's get our feet wet, shall we?
Step 1: A Comprehensive List of Materials
The materials needed to build Robbie can be easily acquired (no laboratory necessary), another aspect of Robbie's genius. Substances used for construction can be found around the household. I used cardboard and firm styrofoam. As far as tools go, all appliances can be purchased at a local hardware store for low prices. The electronics that power Robbie can be purchased on eBay and Amazon, yet again, at affordable cost.
Here is a list of materials:
- Continuous Rotation Servo Motors (2)
- Standard Servo
- Arduino Mega 2560 w/ charger cable
- SEEED Studio SD Card Shield
- SEEED Studio Voice Recognition Module
- Half Breadboard (Solderless)
- 7805 Voltage Regulator
- 7.4 V LiPo battery
- HC06 Bluetooth module
- 470 Ohm Resistor (2)
- 10 uF Capacitor (2)
- 1A Schottky Diode
- SPST switch
- LiPo Battery Charger
- Jumper and Dupont Cable (about 10 each)
- 22 AWG Wire (at least 5 feet)
- RGB LED
- Mini Hot Glue Gun
- Mini Glue Sticks for Hot Glue Gun (2)
- Tires (2)
- Laptop with Arduino IDE and Bluetooth capability
Step 2: Safety Precautions and Preliminary Measures
While Robbie may be a "people's robot," it is always necessary to take precautionary measures when building a robot of any kind. No soldering will be used in this project. However, the hot glue gun can get pretty hot, true to its name. Handle it with care and turn it off every time you are finished with it. Some components may contain hazardous chemicals, so wash your hands thoroughly after a day's hard work in the lab. Always wear safety goggles. I cannot stress this last point enough. The cutting of components may yield unexpected projectile motion of electrical parts. Please do not risk getting components into your eye. After all, the world needs your vision to arrive at tomorrow!
Before I start with the actual instruction, I will explain briefly the layout and minutiae of my presentation. Each page has been named "The ...," depending on what will be presented. A set of numbered instructions are provided on most pages. The pictures will represent a chronological construction that is represented in the text. All of my length measurements are in inches, which may cause some trouble to some people. Sorry, but the numbers worked out a lot easier when I used inches! Nevertheless, you can use the trusty rule of thumb that 2 inches is 5 centimeters. The breadboard connect sockets along rows of 5, as shown in the picture above.
All right now let's get started!
Step 3: The Base
Time to start building! Before any great building is constructed, its foundation must be laid. Hence, we will start at the base of the robot.
- Using scissors, cut out a section of styrofoam 7 inches wide by 6 inches long.
- Attach the double-sided tape to one end of a continuous rotation servo. Take this "sticky servo" and mount it to the surface of the base such that the rear left corner is barely covered up.
- Repeat step number 2 for the second servo, this time mounting it to the rear right.
- Take the LiPo battery and stick it in between the two servos using the double sided tape.
- Turn on the hot glue gun, but keep it in peripheral vision at all times.
- Take two identical blocks of styrofoam (2 inches wide by 1 inch long) and glue them together, stacking them perfectly on top of each other. Glue this stack to the end of the robot opposite to the servos
While it is completely optional, you may want to consider adding a 7 inch wide by 1 inch long block of styrofoam to the end of the servos that is exposed to provide a more structurally sound design.
Also please note that this will be the bottom of the robot and it needs to be turned over before any further construction can begin.
Step 4: The Microcontroller
This is by far the easiest step. Measuring 1 inch from the side of the base with the styrofoam stack, attach the Arduino Mega in its horizontal position using two pieces of double-sided tape. Now the brains of your robot are in place. We can use this as a central design feature when constructing the rest of Robbie's body system.
Step 5: The Circuit
Safety goggles ready! Time to do some wiring, eh? Well, we will need the half breadboard first. To set up this breadboard, place a jumper cable from one row of red plus line to the other. Perform the same action with the rows of blue minus line. Now that this has been completed, let's get to the real circuit!
- Place a 7805 integrated circuit into the board.
- Connect a 10 uF capacitor from lead 1 of the IC to lead 2 and from lead 3 to lead 2.
- Place a diode from lead 3 of the IC to an unoccupied row.
- Connect the end of this diode to a resistor and connect that to an LED.
- Put a switch in near or at the end of the breadboard.
- Wire lead 2 of the IC to ground and do the same for the LED.
- Connect the end of the switch to lead 1 of the IC.
- Cut out a 3 inch long by 2 inch wide piece of styrofoam and mount the breadboard onto it.
- Cut out a semicircular hole of diameter 1.5 inches at the end of the block.
The base of your circuit is now complete - time for the servo arm!
Step 6: The Servo Arm
What is a humanoid without an arm? To attach Robbie's servo arm, you will need some more styrofoam and the standard servo.
- Cut out a two inch wide by 3 inch long piece of styrofoam and at one end cut out a semicircle with a diameter of 1.5 inches. As you can see from the picture, I have made some optional design changes to make the system a little lighter.
- On the side that has not been cut, attach the standard servo using double sided tape. make sure the servo is angled at its 90 degree (midway) position.
- Attach a 4 inch wide by 1 inch long block of styrofoam to the servo's horn.
- Cut out a 4 inch wide by 3 inch long rectangle of cardboard and glue this to the elongated servo arm such that the center of the cardboard and the center of the servo are in alignment.
- Remember to unplug the hot glue gun!
And now the arm of your robot is ready to roll (or should I say pitch <<< PUN ALERT)!
Step 7: The Special Components
Okay, now that we are done with the arm (and terrible puns), we can begin embellishing our circuit with highly functional modules. We will add the speech recognition module, Bluetooth module, and SD Card shield (which, as previously mentioned, is optional, but downright cool). These steps are quite simple and easy to follow - a nice cadence from the tedious previous steps.
- Insert the Bluetooth module into the breadboard. Any location where the rows have not been occupied is fine. Notice how I placed mine in a compact location to save space, however.
- Wire the VCC and GND pins of the module to voltage and ground, respectively.
- Repeat steps 1 and 2, but this time with the voice recognition module.
- Place the SD Card Shield onto the Arduino.
Now your robot is much more functional and can be controlled in three different ways!
Step 8: The Spine
Ask a biology student - the thing that separates the evolved organisms from the archaic ones is the spinal column. Plus, it offers great structural support.
- To make the backbone of the robot, we will be using a 8 inch long reinforced cardboard tube of diameter 1.5 inches. You can cut this out from a longer roll, like one found in a tube of gift wrapper.
- Place this column above the location of the servos, about a half inch behind the mounted Arduino on the robot base and use the glue gun to secure it firmly, once again, handling the hot tool with precaution.
- Remember the styrofoam chunk with the circuit? Yeah we will need that now. Using the glue gun, attach the side with the semicircular hole cut out to the front side of the spine about 3 inches above the base
- Place two thumbtacks slightly higher up the spine and two more thumbtacks on the styrofoam block.
- Using rubber bands, connect the tack attached to the spine to its corresponding tack on the circuit board.
- Use the glue gun to secure the tacks in place, taking care not to malt the styrofoam.
- repeat steps 4-6 for the block with the robot's arm, but this time six inches off the base of the robot.
Now the majority of your robot's functional pieces have been grouped into one large chassis. Time to add the face and finish up our wiring. Don't worry - the robot is closed to being finished.
Step 9: The Face
Of course, what is a human without his face? Now Robbie won't be doing the thinking in his head, but we can still bring out what is arguably the most beautiful part of the human body in Robbie.
- Cut out a 3 inch wide by 3.5 inch long piece of styrofoam.
- Glue this piece at a 75 degree angle to the top of the spine, as seen in the pictures.
- Attach an LED to the surface of the piece and connect the pins to the breadboard (see the next step for more instruction).
- Design the face however you want to! I put an Instructables logo on Robbie's face as I feel that Robbie embodies the sense of ingenuity and practicality exuded by Instructables.
The robot's frame is pretty much finished, at this point. We just need to get some trivial wiring done.
Step 10: The Last of the Wiring
Okay, so in the previous steps I was a little vague about how to go around wiring the robot. Well now, all of it comes together into one solid, functional piece. These next few steps are the final steps required to build Robbie's physique. However, pay attention closely, as these are extremely important and easy to get wrong!
- Take the microphone received with the Voice Recognition module and plug it into the jack on the module. Take the wire that leads to the actual microphone and wrap it around Robbie's spine, securing it with Scotch or electrical tape.
- Connect the TX on the Bluetooth to RX1 on the Arduino and the RX on the Bluetooth to TX1 on the Arduino.
- Repeat step 2 for the speech recognition module, but this time with RX2 and TX2 instead of RX1 and TX1.
- The servos need to be wired. Connect the +V wire of the servos (usually red) to the power lines on the breadboard. The ground wire (usually brown or black) needs to be connected to the ground lines of the breadboard. Last but not least, connect the signal wires (white, yellow, or orange, typically) to the Ardunio pins. The left continuous servo goes on pin 22, the right continuous servo on pin 24, and the standard servo on pin 26.
- Place a resistor going from any unoccupied row to ground on the breadboard.
- Wire the common cathode of the LED to this row occupied by the resistor. The red, green, and blue pins of the RGB LED go to Arduino pins 23,25, and 27, respectively.
- Connect the power line on the breadboard to the Arduino pin labeled VIN and the ground line to the Arduino pin GND.
- This is optional, but place twist-ties around the loose wires to compact the design and make the robot look more organized.
Give yourself a pat on the back! You have successfully finished building Robbie! Now most of the work will be done on the computer.
Step 11: The Code
As I have mentioned previously, Robbie does not come with a set code that performs one function, but rather a framework that makes it much easier to control his actions. This set of software tools can be found on the GitHub project page right here. This code can be downloaded as a .zip file and extracted to any location desired. To upload the code, simply open the Arduino file in the Arduino IDE and connect your computer to the Arduino to program it. Then simply upload the code!
The Git repository can also be initialized as a local one to make edits to the code. If you have the Git software installed, open your terminal and type in "git clone http://github.com/curryninja123/Robbie.git" and press Enter. The code will now be copied to a local repository file. If you wish, you can make edits to the code and individualize Robbie. But the best part about Git integration is if I am to make an update to the code to add functionality to Robbie, you can simply type in "git pull" in your command line (when the directory is changed to Robbie's code files, that is) and ALL the new features will be updated. That's it. No installing new software, no hardware changes, just simplicity and efficiency.
Once you have either cloned the Git repository or extracted the zip, you should be able to see the files inside. To code Robbie, open the Robbie folder and the .ino file in it. Do not code anything but the loop method unless you are completely familiar with the rest of the code. Two example files can also be found in the folder. The README file has information on how to use the code. Simply follow the instructions dictated by the README along with your creativity and then press upload! It's as simple as that!
Step 12: Encore!
If you have reached this point, congratulations, and give yourself a pat on the back! You are almost done. However, you must remember that the entire point of me telling you how to build this robot is for you to progress with it on your own. That's right. The robot is now completely yours. Make it do whatever you want it to do, not verbatim what some random person online tells it to do. If you have noticed, the robot has the ability to communicate via SD card, Bluetooth, and Voice Command. These can help it store the commands that you learned about on the README of the GitHub project page. With these capabilities, there isn't much Robbie can't do! That said, keep looking for updates of the software, as we can still go further!
It is not expected that everything went right. If you have trouble with this robot, please leave a comment or send me an email at firstname.lastname@example.org. I will make sure and fix it as soon as possible! After all, you are the maker of tomorrow!
Thanks to everyone for reading this Instructables and I hope you learned a lot from it :) .