loading

StorageBot - voice controlled robotic parts finder

FeaturedContest Winner
Picture of 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! 
 
Remove these adsRemove these ads by Signing Up

Step 1: Secret Exposed & Project Outline

Picture of 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
 

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.

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.

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!

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.


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. 

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.

Step 7: Voice Recognition Software

Picture of Voice Recognition Software
vb6_interface.JPG
window1.JPG
window2.JPG
window3.JPG
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.




Step 8: Conclusion

Picture of Conclusion
makerbot_small.JPG
garage_door_belt_small.JPG
x3mill_cnc_small.JPG
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!
1-40 of 89Next »
dttworld (author)  Cameron Norris2 months ago

Sure. Software is a bit outdated. Maybe someone will update it to use the latest tablets and voice recognition engines.

nodoubtman9 months ago

Congratulation! :)

nodoubtman9 months ago

You are amazing man!!!

gfc621 year ago

Danh,

This is fantastic; a great idea and implementation. I'm surprised I didn't see it back when you first published it. Also surprised I never ran into you at the FabLab at CCBC back then.

Any new enhancements to your StorageBot? I liked your idea to convert to a touch-screen interface.

I always thought it would be cool to build a robotic parts sorter that would use machine vision to go through a pile of random hardware and do a series of sorts such as fastener type, diameter, length, material, etc. That would be a great partner to your StorageBot.

Gordon

Hi sorry I'm kind of new to Arduino and I'm just wondering what the extender wires are that work with Arduino wires/where did you get them?
jhunmar1001 year ago

Sir Where did you buy the parts Like gears, pitch, belts and more?

theenginerd2 years ago
what type of arduino did you use? it dosen't seem to be mentioned above is it an arduino uno? or something bigger? Great project I am starting my own version now
Have you recieved the ShopBot yet? It would be great to see some pictures of your setup once its up and running. Your going to have a pretty good shop going with the ShopBot, storageBot and cnc mill!
dttworld (author)  Doug Costlow3 years ago
Hi. Here's a pic of the ShopBot in my garage. The machine is completely installed and all the motors and spindle appear to run properly. There's a 3/4" thick MDF "spoil board" that forms the bed of the CNC and it needs to be leveled by removing a surface layer. This process generates a lot of dust so I am currently installing a dust collection system. After that, next step will be to cut some ABS and aluminum sheets for my home robot. Looks like you're keeping busy with a lot of your own projects. Good luck with your home renovations. This is also on my list of many things I need to complete but thank goodness for Home Depot!
shopbot.jpg
That looks great! I'm just a little jealous. I know about the dust issue, I have been cutting wood with my router and it goes everywhere. I need to add a dust boot and shopvac. Hope to see some great instructables that utilize the shopbot from you. I'm pretty sure this is the most expensive prize they have given away yet, well until the 3d printer next month.

I've got 2 more instructables in the works and should have them up by the end of the month, then it will be only house projects for the summer.
dttworld (author)  Doug Costlow3 years ago
Good luck with your Make It Real entries. If you don't win the Grand prize the 10 UP! 3D printers up for grabs are some pretty great prizes too. I was told my StorageBot entry was eligible for the Make It Real challenge but I thought hard about it and don't plan to enter. My goal of getting the ShopBot was meet and since I already have a MakerBot I don't really need another printer that someone else could benefit from. Yes, the $50K grand prize is also a much better printer but I honestly don't want it enough to pay the income tax on it if won. Also, the great thing about our CNC routers is we can use many different materials and aren't locked into buying the equivalent of expensive "ink" cartridges for the $35k printer (prize includes +$15k of print material). In fact, I would think the UP! printers are better for hobbyist since I believe you can use normal ABS\PLA filament for it. Nevertheless, someone is gonna win that Grand prize and I'm sure they'll be happy about it. Hopefully, it will go to someone who can use it to jump start a business or support a hacker space. I know I'll be using my ShopBot to jump start a business making home robots.
Yeah I'd love to win an up! printer, I don't have a 3d printer yet, but the objet would be awesome too! Your right about the taxes, I hope who ever gets its is able to pay for it. You would basically have to make things to sell with the material you get with it just to pay for the taxes by next year. I'm sure the shopbot is going to cost a pretty penny when the taxes come but starting a business is the right way to go.
So an idea this gives me for a similar system would be to create an LED grid on some 1/8 chip board or similar material and to have the target bins light up. Their would be the advantage of near instant location of target bins. and possibly slightly more inexpensive.

