Seeker //x Autonomous Mini Sumo

After five years of competition with Seeker 2, I finally decided this year to build a new one. I've been toying on and off with designs and ideas for a few years now, but I finally decided to take the plunge and build a brand new mini sumo.

I've started working on the CAD design, as I do with all my robots before I build them. Seeker //x is going to be very low, very fast, and very aggressive.

Seeker 2 is 1.5" high, and Seeker //x is going to measure in at just about 1" high. The reason it will be lower is mainly due to the smaller diameter motors I am going to use.

One interesting thing I have noticed about this design - its almost exactly a 1/2 scale replica of Seeker 3, my 3 kg sumo I built last year. One nice thing about building this one is, I have a CNC mill now, so all the panels will be cut precisely and directly from this CAD model.

The wheels will be machined from solid 1" aluminum rod (the same way Seeker 3's wheels were machined from 2" rod). Most of the parts are going to be either aluminum or brass.

Initial (tentative) specifications:

I figure this will go at least twice as fast as Seeker 2, and (at least according to the gearing and tire diameter) up to three times faster. This thing is going to be a beast to keep inside the ring, but its going to push like a demon once it starts.

One other nice thing - with Seeker 2, the microcontroller (a PIC 16F876) was limited to 8KB of FLASH, and my mini-sumo controller code filled most of that. The ATmega128 has 128KB of FLASH, so I have tons of space to try some more interesting algorithms...

I also picked up all the raw material I'm going to need to build this robot. The long aluminum plate is 1/16" thick, and the base and sides will be cut from it. The long brass plate under the material (the one Seeker 2 is sitting on) is about 0.040" thick, and will form the lid. The two long and thin strips to the left of that are 0.016" thick stainless steel, for the scoop.

Piled on top are two pieces of 1" diameter brass and aluminum rod, for the wheels and motor mounts. I'm going to make them from aluminum to start with, but if I need more weight I can make versions from brass. There are also a couple 1/4" wide bars from aluminum and brass, which are supports for the circuit board and the front. Finally there's a piece of 3/8" brass rod, which I will be machining to form a lid hold-down.

My motors finally came, and this is a picture that shows the motors, the two h-bridge boards, the four Sharp IR sensors, plus a 5 volt switching regulator from Dimension Engineering. I also included a ruler for scale, Seeker 2 with the lid off, and a 1:1 printout of the circuit board design.

Things are starting to come together. I can't wait to start actually building this thing, and see how it works.


Construction Begins - December 1, 2007

November 18, 2009 - Here it is, finished... The software is written (at least, a first pass at it).

The competition is in three days... I'll post results and hopefully video here.
November 9, 2009 - Here's a picture of Seeker 2x next to Seeker 2. You can see the significant difference in height - Seeker 2 is 1.5" high, and Seeker 2x is only 1" high.

I had to re-machine the side panels, because my CNC mill was messed up when I machined the panels - the lead nut was worn, and it didn't put one of the holes in exactly the right spot. I had been putting that off, and finally decided to just print them. Of course, from the printer they come out exactly perfect...

The right tire is in the mold as I type this, so by tomorrow afternoon, all that is left is to attach the front scoop, paint it, and finish the code.
November 7, 2009 - So, here it is, almost done...

Left to do:
  • Right tire molding
  • Front Scoop
  • Paint (flat black, of course)
That's it! After that, its all software... The CNRG is in two weeks, and I think I might just make it...
November 2, 2009 - As you can see, the tire came out of the mold beautifully. The urethane I am using is a 40-durometer, so these tires will be a tiny bit less sticky than Seeker 2's tires are - it will be interesting to see how that changes things.
Here's a shot with the wheel mounted. The tire is 1.5mm thick, in case you were wondering...
November 1, 2009 - So, its been a year since I did any real work on Seeker 2x. I decided that since the 2009 robot games are in three weeks, I had better get my butt in gear and finally finish it. Here's what is left to do:
  1. Print the lid, and the front lid mount (ProxDot sensor will be attached to this mount)
  2. mold the tires (picture at left is the first tire in the mold)
  3. machine and mount the front scoop
  4. paint it
  5. finish the software
October 26, 2008 - I remachined the left motor mount (the old one was 1mm too short), and also did the right motor mount. Here it is with both motors mounted, and with both wheels mounted. The motors are wired up and working properly.

Next up is a new pair of side panels, and the tire mold.

October 9, 2008 - So I spend a few hours last night machining wheel #2. I have to kick things into high gear now - time is running out, and the games are next month. I've got about six weeks to get everything finished, so expect a lot more updates here, a lot more often.

Next up - motor mounts, tire molds

September 10, 2008 - So I learned the hard way that you can't cut the top off of the power switches I'm using on Seeker 2x. It turns out they are hollow, and contain a spring and a plunger to maintain tension against the switch contacts inside.

I was trying to cut them off so they don't stick too far below the bottom plate. Currently, they stick out about 3.5mm, and they need to stick out no more than 1mm. So, I ordered a couple new switches from Digikey, which have a lower switch, and I'm going to change how they are mounted, so they end up in the right place without needing surgery.

