I've recently been working on a collaborative project with the intent of building a partially autonomous robot with a wholly original chassis. Unfortunately, my printer is tiny and low quality. Fortunately, every printed part is within 100mm by 100mm. Another requirement was that it be cheap, mostly because I'm currently broke. In any case, the rover uses inexpensive gearboxes and hobby batteries. The chassis itself can be built for under $30, not including batteries and electronics. The chassis is built to be modular to some extent with the ability to continuously stack platforms. That said, the rover is still in the prototyping stage. I thought I'd share it anyway with the hopes that someone will be able to use it as a platform from which to build their own robot.
Step 1: Cocept
The robot is loosely based off of the Mars rover. The idea is that each motor move independently of the others. As the rover rolls over obstacles the back two wheels rotate and the furthest back wheel is pushed against the obstacle, increasing friction. The main body rotates as the legs rotate, remaining at an angle between that of each leg. Essentially, the body remains mostly level without any of the fancy electronics required for self-leveling.
Step 2: Tools/Materials
- 3D Printer with a build area of about 100mm x 100mm
- Screwdrivers appropriate for whatever screws you choose to use
- A hammer (for some mechanical "persuasion")
- Soldering Iron
- Knives (unless your printer is perfect and you don't have to clean up your prints)
- All three leg components x 2, you'll need to reverse two of them
- At least one plate
- Arduino Motor Driver
- Solid Core Wire
- At Least 3 Standoffs
- Serial Bluetooth Module
- Zip Ties
- At Least 24 M3 Nuts (Locknuts if you have them, otherwise Loctite should be fine)
- 2x M4 16mm
- 2x M4 Locknuts
- 3x M5 25mm
- 3x M5 Locknuts
- 4x M8 38mm
- 4x M8 Locknuts
- 12x M3 30mm
- 12x M3 14mm
- 6x Gearboxes (just search "Arduino motors," there's no particular name for these)
8x 22mm Outside Diameter, 8mm Inner Diameter, 7mm Height bearing
6x 4mm Inner Diameter, 10mm outer Diameter, 4mm height bearing
Step 3: Stick Stuff Together
Follow the pictures. Here's the link to the model: "http://a360.co/2k5uksh". The .stl files are also included.
Step 4: Solder
There should be very little soldering to do. The motors are soldered in parallel, this means that the positive wire of each motor on one side is soldered to every other positive wire on that side. The same goes for the negative wire. Since the motors are unmarked, just be sure that all the wires from the same side of the motor are soldered together. Try not to burn yourself, that would be bad... for hopefully obvious reasons.
Step 5: Electronics
This may be a bit wordy but I'll try to keep it brief. The code included below is made to work with what I understand is the official Arduino Motor Shield. The code does allow for an autonomous mode and can run a servo off of pin 10 (but not while using ultrasonic sensors). Autonomous mode serves only to avoid obstacles using ultrasonic sensors. Said ultrasonic sensors should be the typical four pin ping sensors that looks vaguely like smiley faces. Pins 7 and 10 are linked to the same sensors, with pin 7 as the speaker and pin 10 as the mic. Pin 6 and 4 are linked to the other sensor as speaker and mic, respectively. Rx on the Bluetooth module (they should all be fairly similar) plugs into Tx on the Arduino and Tx on the module plugs into Rx on the module. The motor pins should be fairly self explanatory (they're labelled). The battery I'm using is a 4000 25c Zippy Compact lithium ion but anything similar should work. You may notice the code looks a tad strange. The code was written primarily by my collaborator but I edited it somewhat. He chose some weird labels for things (who calls the speed pin SPEEED) but some stuff is labelled. In any case, the code is still firmly in the development stage and probably will for some time. Still, the code works. If anyone starts messing with it and is confused please leave your questions in the comments, I'll be happy to answer them as promptly as possible.
Step 6: Bluetooth
The rover is meant to operate fully autonomously but for now it is largely Bluetooth controlled. You'll need some form of serial Bluetooth controller, which one isn't very important so long as it can send a steady pulse of letters. WASD controls direction. Pulse any of these for any length of time and the robot will move/turn in that direction. E sets the speed (or SPEED, as the case may be) to full and Q brings it to nothing. O and L rotates the servo 15 degrees left and right, respectively. Autonomous mode should turn on as soon as the Bluetooth signal is lost.
Step 7: Last Thoughts
The rover has one fatal flaw (plenty of flaws, but this one's deadly): it doesn't function in environments with higher friction. Essentially, the two wheels will flip up. On a hardwood floor, the robot works perfectly, same on concrete. However, on dirt or carpet, the wheel flips and the robot goes nowhere. fortunately there's an easy fix, ad some resistance to rotation. I would have added something by now but I'm in a bit of a spring famine right now. Two springs or a piston should be more than enough. If someone implements this, please post it.
Finally, a special thanks to my friend and partner in this. He slogged through most of the grunt work of writing the code. Without his impressive contributions, the rover wouldn't, well... do anything. The design is wholly mine but the code is his.