Friday, September 21, 2012

Drew's Rostock: Print bed and new power supply

After blowing up my old PC power supply, I ordered a 360W, 12V industrial supply off Ebay.  Two days later it arrived and went right into the printer.




It's got a larger footprint than the older one, but still fits in the printer base.

While waiting for the new supply to arrive I tool apart the old one and removed what usable parts from it I could.  I took the entire back plate, with the AC plug, switch, and fan, and mounted it on one side of the printer to give me a convenient power switch and plug.  I took the other fan and aimed it to cool the RAMPS board. Other than the power input, none of this is securely mounted yet - something I'll have to do eventually.




The new power supply doesn't have a secondary 5V output, and I didn't want to run the print head fans and LEDs off the RAMPS board's 5V line, so I threw together a deadbug 5V supply with a 7805 regulator and a few capacitors.  This is mounted to the underside of the upper structural plate, out of the way of the moving parts of the print head.  I'll eventually be installing some more LEDs up there as well to illuminate the entire print area.




The print surface is a standard 200mm heated bed from Lulzbot.  I'm mounting it on springs on each corner so it will have some give if the head crashes into the bed, and to give me a way to fine-adjust the bed level.  The bed is mounted to a plywood plate that is itself attached to the three motor mount blocks at the corners of the printer.  Not shown here is the borosilicate glass plate that goes on top of the bed.

Eventually I intend to put some insulation under and around the print bed to make it a bit easier to keep it at the target temperature, and some LEDs to indicate when the heater is operating.  What I'd really like to do is have a ring of red LEDs around the bed which are on whenever the bed is over a certain temperature, but I suspect that will require me to modify the printer firmware.

Now the print area of the Rostock design isn't actually a perfect match to the square print bed.  The actual physical area the head can move through is a sort of rounded hexagon shape, but it's fairly close to being a circle about nine and a half inches in diameter.  Ideally, the printer should have a circular print bed.  I haven't seen any circular print beds on sale yet, but if the Rostock design becomes popular they might appear.  I might also design and etch my own at some point.  I'll need to find a source for a circular glass print surface too.




The LEDs on the print head are adjusted to illuminate the area directly under the J-head nozzle.  This will help with aligning the head to the center of the print area (though admittedly this is much less of an issue with this design than it was with the Makerbot) and with testing the extruder function.




Everything has been hooked up and electrically tested.  I've run the print head and heated bed up to operating temperature and manually commanded the head to move through its entire operating volume.  The new power supply shows no signs of failure under full load.  It is getting to be a bit of a rat's nest in there, so at some point I'm going to have to work out better wire management and mounting.  At least none of the parts in the base move, so I won't need to make cable chains like I had to for the office Makerbot.

The next step will be to build the pinch-wheel filament drive.  For that, I'll need to print out a few more pieces on the office Makerbot.  Once that is done and my PLA reels arrive, I'll be able to start printing.

Sunday, September 16, 2012

Drew's Rostock: the print head



For my printer's hot end I chose a Mini J-head Mk II, custom-made by hotends.com.  The standard J-head is designed for 3mm filament.  I liked the simplicity and light weight of the J-head, but my printer is intended to use 1.75mm filament, so I custom-ordered a mini J-head instead.  I had been considering an Arcol.hu hot end at first - liked the idea of an all-steel extruder - or possibly a Budaschnozzle, but the Rostock design really calls for a head that's as lightweigt as practical to make full use of the platform.  I won't be able to print the more challenging materials like teflon with this nozzle, but that's not really my aim anyway.

The J-head, like most hot ends, seems to be designed to mount into a slot in a wooden base plate.  Presumably the wood helps insulate the hot end from the plastic structure around it, and is itself sufficiently temperature-resistant to not be damaged by the hot end.  I used a bit of scrap leftover from the Makerbot, drilled and sanded into a mounting plate for the hot end.








Here you can also see the heater resistor held in place with fire putty and the thermistor taped into the other side of the block.







Here I've wrapped insulating wool and Kapton tape around the heater block.  This should make it a bit easier for the heater resistor to keep the hot end at the desired temperature.  I'm not completely sure this is necessary, but it seems to be good practice.

