You are on page 1of 20

Food

Living

Outside

Play

Technology

Workshop

StorageBot - voice controlled robotic parts finder


by dttworld on February 26, 2012 Table of Contents StorageBot - voice controlled robotic parts finder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Intro: StorageBot - voice controlled robotic parts finder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Step 1: Secret Exposed & Project Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Step 2: Autodesk 123D & Pine Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Step 3: Building the x-axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Step 4: Building the z-axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 2 3 5 5 8 8

File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Step 5: Building the y-axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Step 6: Building the Electronics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Step 7: Voice Recognition Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 File Downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Step 8: Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Intro: StorageBot - voice controlled robotic parts finder


Video

Introduction I created the StorageBot to help solve a problem experienced by most Makers. After many years of accumulating thousands of parts stored in storage bins, I began to go crazy looking for parts scattered between so many of these bins. The hardest parts to find were always those rare miscellaneous parts that were thrown somewhere into a "junk" bin. StorageBot solves the location problem by listening to my voice commands, processing the location of parts from a master database and then delivering the matching bins in a manner that only a robot can do! StorageBot does have a bigger picture when it comes to purpose. I explain in my video that it's not about building a StorageBot that's important, but rather it's the skills we can learn from such projects that help to enrich our knowledge and inspire us to build the next great thing or start the next cool business. In this Instructable you'll gain insights into the electronics, mechanics and software systems used to create useful projects by utilizing commonly available components such as the Arduino and stepper motors. I've included a bazillion pictures and files. Source code for the Aduino program, source code for the Visual Basic voice recognition software, DXF files for the ABS parts, schematics for the electronics, 3D files drawn in the free Autodesk 123D program, parts list, etc... It's all here! If you find this project inspirational and helpful then don't forget to vote for it in the ShopBot contest. I would use a ShopBot to create the ABS parts, aluminum parts and vaccuum form molds for my next generation home robots. Enjoy!

Step 1: Secret Exposed & Project Outline

The video above gives you a glimpse into the frame and mechanisms required to physically push out each bin based on the voice commands. I'll describe the system by breaking it into the basic components. Here's an outline: - Building the pine frame - Building the x-axis - Building the z-axis - Building the y-axis - Buldling the electronics - Voice recognition software

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. Harbor Freight storage bins with labels 2. horizontal addressable led strips 3. vertical addressable led strips 4. laptop with voice recognition software interfaced to an Arduino controller 5. electronics and power supply stored behind here

Step 2: Autodesk 123D & Pine Frame


The StorageBot frame is constructed out of pine wood. All of the materials can be purchased at Home Depot. The plastic storage bins can be purchased from Harbor Freight. See the attached bill of materials for quantity and pricing. When buying pine wood from Home Depot make sure you spend time selecting the best pieces of straight wood. I found the wood at the top of the stack is typically the most crooked pieces. Some of this lumber may be returned items and obviously people would return the worst of the pieces. Here's a trick to help determine the straight pieces. Place the piece of wood on the flat concrete floor and use the floor as a straight edge. Stay away from wood that is twisted along the length. Long pieces of wood that bow slightly in the middle can be ok if a later process such as screwing into the final framing straightens them out. I modeled the pine frame using the free 3D CAD program from Autodesk called 123D. You can download the program here: http://www.123dapp.com The cool thing about this program is that you model the components of your systems and then connect them together using something called constraints. In 123D constraints are under the Design Intent \ Assemble Icon. With constraints I can tell 123D to take 2 separate pieces of pine wood and align the edges to each other. Another useful feature of 123D is the Browser history along the left side of the screen. With this browser I can easily turn components on and off by just clicking an "eye" icon for each component. I used this feature in order to generate the step by step images for the frame construction. The 123D model of the pine frame is attached below as a zip file. Have fun playing with 123D and be sure to watch the tutorial videos on YouTube.

Image Notes

Image Notes

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

1. Pine frame with bins 2. in Autodesk 123D click on eye icon to turn components on/off

1. construct outer edge using 1x12 pine

Image Notes 1. construct the sill and fascia boards with 1x4, 1x6 wood

