For the past year, I have been developing the drivetrain portion of what will soon become a multipurpose robotic platform for the common man and researcher alike. My goal for the robot's drivetrain was to combine the same speed, power and simplicity seen in wheeled vehicles with the maneuverability and mobility of more complex humanoid or animal–like systems, allowing for the robot to do more in more places.
To achieve this, I built my robot around four individually–powered treads. Each of these "tread assemblies" has two degrees of freedom, providing the drivetrain not only the ability to climb and tilt, but also to steer like a car might. Every joint is also independently powered, allowing the robot to engage in complex maneuvers and achieve orientations that simpler robots would not be able to.
Almost more important than the features and purpose of the drivetrain is the fact that the robot is almost entirely 3D printed. At Thomas Jefferson (my high school), I'm fortunate to have access to a number of 3D printers, including several Replicator 2's and a Stratasys UPrint. Having an interest in 3D printing as well, I not only thought it would be cool to make a robot that was primarily 3D printed, but I thought it would also help me make my research as relevant and accessible to others as possible (when designs are based on off–the–shelf components and parts you can make at your own home, the body of people who can benefit and improve upon the work grows greatly and the most people are impacted).
Using 3D printing for this work also has a number of other benefits: it's cheaper and faster than alternative means of plastic–part generation; it allows for the creation of complex parts and systems (the only limitations being the strength of the components, their size, and my ability to design them); and it greatly decreases the concept–to–product time, an aspect that is important if you're working with a tight schedule and/or making a lot of parts. The primary downside was that I only had access to the printers at school and would often find them occupied by students using them for purposes that were wasteful and far less "academic" than mine (my research is a pleasant "requirement" for me as a senior at my school). Additionally, our school's heavy use of the printers often results in bugs or breaks that leave them offline for weeks at a time and make getting a print done on the remaining printers even less feasible (and also mean that my teacher and I would have to fix and troubleshoot them).
Overall, though, I decided it would definitely be worth making my work centered around desktop 3D printing, especially given its novelty and recent growth, so I did. The end result is a product I can print as many of as I want and something I can improve upon with hardly any manual labor required (although I will admit that time spent filing parts printed with support material does add up over several prints). The other end result is that I have basically been forced to do as much of my work in CAD as possible. While I would probably do my work in CAD anyway, use of 3D printing makes it a requirement as the parts have to be designed somewhere! That's no reason to complain, though, when I can use that same CAD work to get great renders generated (sorry for the watermark!):
To compare with real life, here are some actual pictures:
In the above picture, the box I carry my robot around in to and from school can be seen. People often ask where they can buy one not realizing it was a work of my own creation. Riders of the Metro the weekend of the 2014 USA Science and Engineering Festival may recognize this box.
The Arduino Leonardo is essentially attached to a shield I made out of perfboard. To control all the motor controllers with PWM, extra pins were needed on the Leonardo. To prevent using a more powerful microcontroller (no need for overkill here, at least not initially), I used an Adafruit PWM expander. This board is pretty convenient. It uses I2C (the SDA, and SCL lines on the newer Arduinos) to provide 16 additional PWM pins for the Arduino to tap into, more than enough for the current setup I have going (I still have four pins left on the Adafruit board and haven't used any PWM pins on the Arduino yet). The only problem with the board was its limited current rating. With the VEX motors having stall currents reaching 5A each and the two onboard VEX batteries being able to supply it, having thick traces for the voltage and ground lines was crucial. This meant extensive DIY circuitry in the form of very compact and thick wiring—only the pictures will do my work justice. There are also terminal blocks that I incorporated to make the battery connections as flexible and robust as possible. The cherry on top is the XBEE radio that allows me to communicate with the Arduino's serial port from my Handuino remote control.
Through-hole rotary encoders that I purchased for use on my robot. The documentation was lacking, so I opened one up to see what made it tick. Turns out it operates like two button switches which work together to produce a variation of gray code (an encoding technique).
More details coming SOON! Stay tuned and email me if you want to know more about a particular subsystem!