On the triangular black platform, which is normally connected to the six drive rods on the Rostock design, there are three mounting holes at the corner.  These were originally intended for adjustable screws which pressed the three lower end limit switches during the homing procedure.  The latest version of the Rostock software eliminates the need for the bottom end limit switches, so these holes aren't needed for anything.  On the Makerbot, it's hard to see the hot end nozzle when the print head is all the way down against the print bed, as the huge platform which supports the hot end blocks the light.  I'll be putting LEDs in these three holes to illuminate the hot end, to make it easier to align the head in the center of the print bed.




Here you can see the print head installed in the printer, with the three LEDs arranged around the hot end.  You can also see a piece of ducting I printed to go around the J-head.  The hot end is designed to have a continuous airflow across the midsection at all times.  Ideally you want the transition from ambient temperature to plastic-melting heat to be confined to a small area of the hot end barrel.  The transition region has cooling fins machined in it, and a constant airflow is recommended to keep the upper part of the hot end from getting too hot.  The original Rostock printer had a large fan placed next to the printer to blow air through the entire print volume.  I wanted this printer to be stand-alone, and ideally would like to eventually completely enclose it, so that wasn't an option.

There's not much room on the print head to mount a fan, and it's important to keep the weight of the print head as low as practical.  I used three miniature fans - 20mm square - and printed a structure to hold them on the upper part of the print head.  Channels inside the plastic support direct the air downwards, around the J-head, and out onto the print surface.




The fan support structure also holds the Bowden cable clamp and has channels for the hot end heater resistor and thermistor wires.  Power to the fans and LEDs is from the 5V supply lines on the PC power supply I was using for the printer.

Testing of the printer was going well up till now.  I could move the head around under command from Pronterface, and the temperature sensing of the print head seemed to work well.  I set the target temperature of the print head to 100C.  The heater came on, the temperature started to climb, and then my power supply blew up.

I was using an old 350W power supply recycled out of my wife's old PC (She has since moved onto a machine requiring a much larger power supply), using the 12V feed to power the RAMPS board (and through it the motors and heaters) and the 5V feed to power the LEDs and fans.  I knew that PC power supplies typically required a minimum load on the 5V line to be stable, which I thought the fans and LEDs would provide.  What I didn't realize was that cheaper supplies like the one I was using had some shared components in the 5V and 12V switching regulators.  The voltage regulator circuit was designed with the assumption that the load on the 5V and 12V lines would increase roughly proportional to each other, as would typically happen in a computer.  A massive imbalance between the 12V and 5V loads severely stresses the switching regulator.

I had some suspicion of the problem beforehand, though I thought the LEDs and fans would be enough of a load, but I wasn't expecting catastrophic failure.  This type of power supply is supposed to shut off when it detects an improper load.  Instead, something inside blew up and arced over for a few seconds, then the main fuse burned out.  I could probably repair the damage, but I've decided to do what I should have done in the first place, and buy a 12V 30A industrial supply designed specifically for this type of duty.  I'll have to add in a little 5V regulator for the fans and such, but that's no big deal.

Saturday, September 15, 2012

Makerbot Upgrades Part 5

After half a year of happily turning out parts, we started having problems with our Makerbot a few weeks ago.  Parts were refusing to stick properly to the print bed.  At first, it was only a few large prints that gave problems, as the corners of the part would curl up after a few hours of printing.  Printing with a raft, or manually designing tie-down pads on the part, helped and most of the parts were still usable.  Then abruptly the problem became much worse, with any attempt to print anything other than a very small part failing as the part broke completely free from the bed.

When watching a print to try and see what was going wrong, I noticed that the printer was struggling to keep the print bed at the proper temperature.  It took a lot longer than I remembered for it to reach working temperature when starting a print, and then the bed would sometimes drift below its target temperature while printing.

On closer inspection, I noticed massive discoloration on one of the pins of the print bed power cable.




The cable to the print bed is one of the first parts to fail on a Makerbot Thing-O-Matic.  The cable support chain I built earlier protected the cable from snagging or getting pinched in moving printer parts, but it didn't protect the cable from overheating.  The connector used on the print bed is not rated for the current that's being put through it.  Over time, the ground pin on the connector heated up hot enough for long enough and became oxidized and discolored.  Oxidization increases the connector resistance, which increases the heat generated at the connector, so it's a problem that only gets worse over time.

The connector and cable assembly carries both power to the bed heater (and print bed conveyor motor, which I never installed) and the signal from the bed temperature sensor.  The temperature sense lines seemed fine, so I initially set out to replace only the high-power pins and leave the sense lines as they were.  I carefully cut the connectors on both the cable and the bed apart, discarding the oxidized power pins, and then installed a 2 pin power connector we had at the office in its place.