Image Notes 1. construct shelves and support using 1x6 and 1x2 wood

Image Notes 1. add the fiber board backing material for the shelves

Image Notes 1. this shelf backing is the key to reducing any frame flexing

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. bin screw mount 2. bin screw mount 3. bin screw mount 4. bin screw mount

Image Notes 1. Bins tested fitted. Paint frame black before final mounting

Image Notes 1. bill of materials

File Downloads

storagebot_pine_frame_rev11.zip (1 MB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'storagebot_pine_frame_rev11.zip']

Step 3: Building the x-axis


X is the axis that moves between the left and right side of the StorageBot. This axis also has to support the weight of the other axes, Z and Y. Like many Makers I sometimes struggle coming up with the best design approach. My first attempt at prototyping the X axis was unsuccessful due to binding issues. When building any rail system mounted to a wooden frame one has to compensate for wide build tolerances. For example: the wood isn't always straight, there may be warpage with temperature and humidity, cut lengths are slightly different, etc. The final solution I came up with was inspired by a rail system that was already used in my house. It so happens I have pocket doors and the rail system used on those doors can also be adapted to the StorageBot. Pocket door hardware is an inexpensive and simple system for producing linear motion while hanging a lot of weight such as a door (or equivalent on the StorageBot). See the attached pictures on how I adapted this simple system. This is a great example of how being observant to the world around you can provide insights into solving problems.

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. 4 foot rail commonly used on pocket doors 2. nema 23 stepper motor mount for x-axis 3. idler belt pulley used on opposite end of the stepper motor pulley 4. this vertical frame slides along the axis (x) 5. two wood strips act as lower rail guides for a nylon spacer

Image Notes 1. back view of the pine frame

Image Notes 1. 4 foot rail guide originally made for pocket door applications

Image Notes 1. these rollers fit into the pocket door rail 2. pocket door roller

Image Notes

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

1. this vertical structure moves along the x-axis 2. nylon spacer that rides between the lower wood guides of the frame 3. pocket door rollers used to hang the x-axis structure

Image Notes 1. space between two wooden strips used as a lower guide

Image Notes 1. nema23 mount for x-axis 2. x-axis idler pulley mount

Image Notes 1. x-axis drive motor, belt and idler pulley

Image Notes 1. x-axis nema 23 stepper motor mount, stepper motor and pulley

Image Notes 1. x-axis idler pulley mount

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. ABS belt coupler with mounting hole. mates to nylon spacer in next pic Image Notes 1. this nylon spacer fits into the belt coupler hole in prior pic

Image Notes 1. bill of materials

Image Notes 1. nema 23 mount 2. x axis belt coupler mount 3. mounts for x-axis idler pulley 4. cut parts on a small CNC machine (or use laser cutter - see Pololu.com)

File Downloads

X_AXIS_ABS_PARTS1.DXF (66 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'X_AXIS_ABS_PARTS1.DXF']

Step 4: Building the z-axis


When I designed the x-axis I was also thinking about how the z-axis would integrate into the design. It was obvious that the "door frame" being hung from my pocket door rail system would serve as the frame for the z-axis. The z-axis in this case refers to the vertical movement between the bottom and top levels of the StorageBot. I already determined the z-axis would be belt driven and there would be a drive pulley and an idler pulley creating the ends of the belt system. When the belt moved it would have to move a carriage up and down in the vertical direction. The challenge was coming up with a low cost way to guide the z-axis carriage along the vertical direction. There was already a vertical frame made out of wood so I wanted to use that as a guide. Using wood as a linear guide can be tricky due to sticking from friction. I finally came up with a solution based on some past tinkering with a bin full of spacers. Once again, curiosity paid off. In the attached pictures you'll see how I used two different sized spacers, one made out of aluminum and one made out of nylon to form a low cost roller guide. Who ever knew playing with a bin full of spacers and noticing how some fit within others would pay off!

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. nema 17 z-axis stepper motor mount 2. z-axis carriage 3. z-axis idler pulley mount

Image Notes 1. carriage wraps around this frame with nylon rollers for vertical contraint

