Quasimoto

What's new

9/2/02:
Apparently, there is a subroutine in my brain that thinks that any sufficiently small drive train is naturally wanting to become a mini-sumo robot. Therefore, even though neither Pokey or George III are finished, I am building another mini-sumo call Quasimoto. Quasimoto is built around a Tamiya twin-motor gearbox, configured for 203:1 gear reduction. As shipped, the axle width of the gearbox is about 104 mm. I fixed this by shortening the axles by a couple mm each using a grinder. I am using a set of Tamiya hubs, attached to Dave Brown Products 2" Lite Flite foam wheels. The gearbox is less than 100 mm long, but is too long to allow me to fit a wedge on when the gearbox is horizontal. Therefore, I have the gearbox canted at an an angle, keeping most of its weight forward, but allowing room for a wedge. This gives the robot a hunchback appearance, and is the source of its name. I am building a controller board featuring a PIC 16F876 MCU, and a L293D h-bridge. For sensors I am using a pair of Sharp GP2D12 IR range sensors for opponent detection, and a Fairchild QRB1133 IR photoreflector for line detection. For batteries, I will use 4 or 5 AA or AAA batteries (depending on weight) for motor power, and a 9V battery for control power.


9/5/02:
Quasimoto's brain is functional. Click here for schematic. He doesn't know how to do anything yet (I am still doing hardware checkout on his controller board), but the MPU and bootloader are working. I am using Rick Farmer's PicLoader, which is the same bootloader that George III uses. I had to modify the bootloader a bit for my particular configuration; the distribution is set up to watch RTS (I don't have RTS connected on Quasimoto), to run at 5 MHz, and to use the PIC's Watchdog timer. The 5 MHz thing confused me for a while; I set up the code for 9600 baud, but was seeing communications at 38.4 kbaud. This made perfect sense once I realized that running at 20 MHz will cause a 4x decrease in the bit delay times. The Watchdog timer also took a few hours of head scratching before I figured out why I kept ending up in the bootloader instead of my code. For now, I am petting the watchdog in my user code, but I plan to re-burn the bootloader with a version that disables the watchdog.

I found that the version of the Basic compiler that comes with the Mark III is set up to work only with PIC 16F877's. I'm not too fond of Basic, so I don't want to shell out $100 for the full version. For now, I am hand-modifying the *.asm file that the compiler generates to tell MPLab to assemble the code for a 16F876. There isn't much difference except I/O count between the two, so this seems to work. I did decide to blow $100 on a Wiz-C compiler. The CCS compilers seem to be more popular, but seem to require a software update service (at $100/year) to keep up with version changes. The Wiz-C compiler is supposed to be more ANSI compatible, so I will give it a try. I checked the documentation to make sure that I could route the compiler output through MPLab, so I can do whatever hacks are required to make it work with the bootloader.

Next on the agenda is to check out the H-bridge, then hook up the sensors.


9/23/02:

Quasimoto is assembled, in near final form. I have his controller board mounted on a hinge, so I can lift it up to get at the batteries. I haven't tested the Sharp IR ranging sensors yet, but don't anticipate any problems with them. The line sensor is working. The H-bridge is working.

I have two planned changes. During early testing, with the gearbox configured for speed, Quasimoto came to a sudden, abrupt stop in a spot that pushed him down, so tire traction was increased. This caused a couple of teeth to be broken off a couple of the gears. I have a new gearbox on order from Tower Hobbies, and will canibalize it for parts. Second, I noticed that Quasimoto would be easy to flip onto his back if his wedge doesn't get under his opponent. To counter this, I plan to build a "leg" that will normally be off the ground, but will come in contact with the ground if Quasimoto starts tipping up. In conjunction with this, I will build a contact sensor (basically a modified bumper) to detect when Quasimoto is tipping up, so I can have him quickly reverse direction.


10/1/02:

I added a tilt-stopping leg to Quasimoto. I still need to adjust its height a bit so that it allows enough tilt for a bumper-type sensor to detect it.