This didn't work quite as well as I hoped - the stress on the remaining pins of the original connector cracked the epoxy holding their pads to the print bed.  Not wanting to risk damaging the bed, I desoldered the remaining half of the connector, soldered on a smaller 3 pin terminal strip from the junk bin, and then epoxied both connectors in place securely.






Wired up everything, powered the printer back up, and tested the ability of the head to hold temperature.





Everything looked OK, so I started a simple print.

It still didn't work right.  The first test print failed, peeling right off the print bed.

On closer inspection I noticed that as the bed moved around, the temperature reading on the GUI would occasionally read '1024'.  A temperature reading of 1024 indicates an open connection somewhere in the temperature sense lines.  I spent some time checking over the cable, trying to determine where the loose connection was.

The control electronics for the Makerbot Thingomatic are located inside the base, such that you have to turn the printer onto its side, unscrew and remove the base plate to get at them.  This was enough of a hassle when trying to trouble-shoot an intermittent electrical connection that I spent an afternoon moving all of the electronics onto the outside side and back of the printer where I could perform continuity checks mid-print.  I managed to do this without having to lengthen any of the cables.





After doing this, I managed to pin down the fault in the temperature sense circuit to the cable itself. Flexing back and forth repeatedly during every print had broken one of the wires in such at way that they still made contact most of the time, but during prints would sometimes open and cause the temperature reading of 1024.  The Makerbot software isn't smart enough to stop printing when it sees this obvious error indication, but simply continues attempting to print as the bed cools off and the printed object breaks free from the bed.



We didn't have any sufficiently flexible three-wire shielded cables on hand, so I simply braided together three pieces of fine wire to make up a new temperature cable assembly.

With the new cable assembly, I find that the printer still has trouble with large objects warping during the print, but smaller objects print fine, especially if printed on rafts.  I think that's as good as this printer is going to get for now.

Drew's Rostock: Overall structural assembly.


The original plan for the printer frame was to use the Makerslide rail itself as the structure for the printer, with wooden plates for the top and bottom only.  As I was building up the drive axis as described in the previous post, I decided to go with a more robust frame that could support itself without the rail.  I didn't trust that I would be able to clamp to the ends of the Makerslide rails securely enough to build a frame that would be solid enough to not shake or deform during printing.

After remodeling our master bedroom closet, I had a pile of 3/4" wooden laminate boards left over.  These became the top and bottom frame plates.  Side of 1/4" plywood and 1" square wooden dowels connect the top and bottom plates and form the structural trays where the Makerslide rails will mount.




There's a 1/4" wooden plate attached to the motor mounts that supports the print bed.  The drive motors, RAMPS board, power supply, and other wiring and parts are all hidden beneath that and the lower structural plate.  Eventually I intend to enclose the sides of the lower compartment to hide all the wiring and other parts.



The printed structural blocks at the top ends of the Makerslide rails hold the idler pulley, and also anchor the top ends of the rails to the upper wooden plate.  These holes were carefully drilled to locate the three rails exactly 120 degrees opposed around the print volume.  The lower end of the rails are secured to the wooden corner plates with 5mm bolts.

At the moment I'm using printed connecting rods.  The Makerbot I'm using to print the parts doesn't have a print area large enough to print an entire rod in one piece, so I printed them in halves joined by a threaded rod in the center.  I may eventually replace these with carbon fiber rods with epoxied-on rod ends.

The still to be built filament drive mechanism will go in the top center of the upper plate.  I'm still not sure if it'll go on the top side or bottom side of the plate - I need to see how much space the Bowden tube needs to coil and uncoil cleanly as the head moves.  The filament reel will be mounted on top of the upper plate.  I'll also probably be mounting LEDs to the underside of the upper plate to illuminate the print area.




Preliminary electrical tests, with everything hooked up and powered.  Still a bit of a mess at the moment, nothing is mounted permanently in the electrical compartment and the upper endstop wires are just sort of draped over the outside of the frame.  It's still enough for me to be able to do the first test of moving the print head.





Looking good so far!  Next step, building up the print head.

Saturday, August 25, 2012

Drew's Rostock: Drive Axis