September 6, 2008 - I re-machined the rear support bar today. I had to do this because the holes I originally drilled for the motor driver boards to mount were both too large (#4-40) and slightly out of place.

The new bar has #2-56 holes tapped for the motor driver board mounts, and nylon machine screws holding them in place.

The three lines on the LED are what I am using to represent the "pause" state, after I press the red button on the handheld remote. It gives me a visual indication that the robot has received the command.

Also in this picture, you can see the motor driver wiring is done. Each board gets a battery plug (the ones plugged in), and a motor plug (currently hanging out). They also each have a six-pin control plug, which provides both the PWM signals for controlling the motors and the analog feedback from the motor driver to the microcontroller.

September 4, 2008 - Here's the remote kill switch, ready to roll. I had a simple PCB made up, with an ATmega168 on it. The AVR sends out a 38 kHz modulated 1200 baud serial signal through the two IR LEDs.

The two AA batteries are switched up to 3.3 volts using an LVBoost from Dimension Engineering.

And yes, I forgot to include a power switch. I will either hack something together, or just remove the batteries when I want to power it down.

On the outside, the two push-button switches stick out through holes in the front of the case. In between the two buttons is a heartbeat LED, to tell me the remote is running.

And, I have the receive side integrated into the software already. When it gets a RED_BUTTON signal, the mini-sumo switches into a pause state. If you push the green button, it switches back to the state it was in before the red button was pressed.

August 18, 2008 - Just in case you were thinking this whole thing is fake, here's a picture (with no flash) showing the 7-segment LED displaying the current battery level. The levels are 0-9, with 9 being anything over 8.2 volts, and 0 being anything under 6.4 volts. During a match, when you push the start button, the LED counts down seconds from 5 to zero...

The battery, voltage regulator, and power switches are all mounted in the space under the main board. There's not a lot of space under there, but it all fits.

August 17, 2008 - Wow, its been a while since I updated here. I've been really busy with a lot of things, but I have done some work here and there on Seeker 2x. I've got the debug menu up and running over the serial link, and I can test the motors, range finders, and edge sensors using it.

Here's the green board pretty much finished, and mounted in the chassis.

Here's a rear quarter view, with one of the motor driver boards squeezed in place.

Fitting all the wires in place is going to be one of the toughest things about putting this mini-sumo together.

Jan 25, 2008 - After a lot of changes and redesign, I got the new (final) boards for Seeker 2x. I have to say, I'm pretty much impressed again by how nice the green boards with silkscreen and solder mask look...
Jan. 24, 2008 - So, things have slowed down a bit on the mini-sumo front, just because I've been so busy with other robots/electronics. However, after watching Rick Brooks' awesomely fast mini-sumo Exspurt, I decided that I really am going to need a remote kill switch, like he has on that robot. Seeker 2x is going to go like a banshee, and once it gets off the ring, stopping it is going to be a major headache.

However, Seeker 2x is really really small, and everything inside is packed really really tight. There isn't a lot of room for anything extra, never mind a big RF receiver board. I thought about using IR, but didn't know how I could get it to work, given the amount of IR interference from sensors and cameras and such. After talking with my brother for a while, we figured out that you could use an IR receiver like a PNA4602 to receive IR data in a regular serial stream. The receiver removes the 38 kHz modulation from the signal, and produces clean digital 0's and 1's.

On the transmitting side, I decided to use an ATmega168, and send a modulated serial signal (1200 baud) using a bit-banged serial module my brother wrote. This way, I can encode a decently long message (say 10 bytes) that has a very specific pattern, with a checksum, so the chances of getting a false positive signal from anything other than my remote is almost nothing.

The PNA4602 is a standalone component, which requires very little space. I reserved a little space on the main PCB, beside the LED/start button, and it lays down nicely there, with the IR receiver lens pointed vertically.

I could have just made a board with a push-button on it for the kill switch, but I like my robots to look "finished", so I ordered a SERPAC remote enclosure from Digikey for $15. Another $5 got me an IR lense, and I also picked up a pile of tactile push-button switches and some switch covers.

The enclosure is really nice - it has a spot for a couple AA batteries (with a sliding removable cover), and PCB mounts inside. I'm going to use a couple NiMh AA batteries to power this remote. The only issue with that is they only put out 2.4 volts, and I really want to run this at 3.3 volts.

Fortunately, the guys at Dimension Engineering have exactly what I need: the LVBoost. It takes an input of 0.5 to 5 volts, and produces anything from 2.2 to 5 volts as an output. Not bad for $20...

So, I'm going to be putting together a small PCB with an ATmega168, a couple push-buttons, a power switch, and a couple IR LEDs. This will all mount inside the enclosure with the LVBoost, and provide me with a nice, professional looking remote kill switch.

Dec. 25, 2007 - Yeah, I'm working on my mini-sumo on Christmas day - sue me... :-)

This is my prototype PCB, running some test code. I am running a bootloader, and controlling one of the motors through the Pololu h-bridge. The motor current feedback from the board works great, and gives me an excellent sense of the load on the motor.

I am also controlling the 7-segment LED you can see lit up (with the digit 7, upside down). It currently displays a number from 0-9 which represents the battery condition, from fully charged to dangerously low. The digit 7 represents a voltage of between 7.8 and 8.1 volts. At the top of the picture is one of my old 6-cell NiMh battery packs, which I'm using for this prototype work.

All this prototyping work with the printed PCB is basically to validate the hardware design. I write test software to exercise the various sensors and motors the mini-sumo has, to ensure that when I get the printed boards done everything will work without needing any changes.

Dec. 15, 2007 - I decided to take the mockup to the next level, since I really only want to get this PCB done once. So, I copied the outline and hole positions from my PCB program to Rhino, and used a g-code macro and some code I wrote in Squeak to turn it into g-code.

That allowed me to machine a plastic (Delrin) circuit board, complete with all the holes for the through-hole components. I took my paper PCB printout, put it on top, and put all the components on it, and then mounted it to the chassis.

This very clearly allowed me to see that I need to raise the level of the front lid of the robot by about 1.5mm, in order to clear the connectors for the front Sharp IR sensors. So, I will be machining new side panels. Fortunately, since they are done with CNC, its not much in the way of work to cut new panels. I also had to take about 1mm off the width of the PCB to fit properly, which required that I move the two outer connections in about the same distance.

Everything else looks pretty good. I normally don't go to this much trouble, but then again I normally don't get full PCBs done, complete with silkscreen and solder mask, and since it is going to cost close to $100 including shipping, I really only want to get it done once.

Dec. 11, 2007 - One of the things I like to do before I have a board done is to "print" the board to scale on my printer, and put as many components on the mockup as possible. This helps to see how things fit together in three dimensions, and can often point out problems or omissions in my PCB design.

This mockup helped me realize that I didn't have a good way to connect the h-bridge boards with the main board, with respect to the battery and motor connections. I made some changes, added some connectors, and re-printed the mockup, which you see here.

Dec. 10, 2007 - This is the current revision of the circuit board. The cutouts on the sides are for the opponent sensors, which are Sharp GP2Y0D340K mini IR sensors. The large cutouts at the back left and right are for the Pololu motor driver boards. The large chip in the center is a 64-pin ATmega128, running at 16 MHz. There is also a seven-segment LED for displaying various pieces of information, mounted right on the board. All of the sensors for this board are attached directly to the board, which is a big change from Seeker 2.

Stuff added to this board since the last revision: MOSFET for switching off the sensors, voltage divider for measuring the battery with an A/D port, low-profile 220 uF capacitor, and a BlueSMiRF socket for a serial port.

Dec. 5, 2007 - Tonight I finished another important part of this robot - one of the motor mounts. It was machined from the same piece of 1" aluminum rod as the wheel was.

Here I've got the motor sitting inside the mount, where it is supposed to be. The mount is screwed to the base plate using a couple #4-40 flat head machine screws.

It took me about three hours to turn a piece of 1" rod into this motor mount.

Here's a picture showing the wheel mounted to the motor shaft. I think this looks pretty nice, and definitely shows the character of this mini-sumo.

I'll be slowing down the building pace somewhat now, so don't expect updates quite as often as I have in the past week...

Dec. 3, 2007 - I decided to take a couple hours tonight and machine one of the wheels. I have to say, I am really impressed with how it worked out. This image shows the wheel, mounted to the motor. I don't have the motor mount machined yet, but that will be next.

The tire, which will be molded from poly-urethane, will be about 0.050" thick, which will give a total diameter of just about one inch.

Here's a close-up of the wheel. You can see the #4-40 set screw channels I drilled from each side, to hold the wheel to the motor shaft. I will be cutting a small slit in the tire on each side to allow the Allen key to reach the set screws.

The six holes around the rim aren't really necessary, but I think they add a lot in the looks department, and it was fairly trivial drilling them with the CNC mill. The back 3/4 of the wheel is hollow, of course, so the motor and motor mount can fit inside.

This wheel is 23mm outside diameter (0.905"), and 25mm wide (0.984").

Dec. 2, 2007 - I love weekends... This is the base plate, the two side plates, and the front bar (which is 1/4" brass bar). This thing is tiny - much smaller than Seeker 2, even though its only 1/2" shorter.

The two holes in the middle of the top of the brass bar are for mounting the circuit board.

I still need to do a bit of machining on the front bar, mainly to cut indents for the front IR range finder sensors, and to drill a couple more holes for the close-IR front sensor.

Here's a rear-quarter view of the same thing. The four holes at the back of the base plate are to hold the motor mounts in place, which will be machined from aluminum.
Dec. 1, 2007 - Okay, I've now machined the first piece for Seeker 2x, and I have to say its a lot nicer cutting pieces on a CNC mill than with a hacksaw and file (which is how I made all the flat plates for Seeker 2). This first piece is the bottom plate, and it came out very nicely. I use WD-40 as a cutting lubricant for the mill when I'll milling thin aluminum plate like this (1/16" thick).

The large "hole" in the middle is for the battery cover - this mini-sumo is designed so I can replace the battery from the bottom, by undoing two screws. There are also two holes for the edge sensors (the bottom of the picture is the front of the robot), and two smaller holes for the power switches (electrical and motor power).