Robot Design
Our team decided to build a 'bot we were all proud of, not necessarily a 'bot to win the competition. This philosophy resulted in us spending a lot of time developing individual subsystems.
For our ball shooter, we implemented an air-powered revolver that rotated Nerf balls into position and used a fan to blow the balls out of a barrel. We rotated the chambers using a 180-degree servo geared up in a 2:1 ratio, and we turned out sections of ABS tube on the lathe to create the chambers.
For our lance control, we implemented a pan-tilt configuration with two servos in order to allow two degrees of freedom in lance positioning, and we attached the lance to the servo by lashing with string. We modified an existing servo code library to work on the 'E128 and suit our purposes.
In keeping with our Batman theme, when sending pulses to request new balls from the ball reloader, we put a yellow LED plate in parallel with our IR LEDs and put a BatSignal sticker on the plate so that when we requested a ball, the BatSignal flickered.
In order to propel our robot, we manufactured our own aluminum axles and acrylic fittings for 90mm rollerskate wheels. We initially developed two RLC magnetic field sensing circuits in order to implement a PD control law that would let us follow the wire spanning the length of the game field, but disturbances from our floor casters caused so much instability that we eventually attached two casters to the side of the robot and let it ride the wall. Though not glamorous, this solution let our robot drive straight consistently.
We diverged from the classic multi-tiered chassis design and instead built a Duron truss on top of a bottom layer of cross-hatched cardboard. The truss had a factor of safety of at least 10-30 in tension and compression (no accurate data for Duron was available online, so we calculated using the less durable MDF, instead). The truss also allowed for accessible circuit board mounting and support for the barrels of our ball launcher. By using cardboard for the bottom layer, we kept our weight down and saved on material costs.
In order to reduce capacitive noise, we mounted a power distribution circuit board and all motors and batteries to the underside of the robot, and we sandwiched a grounded layer of aluminum foil between the two layers of the bottom of our chassis. All sensors were mounted above this aluminum layer.
In our code, we opted for a hierarchical state machine instead of a flat state machine. Though both were viable options, we had no experience with HSMs, so we decided to learn something new.
Gameplay
When Round 1 began, we raced to the other side as fast as possible and did nothing during Recess 1. On Round 2 start, we fired all of our balls into the opponent's goal and then raced back to our side. During Recess 2, we requested five new balls from the ball reloader. On Round 3 start, we ran in guns blazing: upon seeing the opponent, we lowered our lance and fired all of our balls, after which we ran back to the other side. In the event of sudden death, we reloaded and repeated our process from Round 3.
Our team decided to build a 'bot we were all proud of, not necessarily a 'bot to win the competition. This philosophy resulted in us spending a lot of time developing individual subsystems.
For our ball shooter, we implemented an air-powered revolver that rotated Nerf balls into position and used a fan to blow the balls out of a barrel. We rotated the chambers using a 180-degree servo geared up in a 2:1 ratio, and we turned out sections of ABS tube on the lathe to create the chambers.
For our lance control, we implemented a pan-tilt configuration with two servos in order to allow two degrees of freedom in lance positioning, and we attached the lance to the servo by lashing with string. We modified an existing servo code library to work on the 'E128 and suit our purposes.
In keeping with our Batman theme, when sending pulses to request new balls from the ball reloader, we put a yellow LED plate in parallel with our IR LEDs and put a BatSignal sticker on the plate so that when we requested a ball, the BatSignal flickered.
In order to propel our robot, we manufactured our own aluminum axles and acrylic fittings for 90mm rollerskate wheels. We initially developed two RLC magnetic field sensing circuits in order to implement a PD control law that would let us follow the wire spanning the length of the game field, but disturbances from our floor casters caused so much instability that we eventually attached two casters to the side of the robot and let it ride the wall. Though not glamorous, this solution let our robot drive straight consistently.
We diverged from the classic multi-tiered chassis design and instead built a Duron truss on top of a bottom layer of cross-hatched cardboard. The truss had a factor of safety of at least 10-30 in tension and compression (no accurate data for Duron was available online, so we calculated using the less durable MDF, instead). The truss also allowed for accessible circuit board mounting and support for the barrels of our ball launcher. By using cardboard for the bottom layer, we kept our weight down and saved on material costs.
In order to reduce capacitive noise, we mounted a power distribution circuit board and all motors and batteries to the underside of the robot, and we sandwiched a grounded layer of aluminum foil between the two layers of the bottom of our chassis. All sensors were mounted above this aluminum layer.
In our code, we opted for a hierarchical state machine instead of a flat state machine. Though both were viable options, we had no experience with HSMs, so we decided to learn something new.
Gameplay
When Round 1 began, we raced to the other side as fast as possible and did nothing during Recess 1. On Round 2 start, we fired all of our balls into the opponent's goal and then raced back to our side. During Recess 2, we requested five new balls from the ball reloader. On Round 3 start, we ran in guns blazing: upon seeing the opponent, we lowered our lance and fired all of our balls, after which we ran back to the other side. In the event of sudden death, we reloaded and repeated our process from Round 3.