The Rostock style 3D printer differs from more conventional designs in having three identical drive axis, all moving in the Z direction, which move the print head with a complex 6-bar linkage.  Instead of three independent axis for X, Y, and Z movement, the required movements of the 3 axis in the Rostock design to achieve the desired X/Y/Z position are calculated as needed by the controller. This makes the mechanical design in some ways much simpler - there are still 3 drive axis to build, but they are all identical.  None of the drive motors move, which simplifies wiring, and the actual moving mass is kept very low, which in theory translates to higher print speeds.  The cost comes in the complexity of the 6 bar linkage, with a dozen universal joints, and a greater overhead in software.

The standard Rostock design uses 6 smooth rods and linear bearing slides for the three drive axis.  What I'm building is a bit different, using Makerslide rail and carriages riding on V-groove bearings instead.  This is mostly due to cost and availability of materials.  I found a pile of roller bearings cheap at a local junkyard, and a single 2000mm length of Makerslide was much cheaper than sourcing the smooth rod and linear bearings required.  The Makerslide rail also makes for a slightly cleaner design - I can use the rail itself as a structural element to support the top end of the printer, and it has a channel inside which can be used to hide the wiring to top end.



For motors, I chose these large NEMA 17 motors from Phidgets.  The torque requirement was set by the direct-drive extruder design I wanted to use, and the motor required for that was cheap enough to use for the drive axis as well.

The standard Rostock design needs six 762mm smooth rods, and has a 400mm high print volume.  To keep costs down I bought a single 2000mm rail and cut it into three 666mm long pieces.  For this printer I'm only aiming for a 200mm high print area, so I don't need quite as much height on the rails.  The reduced height also let me use readily available 1164mm GT2 timing belts and pulleys




There are four sets here, I only needed three.  I bought these early on, before I had decided on the Rostock design.  Now I have a spare set.  I had been considering Synchromesh cable and printing my own pulleys, but decided that timing belts and premade pulleys would probably make for better precision in the moving parts.

The drive motors and pulleys are in the base of the printer, at the bottom end of the rails.  At the top end is an idler pulley.  These I decided to try and print myself.  The idler pulleys are printed in two halves.  Using the old Makerbot at work, I print the first half of the pulley.



While the plastic is still hot, I pressed a 625 bearing into the bearing half.


Once fully cooled, I remove that from the bed, and then print an identical pulley half.  The first pulley half and bearing is then pressed into that while still hot, making a complete idler pulley.


I'm not completely satisfied with how these run - the surface is a little uneven, there's a noticable irregularity with how the pulley runs with a belt tightly pulling on it.  I might try a different solution later.

To anchor the idler pulley and motor to the Makerslide rail, I decided to drill holes through the extrusion rather than attempt to clamp to it with T-nuts.  I haven't found a convenient source for the 5mm T-nuts that you're supposed to use to attach to the Makerslide rail, and I don't really trust a friction grip type connection to hold belt tension anyway.







Each 666mm length of Makerslide rail has two 5mm holes drilled, one near each end.  Andrew Terranova of Let's Make Robots was nice enough to let me use his saw and drill press to do this part.  I realized after cutting and drilling these that one of them has the inner groove in a reverse orientation to the others, but it doesn't really matter as I'm not anchoring anything to them.



The idler pulley goes at the top end of each rail.  The pulley itself is held in place by a 5mm machine screw threaded through the hole in the rail.  I designed a printed a plastic block that secures the pulley in place, has a flat surface and screw holes to attach to the upper structural plate, and has mounting holes for the upper mechanical limit switch.  I also have the option to use two T-nuts on each side to further anchor the block to the rail.



The motor and drive pulley are at the bottom end of each rail.  The lower assembly is made up of two blocks.  The smaller block to the left is anchored directly to the rail with another 5mm screw.  The larger block which holds the motor and drive pulley is free to slide along the rail.. I use two screws to attach the motor block to the anchor, and can adjust the tension in the drive pulley by tightening or loosening the screws.






To anchor the moving carriage piece to the belt, I use a modified version of the trick that's used on the original Rostock design, to pinch the belt in a groove on the carriage.  This sacrifices a little belt length for a secure grip with no additional hardware.





Four small V-groove roller bearings are attached to each carriage to let it roll smoothly on the rail.  In theory I could have gotten away with only using 3 bearings, and might change the design to reduce the weight in the future.  Other than the belt clamp and mounting holes for the roller bearings, the design of this part is the same as the original Rostock.



Now I have three essentially identical drive axis built up.  The next step will be to finish the wiring of the controller so I can test them, then getting the plywood cut so I can build up the frame.



Tuesday, August 21, 2012

