Wow, it’s been altogether too long since I’ve posted. Fortunately, and this is important, I’ve been able to spend a lot of great, quality time with my family. We recently had a great time at the Oregon Beach and at the A.C. Gilbert Children’s Museum since my return from interning at the Robotics Institute at Carnegie Mellon University. (No, really, I was there!) I’d been away from the wife and kid (“kids” including the one due in September!) for about a month, and it was great to be back.
For just a paragraph or two, I’ve gotta spill some philosophy. Even before you have a family, and especially after you start one, hopefully everything you’re doing is for their current or future benefit. There is nothing that can replace the fulfillment of a loving family, and like all great things, it requires preparation. An interesting point of fact that is that Sam Walton, someone who spent his whole life innovating and who founded the largest retail chain in the world Wal-Mart, determined that he failed in life. His last three words, given on his death bed while surrounded by his family that he hardly knew, were “I blew it!”
No one’s perfect, it’s just important to be making progress rather than regress. New goal in life for me: Don’t blow it. I gotta make a little bit more effort in that area, and I’m thinking even just a random act of kindness or two a day for the people I love will help. Now, go to your room and think about it for 10 minutes, then come back and read the rest of my post. ;)
I had an amazing time at the Robotics Institute. That’s me next to Boss, the autonomous Chevy Tahoe that won the DARPA Urban Challenge a few years back. It drove itself, without collision and following all normal traffic rules, through a 60 mile urban obstacle course. It is one of the most famous robots alive. Boss vs Brad: Brad loses. Boss vs Millenium Falcon: I’d love to see that show up on Youtube…
I got to work with a great group of people on a really fun, agriculture related robotic project. I’ll probably share more on that in the future, but it’s not for me to talk about yet ;). Most of the people around me were working on the Google XPrize project, and it was awesome to see that and other jaw-dropping amazing projects in the bay I was in.
I’d like to share a follow up post on how the checker playing robot went. It was pretty fun, albeit stressful. We knew at the outset that the chances of successfully navigating this project was 3,720 to 1, but we decided the risk was worth it. Plus, we figured we could call the support desk to help us get through any ID10T errors.
The robot was based on the new XMega AVR processor. It has quite a few more features than the standard AVR chips, which also made it a bit more difficult to use. I recommend AVR processors highly, but unless you need functionality only provided by the XMega series, I would recommend most beginners stick with AVR chips from the ATMega series. This project, however, needed the higher processing power, the larger RAM, and the higher flexibility of peripheral hardware offered by the XMegas.
I don’t want to repeat too much of the description of the design and process that my lab partners and I went through to do this project – it’s already available on the project website here. You can download the SolidWorks CAD, EagleCAD, C code, and other project files from there.
So it wasn’t quite capable of playing checkers at the end of the term. Our grades took a bit of a hit because of that, too, but it was great to try something new and the reason for this design is as follows: We tried tackling this problem from a user’s point of view, which is something I believe is left out of academic and commercial projects all too often. Who likes to play checkers? Children and old men in the park. Most other robots in the class were gantry or industrial robot arm based and relied on a laptop tether to function, which could never be practical when used by children or the elderly for safety, expense, and ease of use reasons.
Our robot weighed in under a pound and was, at least theoretically, easy to use and setup. It used AA batteries and would be safe for anyone to use, and not expensive to replace if broken.
Now, if only it had worked :D. The robot performs computer vision by reading images in from a UART based camera directly into the RAM of the XMega. The XMega then determines where the checker pieces are at, calculates moves, and then goes out onto the board to execute those moves. We fell just short of what was needed for full functionality in most areas due to lack of time and lack of experience with certain components. As you’ll see in the video, poor motor control and localization was the primary point of failure. Check the project website for a more detailed synopsis of what worked and what didn’t.
In this video, the robot has just captured an image and is moving from the image capture location to the checker board to make a move. All decisions were autonomous, but the bot was stepped through its motions one step at a time and assisted when its localization or movements were out of place.
Search Brad’s Projects:
- LeapPad 2 on Ubuntu/Virtualbox
- FIX: Include error in Eclipse after upgrading GCC
- Life Update and Checkerbot Follow Up
- XBoot – Quick Start Guide (for a sweet XMega bootloader!)
- Checkers? What the … oh … Checkers!
- Servo Control with an XMega
- XMega Solution for Kubuntu
- Hacking Tiny Servos
- Catch up…
- ZephyrEye Rev2: Board Layout in Eagle
- ZephyrEye Rev2: Call for Schematic Reviewers