Of course their is a certain appeal and shear coolness factor of the system ejecting the bins for you. Not to mention I love the the new use of a cnc system.

Another idea to upgrade the system would be to add a camera that could snap a picture of an object put on a shelf next to the computer (maybe it looks like a star trek replicator) and than have the computer find the matching parts in the bins, or associated parts. For example you put a 1/4 bolt in the "digitizing" area and the computer finds all 1/4" related hardware. Of course you could add motion activation to the camera with a small delay for automatic detection. Or alternatively a big red glowing button ( like an e-stop button) to the side of the star trek replicator style shelf, labeled "digitize".

I am really impressed with the new use of the cnc ( at least new to me) and see a similar system in the future for my shop ( although most likely with the LED grid). I run a product design, and retail company. Our prototyping lab is always becoming a mess amidst the messy internals of a project, and I need to add a more comprehensive organization system. Once again super awesome! And you've got my vote!
Okay I just noticed the contest is already closed to voting. Sorry for being so slow. Best of luck, if you win I look forward to more cool projects done with your shop bot. I recently got a CNC router, and it is really amazingly useful!
dttworld (author)  pastprimitive3 years ago
Thanks. I got the CNC bug too....

I converted a manual milling machine to CNC and used it to cut the plastic ABS parts in the Instructable. I tried to cut some ABS at the local FabLab but it stunk up the lab too much.

I just finished building a power draw bar for the mill which allows me to easily swap cutting bits with a foot switch. Here's a short video:

very nice! Yeah plastics can make quite the stench when cutting. For my cnc router (it's only a 3' x 3' machine) I actually built a fully sealed enclosure with a a nice strong exhaust system that I installed outside of the shop in a little custom shed. I also sound proofed the box. I can run the exhaust and router at full speed and it's ridiculously quiet. You can have a normal conversation without raising your voice. Which reminds me I need to get an ible up for the enclosure system.

Anyway my point was the exhaust system allows me to cut plastics with zero smell. Not to mention the dust control.

What software are you using to control the cnc draw bar? Also how is it activated? Computer interface, something else? Or is this posted as an ible somewhere that will answer my questions?
dttworld (author)  pastprimitive3 years ago
I have a Dewalt router and I know how loud they can be. That enclosure sounds like a good idea.

I meant to say using a laser cutter on ABS stunk the lab up. Using my mill wasn't bad at all for smell because I can run only up to 2000 rpm.

I use a foot pedal that controls a pneumatic solenoid 12 volt valve. The valve controls the compressed air going to the giant pneumatic cylinder on the top. The cylinder pushing down on some spring washers that releases the tool holder from the collet. This system was based on many other designs described on CNCZone forum.

The tool holders are called TTS from Tormach. It is designed for an R8 spindle common on mills. Routers don't use this type of spindle so a quick change is a bit more difficult. Here are some pics. Hopefully they can be viewed in full resolution.


IMG_2193.jpgIMG_2203.jpg
Hey I just noticed today that you won the shopbot challenge grand prize! That is so awesome, I bet you're loving that tool! I hoped you would win, I thought you really showed a level of creativity and problem solving that was off the scale for a technology that has been around for a while. Great job once again, and I really like the power draw bar.

Anyway really happy for you! Good Job! I think you will do great things with the shopbot!
dttworld (author)  pastprimitive3 years ago
Thanks! Should be getting it any day now. I have friends who want to use it before I do. LOL
Yeah when I got my CNC router it was amazing how many friends and family members could come up with a vast array of projects for me to do for them.

Just use your friends as test subjects to get your bearings about the particulars of the machine. And give them a disclaimer that there's a chance for messing up. Good way to make them pay you back, even if it's intangible experience; plus you don't carry the burden of buying test material.

Here's one project I did with my machine.
dttworld (author)  pastprimitive3 years ago
Cool project. Building machines to make widgets and help pay the bills is so rewarding! A fortunate few understand that imagination and resources are really the only limitation.
That is incredible. The voice was fluent, did you have some record it?
dttworld (author)  AdventureS203 years ago
That is one of the default voices that comes with the Microsoft Speech SDK. No recording required. You can actually download the SDK and play around with some of the sample applications (link is in the ible). There are samples for voice recognition and samples for text to speech. In the Windows Control Panel you can also change to different voices under the speech settings.
ehudwill3 years ago
Epic storage! Great job.
bajablue3 years ago
What a BRILLIANT project!!!

Big congrats to you... now please come to my house and build me one? ;-D
canucksgirl3 years ago
Congratulations on the Shop Bot win! - This is a very cool project and deserving of the grand prize. ;)
dttworld (author)  canucksgirl3 years ago
Thanks! Working on another cool Instructable. More to come .....
You're welcome! - I'm following you now, and I look forward to your next creation.
Kryptonite3 years ago
Featured on Hackaday! This is similar to an organising system mentioned in Cory Doctorow's 'Makers' (a definite must-read, though not suggested for under 18's!), where items are RFID tagged which can then be placed ad hoc into the drawer system. Asking for the item returns the position, and also allows for any arrangement of items. I'm amazed that an effective equivalent has been brought to life, and has been brought to Instructables, well done!!
dttworld (author)  Kryptonite3 years ago
Interesting idea. Currently each bin on the StorageBot is labeled with a grid system coordinate. For example: the first bin in the upper left hand corner is labeled A1. If the user pulls out the bin they must put it back in the correct location or the database location is thrown off.