The next big project

The little walking robot I bring to conventions wasn't well-prepared for GenCon 2012.  Leading up to the convention, I was mostly working on a completely new project instead.  My experience with the Makerbot Thingomatic at work has convinced me that I need to have a 3D printer of my own for home use.  Rather than buying a commercial kit, I'm building one from scratch of my own design.

I have spent months researching the design.  Initially, I was going to build a Pursa Mendel, with some modifications to use some scrap aluminum I have on hand to replace some of the threaded rods.  I wasn't happy with the way the design was looking, and kept trying to figure out ways to redesign it for faster speed and better rigidity.  For a while I was looking at building something more similar to a Ultimaker printer, but I wasn't happy with the overall mechanical complexity instead.  Then I came across the Rostock Delta 3D printer design, and fell in love.

My printer will be based on the Rostock design, but with a few key variations.  I'll be using Makerslide rail and V-groove bearings instead of smooth rod and linear bearings.  In theory, Makerslide should make the frame more rigid, and has a hollow channel through the center that can be used to route wires.  I will also be making a number of changes to the overall design, to accommodate found materials I'll be using, and to make the overall design cleaner and more compact.

Parts I have gathered so far include:

An Arduino MEGA 2560 controller, courtesy of the Sparkfun 2012 Free Day
A 480W PC power supply, recycled from my wife's old computer
A pile of V-groove roller bearings from a local scrap yard
Heated Bed and Borosilicate glass plate from Lulzbot
Drive belts and pulleys also from Lulzbot
Ramps DIY Complete kit with extra limit switches from Ultimachine
SDcard reader from dfrobot.com
A single 2000mm Makerslide rail from Inventibles (sadly out of stock now)
MK7 drive gear from Makerbot
4 drive motors from Phidgets
Ten 625 bearings, polyamide tape, a 20x4 LCD, and a click encoder from Ebay
Some PTFE tubing, and a whole lot of nut, screws, and washers from Mcmaster
A Mini J-head, custom-machined for 1.75mm filament, from Hotends.com
Lots of scrap metal, plywood, hardware, tubing, wiring, and other bits from local suppliers and my scrap pile.

So far, all I have is a pile of parts gradually taking over the living room.  I hope to being actual assembly of the mechanical and electrical parts later this week, and to have the printer working a few weeks after that.

Gencon - event reviews

TDA1235549: Giants' Travail

This year True Dungeon had a new space in one of the giant convention halls in the ICC, rather than the ballroom of the Marriott as in previous years.  They used the new space to add extra features - crafting vendors, a tavern and dining area, even some side quests - to turn True Dungeon into a full MMORPG type experience.  I wasn't interested enough to try any of the side stuff, being only there for the main dungeon runs.  The best thing about the new location for me was being conveniently located near the boardgame area and dealer's halls.  The only complaint I have is that it was very dimly lit, even the dining and meeting areas - I almost couldn't find the friend I'd arranged to do the run with.

I did this run with a friend of my wife's who had purchased some large number of token packs in advance.  She gave me a full set of rare tokens, nowhere near as nice as the ultra-rare set she had but far better than the gear I came with.  She also took over as leader of the party, which helped - one very important factor in a True Dungeon run is having a unified party with a single person giving the orders!  The adventure itself was a nice mix of puzzles and combat.  We failed one room, a puzzle where we had to arrange the party in a line and pass clues from one end of the line to another by whispering from person to person.  Other than that we passed every room, and a good time was had by all.
 
BGM1233056: RoboRally: Time Twonky

A custom RoboRally game, this one having a setup where the game was run on three boards simultaneously and the robots could choose which board to run on at the start of each turn.  The main effect was to allow a robot in trouble to easily jump to a quieter map to shut down and recover.  A fun game, although a bit light on new mechanics.


RPG1231651: NASCRAG Charity Event

Scheduling this event was a mistake.  It's not that I have anything against the NASCRAG event, which was well-written and funny.  I'm glad I had a chance to try a NASCRAG event.  The mistake was in scheduling this event - a 4 hour long event involving roleplay and improv and other things I find mentally challenging - immediately following the 4 hour RoboRally event - which was also mentally challenging.  At about the third hour of the event I was mentally and physically exhausted and had a headache developing, and had to withdraw from the event.  I wasn't the only one, either - another player had to drop out and leave before I did due to exhaustion.  So, fun event, but I would have enjoyed it more if I'd been well rested going into it.


