Checkers? What the … oh … Checkers!
In case you’ve noticed, my last few posts have not been about the ZephyrEye. Not to fear – ZephyrEye is alive and well! Boards should be readily available soon. So for everyone out there interested in hacking together some Battlefront radar screens with your paintball/laser tag buddies, it is coming shortly. Of course, if you can’t wait, feel free to grab the schematics and spin your own PCB ;)
So what the heck have I been posting about? As I mentioned previously, I’m taking a Mechatronics course where we have to build a checker playing robot. Here’s a conceptual animation for the design that my team and I came up with:
I used Blender3D to animate this video. I’ve found with several of my robotics projects that most people get confused when I try to describe it. By making a rough 3D sketch and animating the intended functionality, I’ve been able to talk with people much more effectively and get faster and better feedback about what will or won’t work. It also helps me get several jumbled and mixed together concepts in my head down to a single, better defined concept. If you’re planning on doing robotics, especially if you’re working on it from an electronics point of view, I’d highly recommend learning a 3D sketching system. But I digress…
So this checker playing robot needs to be able to play checkers completely autonomously. Most teams used either a stationary robotic arm or gantry style approach. I’ve never been a big fan of either, in fact, I’m pretty enamored with the concept of small autonomous mobile robots. A big reason for this is the ability to quickly apply swarm concepts to these robots if you build a few up, which is something I always toy around with in the back of my head but never do.
Here’s some of the primary system components and a simple description of each of them:
- XMega256: Pretty powerful little chip. I both appreciate this chip and its potential, and at the same time can’t believe how long the errata list is. It’s pretty bad, but fortunately I haven’t run into too much trouble yet. I’ll be using this for all of the checker-playing AI, computer vision, and localization tasks. Yep, you heard me: computer vision on an AVR!
- C328: OK, so the computer vision isn’t as hard as it could be – the COMedia C328 is a pretty easy to use (relatively speaking) UART camera. The datasheet sucks, and it looks like it’s being discontinued. I’m sure other similar parts will crop up soon, though. I’ve been reading in raw 565 RGB images into the XMega RAM and finding color blobs with it. I can also transmit a JPEG to a computer via XBee.
- XBee: I use these for just about everything. I usually write up a debug interface between the computer terminal and the robot so I can debug very quickly, and portably – it’s just as easy to debug and control from my desktop as it is my laptop, making presentations a lot easier.
- Servos: We went with servos for motor control. As my other posts have alluded, I’m using some hacked for continuous rotation, and instead of controlling position I’m controlling their speed with a standard servo signal. To maintain balance (I didn’t want to go down the inverted pendulum road…), the bot also has a servo with a “propeller” mounted in front. The propeller slides over checkers as the bot goes forward and backwards, but rotates when the bot turns to avoid strafing the board and moving checker pieces all over the place.
- IR Sensors: There’s a bank of 6 IR emitter/detector pairs on the front of the bot. These are used to detect where the bot is at on the checkerboard. By monitoring the difference between when a left and IR detectors hit a checker square, you can also correct and maintain orientation so you don’t knock checkers all over the board.
- Odometer Sensors: More IR sensors, this time the QRE1113 reflectance sensors. These sensors monitor a band of alternating light/dark colors on the inside of the wheel, so every time the wheel moves a certain distance, the XMega gets a “tick” that’s worth a certain distance.
- Chassis: A benefit of being in school, I have access to 3D printers that can take certain CAD files and actually “print” 3D objects in ABS plastic. We used this for the chassis, which put all of our servo mounts, sensor mounts, and other typically difficult-to-make-precise-on-prototype features a lot more accurate. It cost about $30 – not bad for what we get.
That’s the general idea. Here’s a picture of where it’s at right now:
Here’s hoping that I get it done in time! I don’t think it’ll get done in 12 parsecs, but that’s a measurement of space and not time anyway …