My main project this last weekend was to write a program to patch the hex output of the Wiz-C/Fed-C compiler so that it works with Rick Farmer's bootloader. I turned out that if I added one line to the bootloader code to clear STATUS before calling the user image, the changes were almost trivial. I did have to decipher the hex file format, but I have dealt with such formats before, so it didn't take too much head-scratching. Happily, Wiz-C uses the same hex format version as the bootloader is expecting, so I just had to remove the start vector and add the user image vector. I wrote the patch program as a Windows Console app, so it fits very nicely into the tools menu of the Wiz-C compiler.


10/7/02:

I got version 1 of Quasimoto's program written in Wiz-C. There is still something about the timing of A/D conversions in the PIC that I don't understand - I had to insert some extra delays to get accurate readings. However, the distance and line sensors are operational. I still need to test and adjust the motion program, and add the tilt sensor.


10/27/02:
I spent some time before the AHRC meeting getting Quasimoto operational. The main problem that I found was that my software functions to set motor direction were operating the wrong motors, causing odd behaviours. I also added some code to reverse the "sweep" direction when contact is lost with an opponent, making re-aquisition more probable. This seems to work reasonably well - it gives Quasimoto kind of a serpentine motion when charging an opponent. I have decided to bring Quasimoto to the CIRC meet in November for his debut.


11/2/02:
I held a little intramural Mini-Sumo contest to see how Quasimoto stacks up against my other robots, and to see if there are any glaring deficiencies in him.

vs. Round Result
Pokey 1 I pushed the wrong button on Pokey, so he didn't start. Quasimoto had some difficulty pushing him because Quasimoto's forhead hit on Pokey, pushing Quasimoto back onto his back leg and taking his weight off from his wheels. I may have to adjust Quasimoto's leg height. I declared the round a "do over".
Pokey 1b Quasimoto managed to tip Pokey over, then pushed him out of the ring. A clear win for Quasimoto.
Pokey 2 Because he lost the previous round, Pokey got to start outside of Quasimoto's line of sight. It did't help him: Quasimoto found him and pushed him out of the ring in a head-to-head pushing match.
Pokey 3 Pretty much a repeat of round 2. Quasimoto wins, 3 to 0.
     
Maginot 1 Maginot wins. I was busy trying to get my camera ready, and didn't really see how Maginot beat Quasimoto
Maginot 2 Quasimoto wins. Maginot's spinning search pattern helps him break loose from Quasimoto's pushing.
Maginot 3 Maginot wins. Repeat of round 2, except that after Maginot spun loose, Quasimoto reached the edge and starting backing up. Meanwhile, Maginot located Quasimoto and starting pushing from behind. Bad news for Quasimoto. Match goes to Maginot, 2 to 1.
     
    I decided to run another match with Maginot so that I could better understand why Maginot was winning.
Maginot 1 Quasimoto pops off Maginot's cane, then pushes him out of the ring.
Maginot 2 Maginot spins loose from Quasimoto, then gets behind him and pushes him out of the ring.
Maginot 3 Maginot spins loose, but Quasimoto re-aquires and pushes him out of the ring. Match goes to Quasimoto, 2 to 1.
     
George III 1 Quasimoto's wedge tilted George back on his AA battery pack, pulling his wheels off the ground. Round 1 to Quasimoto.
George III 2 Quasimoto wins a hard-fought match. George started out advantaged, since he could see Quasimoto and Quasimoto couldn't see him. However, Quasimoto broke loose from George (doing his target aquisition spin) and found himself on the edge of the ring. George re-aquired while Quasimoto was backing away from the edge, but wasn't able to push Quasimoto out of the ring. Quasimoto breaks loose again, aquires George, and pushes him out of the ring.
George III 3 Quasimoto wins a straight pushing match. Match goes to Quasimoto, 3 to 0.
     
    I put George's AAA battery pack back on to give him more ground clearance.