BGM1231471: Super Robo Rally

This was a large-scale RoboRally event, with board and robots made from Lego mindstorms robotics.  Everything was automated and computerized - the players used cards with RFID tags embedded, that were fed into an automatic card reader, and the robots then ran through the entire turn on their own according to the programmed cards.  It wasn't much of a Roboralley game - the effective board size was small, the event was only an hour long, and the rules were a limited subset of the normal Roboralley rules.  It was interesting more for the novelty of it working at all rather than for the game itself.  I probably won't do this again if they're back next year, but I'm glad to have tried it once.

It did give me some ideas for a different type of automated Roboralley setup that I might build some year.


BGM1233064: Dragon Dimension/Big Bang

Two experimental games being tested.  Big Bang was a very short and simple game, the result of a contest to design a game using only six cards and one die.  A fun ten-minute experience, the kind of thing you could play while waiting for pizza to be delivered.  Dragon Dimension was a significantly more complicated event, involving moving pieces around a map, summoning dragons, destroying helpless villages, and fighting other dragons.  The optimal strategy was a little hard to figure out beforehand.


CGM1233707: XXXenophile

The same game mechanics as Girl Genius, but with R-rated artwork and occasional instructions to remove clothing or perform various physical acts.  The group I was playing with ignored those instructions.  I suspect the game would have been more fun played with the right group of friends and all optional instructions followed.

 
BGM1233048: Turtle Soup

Another experimental game being tested.  In this one the players attempt to guild groups of baby turtles past various hazards to reach the open ocean.  The main failing of this game was the lack of meaningful strategic interaction between the players - we might as well have been each playing the game solo.  The one thing the players could do to deliberately affect other players was to shuffle terrain tiles around to make or break paths to the ocean, but that permitted little strategic choice as those changes usually helped or hurt all players equally.  I had a chat with the GM afterwards about ways to improve the game design.

 
TDA1235937: Draco-Lich Undone (puzzle-oriented)

I picked the puzzle-oriented version of this run because I didn't think I had good enough gear to do well on the combat side.  Of course, that was before I knew my wife's friend was going to equip me with her cast-off rares.  There was only one room with required combat on this run, and we aced it easily.  We did fairly well on the puzzles too, only failing one room that required us to use long wooden poles to carry buckets from one side of the room to another.  We knew what we had to do, but were too clumsy and spilled the buckets.  We solved the rest of the rooms, although I don't know how much of that was due to cleverness on our part versus people knowing the answers going in due to word of mouth or having done the puzzles earlier in the weekend.

Overall I thought the quality of the actual adventure runs at TD were better this year.  After the 2011 events I had been considering not returning for 2012, but after 2012 I have no such considerations about 2013.  The one thing that was lacking this year was additional lore and videos.  There was no preview video, no video at the end describing the state of the story, no clues on the TD forums beforehand, and no closure other than the end room GM telling us "Yep, Smoak's defeated for good now.".  I understand that they were a bit busy ramping everything up for the new event space, and TD isn't really a roleplay-focused event, but I did feel the immersion was lacking this year.


BGM1233058: RoboRally: 3D

This was the final event I registered for at this year's convention.  A RoboRally game on an initially empty board, with rules mechanics that permitted players to drop, pick up, or move blocks and ramps to change the playing field each turn.  I had a great time in this one.  This is the type of RoboRally event I like - where new game mechanics are added that give an additional level of strategic choices to the players.  It was reminiscent of the "Planet Robo" event run some years back by the same people, where the players could drop board elements (conveyors, bridges, pits, etc) before or behind their robots as they moved.

A common problem with RoboRally games is the tendency for a robot which manages to get ahead of the pack to stay ahead of the pack.  The biggest impediment to a robot is the other robots, so any robot who gets away has an advantage and tends to stay in front.  The custom rules in this event unfortunately tended to make this effect worse - robots could only drop blocks nearby and couldn't pick up blocks near other robots.  A robot ahead of the pack could drop blocks to make it go faster (conveyors and such) and barriers behind to slow down the others, while the rest of the pack would be unable to stop it and instead would be slowing each other down.  Halfway through the game, at the third flag, I managed to get ahead of the rest of the players, with a few lucky card draws and well-placed blocks, and from there was able to race ahead untouched and maintained a clear lead until the end.  I think the rules for where and when robots could drop and pick up blocks could have used some tweaking, but this remains my favorite event at this year's GenCon.