Introduction: The BucketBot: a Nano-ITX Based Robot
This is an easy to make mobile robot base. It uses a Nano-ITX computer board, but a Mini-ITX could be used, as well as one of the single board computers like the Raspberry Pi, BeagleBone, or even an Arduino.
The design of this robot was intended to remove the issues with a stack type robot. In this design, you can access all the parts without removing layers. Also, the handle on top with power switches is a key feature for any mobile robot since they tend to run away on you. :-) The "Bucket Bot" name comes from the easy transportation method - it fits right in a 5 gallon bucket!
This robot has simple and low cost construction using plywood and simple home store fasteners and hardware. A newer one using metal and newer components is being developed and will be posted in a few months.
Step 1: Motors and Wheels
The wheels and motor mounts for the Bucket Bot are homemade, and were created before these kinds of parts were more widely available. The next rev of this project will probably use off the shelf parts for this. The following approach worked well, though, and could save some money.
The motors came from Jameco, but they are available in many places like Lynxmotion now too. It uses 12v DC brushed motors, around 200rpm, but you can choose a voltage/speed/power combination to suit your application.
The motor mounting brackets are made from angle aluminum - getting those three motor mount holes lined up was the trickiest part. A cardboard template is useful for that. The aluminum angle was 2"x2", and was cut to 2" wide. These were built for a different robot, but for this one the wheels are under the platform, so they need a 1/8" spacer (made from plastic that was around).
The tires are Dubro R/C airplane wheels, and the center part was drilled out to use a big old 3/4" tap to thread that hole.
Next, use a 3/4" bolt, and drill a hole for the shaft along the length of the bolt from the head in. Getting that straight and centered is key. The higher grade bolts have marks on the head that help find the center, and a drill press was used to make that hole. On the side, a hole was drilled for the set screw. It was tapped with something like a #6 size tap.
Then, you screw the bolt into the wheel and mark where the bolt sticks out the other side of the wheel, remove it, and cut off the bolt with a Dremel tool to remove the excess. The bolt then fits in the wheel, and the set screw holds it on the motor shaft. The friction of the wheel on the big bolt was enough to keep it from slipping.
Step 2: The Base
The main idea with the base was to make all the parts accessible. By having parts mounted vertically, you can use both sides of the vertical board.
The base is 8"x8", and the top is 7"x8". It is made from 1/4" (maybe a bit thinner) plywood. 1/8" polycarbonate was tried, but it seems too flexible - a thicker plastic would work fine. Watch out for Acrylic, though - it tends to crack easily. But, with the wood and brass colored angle brackets, this design has a smidgen of steampunk. :-)
The connection between the base and side is made with simple angle brackets - flat head screws were used to mount them with a washer and lock washer on the wood side. If you place them at the edges of the 7" side, they end up nicely on each side of the battery.
A standard caster was used, with some threaded rods (2" long) to extend it far enough down to match the wheels. Since the wheels are off center, a second caster on the other side was not required.
Step 3: Battery Mounting
To mount the battery, use a piece of aluminum bar and #8 threaded rods to make a clamp. Angle aluminum could work well here too.
Step 4: The Handle and Power Switches
All good robots have a handle for when they take off in an unexpected direction! Having the motor power switch on top helps too.
There are a lot of ways to make a handle - this one was just put together from material in the lab (aka the garage), but it all comes from your favorite home store. This one actually worked out pretty well, and was easy to make.
The main part is some channel aluminum - 3/4" x 1/2" channel. It is 12.5" long - each side is 3" and the top is 6.5". To make the main bends, cut the sides, then fold it. Some holes were drilled in the corners and pop rivets were used to add some extra strength, though that step is probably not required. A nicer grip can be made with some 1" PVC pipe (3.75" long) - if you add that, put the PVC tube on before bending the metal. A couple thin screws can be used to hold it in place if you want it to not rotate as you hold it. Then, for the connection to the wood, remove 1.5" of the center part of the channel, and put the last 0.5" of that in the vice to get those tabs closer together - the 1" of material in between angles nicely then from the handle to the wood.
Drill holes for the power and motor switch on each side of the handle - a step drill makes these big holes much easier to do. Having the switches on top is nice in an emergency, and since this robot uses a 12v battery, lighted automobile switches are a nice and practical touch.
Step 5: Wiring and Electronics Components
The computer board is mounted with the connectors facing up to make it easy to plug in a monitor etc.
For the power interconnections, a 4 row European terminal strip was used - that was enough for both the computer and motor power switches. The computer used a 12v power supply, so it was convenient that the computer and motors used the same voltage. For the battery charging, a microphone plug and socket were used - they seem to work well, and are keyed to prevent connecting them backwards. The battery is a 7 amp hour 12v gel cell. A charger for that battery was modified with the microphone plug.
From the pictures, you can see how the hard disk was mounted. Next to the hard disk is the serial servo control board. In this case, it was one from Parallax, which is supported by RoboRealm, the software used to program this robot. Underneath the platform, a Dimension Engineering Sabertooh 2x5 was used with R/C control coming from the Parallax SSC.
Step 6: The Camera
This robot is using only one sensor - a standard USB Web Camera. The Phillips camera works well since it has good sensitivity in lower light conditions, which helps keep the frame rate up. Many web cams slow down the frame rate in low light since it takes longer to get an image. Another nice feature of the Phillips camera is the 1/4" mount so it can be easily attached. It also allows the camera to be moved even when mounted, so you can aim it down or ahead as needed. Attach it with a 1/4-20 x 2.5" inch screw.
Step 7: Software and OS Startup Notes
I have an older version of Windows (2000) right now on the BucketBot, so just a note here that I set it up to automatically log in the user and start up RoboRealm when it boots up. That way, I can power up the robot without needing a keyboard, mouse, or monitor.
I used the ball tracking demo to test the system and it worked great at home with a blue ball, but not so great at school where the kids all had blue shirts! :-) In retrospect, green is a better color - red is really bad due to skin colors and blue is too soft a color to reliably detect. I don't have that RoboRealm config file now, but the next version of this project will have the full code included.
You can also add a wireless connector (the Nano-ITX has a secondary USB connector), and use remote desktop etc. to manage the machine remotely.
This project was a great step in a sequence from many cardboard visualization models to this one, to the latest one that I will post soon!