George III 1 Quasimoto gets his wedge beneath George's, but George initially pushes Quasimoto back nearly out of the ring. At the last minute, Quasimoto's rear leg gets a grip and stops the motion. Either Quasimoto's wheels now get a better grip, or George decides that Quasimoto's wedge is the edge of the ring, because Quasimoto reverses the direction of travel and pushes George out of the ring. Round 1 to Quasimoto.
George III 2 Repeat of round 1. Round 2 to Quasimoto.
George III 3 This time Quasimoto starts out pushing George back, and never lets up. Match to Quasimoto, 3 to 0.

The area where Quasimoto looks weakest is in getting away from the edge of the ring. He needs to go faster in reverse, and stay in reverse a bit longer. A second problem area is wheel traction. If Quasimoto otherwise does ok at the CIRC meet, I will follow Dave Hylands' recipe for stickier tires for Quasimoto.

Maginot did much better than I expected. However, he showed no promise at all for beating Delta Force, so he is likely to be disassembled for parts for a line follower.

George shows some promise when he has a higher ground clearance. I could either pull off the velcro to gain about a 1/16 inch, or stay with AAA batteries and add weight elsewhere. Stickier tires would help too.


Pokey and Quasimoto go head to head

Quasimoto pushes Pokey out of ring.

Maginot spinning loose from Quasimoto

Maginot goes down

Quasimoto pushing George III around

That's all for George III

11/10/02:

I just got back from the CIRC Kilobot/Sumo competition. Quasimoto took 3rd in the mini-sumo class. This isn't bad, but since there were only about 5 mini-sumo robots, neither is it anything to particularly crow about. Quasimoto won his first match against Altoid-bot, an entry by a group of students from Purdue University. Altoid-bot is a clever robot, with an interesting strategy (slip a flat surface under the opponent, then move the surface off the side of the ring), but just doesn't have the strength and/or traction to get the job done.

Quasimoto's second match was against Orthos. Orthos won the first round, then Quasimoto's 9v battery died leaving him helpless in the second round. Truthfully, it wouldn't have made much differerence - Orthos has more strength and/or traction than Quasimoto, so almost certainly would have won anyway. Orthos resembles George III, but is not a Mark III kit, and has a large scoop mounted on the front. Orthos starts on his back to meet the size requirments. Orthos uses silocone caulking for a tire surface.

Quasimoto's third match was against Jim Frye's mini-sumo robot, whose name I cannot recall at the moment. This was another "cube" like George, but had rubber tire surface that was about 1 cm wide which appeared to be custom made. I had replaced Quasimoto's 9v battery, but he was out-pushed by Jim's robot.

It looks like I will have to work on better tires for the Robot Rally in Febuary. I don't know if I will go with Quasimoto or George - it depends on who is running better when the time comes.


03/05/03:
I entered Quasimoto in the mini-sumo contest at AHRC Robot Rally in Atlanta. He won his first two matches against "Bit" and "Front&Back", partially because "Bit" was malfunctioning during his first match. However, then Quasimoto came up against "Delta Force", the reigning champion. During that match, Quasimoto fell off the platform that the sumo ring was placed on, and broke off his back leg. Without his back leg, Quasimoto has a tendency to get flipped up on his back, as one of the Quasimoto vs. Bit photos on the AHRC web site shows. Had he been in full working order, I think Quasimoto could have beaten Bit in their second match, but as it was, Bit managed to push Quasmoto, who was on his back at the time, off the platform (again), at which time Quasimoto's wedge broke off. This injury was fatal, and Quasimoto conceded the match.

Quasimoto took third place out of six entries, which isn't too bad considering he ending the competition in several pieces. The main lesson to be learned here is that I need to be quicker about catching my robots as they get pushed out of the ring. Quasimoto probably should be stronger, but I don't design any of the robots to withstand repeated 12" to 18" falls to a hard surface.

back

Last Modified 04/14/03.