Now imagine each bin has a unique RFID tag and there is an RFID reader attached to the Z carriage. The Z carriage can now sweep past every coordinate location, read the RFID tag, and update the database locations or alert the user if the bin is in the wrong location.
jfarsdale3 years ago
Awsome! and thank you. I have seen large scale part pickers but this is like home size.
What I'd like to see is something like this, but for libraries.
I'm in Seattle, and we have one of the most-utilized library systems in the country, but falling tax revenues. This has meant cut library hours and worse.
So I thought it would be nice if the library had neighborhood pickup boxes for your library items. They'd be like vending machines, but with your books, CDs, DVDs, etc in them. Scan your card, enter your pin, and your hold drops out (you'd get an email through your account telling you when your hold was available.)
?
dttworld (author)  TheRevJester3 years ago
In addition make the StorageBot mobile so it could travel in between the space of 2 book shelves positioned back to back. It could push a book out and a mobile robot on the other side with a basket could catch and deliver the book (after taking the elevator down!)
DizzyNYC3 years ago
Great Project! I'm going to try something similar. Voice with Kinect maybe.
dttworld (author)  DizzyNYC3 years ago
The Kinect does have a nice microphone array that picks up voice better than a single microphone.
alisonb3 years ago
This is fantastic, would have had my vote had I seen it earlier.
dttworld (author) 3 years ago
Here's a video of my live demo on Adafruit Industries Show and Tell. It starts at time 18:48. Cheers .....



edfel013 years ago
awesome instructable
Uptonb3 years ago
Congrats on being a finalist, and good luck!
diten3 years ago
I want to thank you.

(First of all, my apologies, my english isn't very good).

I'm about to start building my own workshop (well, not me, people that knows about bricks and that sort of stuff) and I was puzzling my mind on how I can resolve some similar system.
Your idea was far better and simpler, I always apreciate that, KISS.

My plan was to do some kind of arm, that would be flexible enough to diferent box sizes and positions, but this scheme is as flexible, and much easier.

Again, thanks, I hope you win the ShopBot challenge, regreatably, I got here too late to cast my vote.

1-40 of 89Next »