Image Notes 1. nema 17 motor with ABS mount 2. belt system 3. z-axis carriage 4. y-axis rack and pinion

Image Notes 1. z-axis frame with stepper motor at top, carriage in middle & bottom idler

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. z-axis idler pulley mount Image Notes 1. z-axis belt coupler with hole for mounting into carriage spacer

Image Notes 1. nylon bearing assembly Image Notes 1. z-axis carriage with spacers

Image Notes

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

1. nylon spacer slipped over the aluminum spacer for roller motion

Image Notes 1. stack 2 nylon spacers to create 1.5 inch span

Image Notes 1. assembly nylon roller Image Notes 1. slotted hole allows for roller position adjustments

Image Notes 1. front z-axis carriage mount 2. back z-axis carriage mount 3. nema 17 stepper motor mount

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

4. z-axis idler pulley mount 5. z-axis belt coupler with carriage mounting hole

File Downloads

Z_AXIS_ABS_PARTS1.DXF (69 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Z_AXIS_ABS_PARTS1.DXF']

Step 5: Building the y-axis


With the design for the X and Z axis finished I had only one more mechanical hurdle, the Y axis! This axis would be the one responsible for pushing out the storage bins (like a finger). Basically the X and Z axis would position some type of "finger" in front of the storage bin that needed to be pushed out. The storage bins are fairly easy to push so I didn't need a big motor. The biggest challenge was the need for about a 3" finger throw and the appropriate compact mechanism. The solution I came up with for the Y-axis was a rack and pinion system. The rack is essentially a toothed rectangular bar that is driven my a toothed circular "pinion" gear connected to a hobby servo motor. By picking the length of the rack and the number of teeth on the circular pinion gear I could now control the throw distance of the "finger". A rack and pinion system is another common way to convert circular motion to linear motion. In fact, it is used widely in the ShopBot system. See the attached pictures for the rack and pinion design. I'm fairly happy with the compactness and adjustability of this design when using different brand servos and different size pinion gears.

Image Notes 1. y-axis rack and pinion system

Image Notes 1. y-axis rack and pinion mounted to z-axis carriage

Image Notes 1. mounting holes for y-axis rack and pinion assembly 2. mounting bolt to z-axis carriage 3. mounting bolt to z-axis carriage Image Notes 1. 32 pitch rack gear 2. rack drive gear mounted to servo horn underneath

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. adjustable bottom rack spacer 2. adjustable top rack spacer

Image Notes 1. rack end acts as a finger for pushing out the storage bins

Image Notes 1. 1/4" 8-32 nylon spacers 2. threaded rods cut to length 3. lock nut, plastic 1/4" clip, 1/4" aluminum spacer

Image Notes 1. upper rack spacer 2. lower rack spacer 3. outer mounts for sandwiching rack gear and rack spacers

File Downloads

Y_AXIS_ABS_PARTS1.DXF (56 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'Y_AXIS_ABS_PARTS1.DXF']

Step 6: Building the Electronics


When designing the electronics I wanted to use as many off-the-shelf parts as possible to ease construction. See the bill of materials for part numbers and suppliers. Once you buy and mount the components the wiring is basically all point to point wiring. There's very minimal soldering. You will need to solder two 10k resistors connected to pins 2 and 3 of the Arduino compatible board. You will also need to solder to extend wires from the stepper and servo motors. The code running on the Arduino basically translates serial commands from the PC computer. These commands are then used to perform the following: - moving the x-axis stepper motor - moving the z-axis stepper motor - moving the y-axis servo motor - reading the x and z axis limit switch - controlling the LED strip Controlling stepper motors are very easy. Each stepper is driven by a driver board. By sending a step and direction signal from the Arduino to the driver board the motor can be made to move forward or reverse by one or more steps.

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

The servo motor for the y-axis is also very easy to drive. The servo actually contains a motor driver board internally. A certain type of digital waveform is sent to the servo to make it move anywhere between the extreme clockwise and counter clockwise positions. Scope captures of this servo waveform are in the attached pictures.

Image Notes 1. bill of materials

Image Notes 1. ATX computer supply 2. addressable LED strip 3. limit switch 4. limit switch 5. y-axis servo motor 6. x-axis stepper 7. z-axis stepper 8. Arduino compatible controller 9. x-axis stepper driver 10. z-axis stepper driver

Image Notes 1. Arduino compatible controller 2. z-axis stepper driver 3. x-axis stepper driver

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. electronics storage 2. ATX power supply

Image Notes 1. z-axis limit switch

Image Notes 1. x-axis limit switch

Image Notes 1. draped wires for snag free movement

Image Notes 1. serial commands

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. easy to use Arduino interface

Image Notes 1. servo motor control signal refreshes every 20ms

Image Notes 1. measuring pulse width for max servo clockwise position 2. 600us pulse width

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. measuring pulse width for max counterclockwise servo position 2. 2.28ms pulse width

File Downloads

shopbot_win_rev6.zip (22 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'shopbot_win_rev6.zip']

Step 7: Voice Recognition Software


The voice recognition software runs on any old computer or laptop running MS Windows. It uses the Microsoft Speech SDK and a custom Visual Basic 6.0 application based on the SDK sample programs. You can download the speech SDK here: http://www.microsoft.com/download/en/details.aspx?id=10121 After installing the SDK be sure to train the speech engine by going to the speech setting under the Windows control panel for more accurate voice recognition. I found the speech recognition doesn't always work that great. I believe the stuff I've seen on the iPhone and Android devices where you can speak more naturally are much better. Nevertheless, the MS SDK is good enough to start experimenting with voice recognition technologies. There are 2 main functions of the application software. One is to handle speech such as voice recognition and text to speech output. The second function is to take the voice commands and search for the associated parts and bin locations within a master database. This master database was originally generated in Microsoft Access. Source code for the program is attached as a zip file. You will need Visual Basic 6.0 to modify and run the application.

Image Notes 1. Visual Basic 6.0

Image Notes 1. old laptop 2. built in MIC 3. speakers 4. USB and audio connections

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. speak these words 2. word history 3. database results

Image Notes 1. test screen sends serial data to the Arduino for debugging

Image Notes 1. parts database storing parts and associated locations

File Downloads

storagebot.zip (27 KB) [NOTE: When saving, if you see .tmp as the file ext, rename it to 'storagebot.zip']

Step 8: Conclusion
I wanted to end by showing examples of how the systems used in the StorageBot are commonly found in many successful products today (ie: ShopBot, MakerBot, garage door openers, CNC conversion kits, etc). I hope the many ideas presented in this instructable inspires you to create the next great products!

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Image Notes 1. ShopBot uses stepper motors too 2. StorageBot z-axis stepper for size comparison 3. rack gear on ShopBot

Image Notes 1. belt drive also used on the MakerBot Thing-O-Matic for linear motion

Image Notes 1. belt drive used on the garage door opener in my mom's house

Image Notes 1. x-axis stepper on my CNC converted milling machine 2. y-axis stepper 3. belt drive for spindle motor

Related Instructables

How-To: Motors by audreyobscura

Test a Stepper Motor without a Multimeter (Photos) by ron.rakesh.mandal

NES Controlled Etch-A-Sketch (video) by alpinedelta

SADbot: the Seasonally Affected Drawing robot by dustynrobots

Tree Climbing Robot by Technochicken

How to Build an Arduino Powered Chess Playing Robot by mJusticz

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

Comments
2 comments

Add Comment
Feb 27, 2012. 9:02 AM REPLY

Orangutanlibrarian says:
I love the idea and the video was great. I just wanted to know about how much did it cost and how long did it take to build? Keep up the excellent work.

dttworld says:

Feb 27, 2012. 12:25 PM REPLY Thanks. Two months plus one allnighter to design, build and document. You can find detailed parts list with pricing in the uploaded images. Basically: pine frame and bins = $260, misc motion components = $155, electronics = $300. I would say this is comparable in pricing and complexity to a lot of the build a CNC machine based Instructables.

http://www.instructables.com/id/StorageBot-voice-controlled-robotic-parts-finder/

You might also like