THE TASK
The goal of this project was to create an autonomous robot capable of playing "Joustball," a mash-up of medieval jousting and Nerf ball. Our robot had to be able to knock a rather large and heavy "Knight's head" off of the top platform of our opponent's 'bot using nothing but a three-foot piece of foam pipe insulation. It also had to be able to shoot Nerf balls at the opposing team's bot and goal, both of which featured infrared beacons emitting at different frequencies. The field featured various colors of tape delineating the different regions of gameplay, a reload station where we could reload our Nerf balls, and a dividing wall between the two halves of the playing field (see the link below for a full description of the project).
|
MUXCALIBUR OVERVIEW
Our 'bot, Muxcalibur (despite not using a single mux in our circuitry...), was designed to be versatile and extremely aware on the playing field. The drivetrain design allowed for simple movement, on-the-spot rotation, and PID speed control due to the inclusion of custom-cut encoder wheels. We used a flywheel motor with a soft wheel to create a pitching machine-like shooter to compress Nerf balls and propel them at high speeds towards our target. The shooting mechanism was mounted on a servo-actuated turntable, as was our IR sensing circuitry. Our lance was loop-like (for "lassoing") and mounted on active (servo-actuated) and passive Duron arms for strength and security.
Our sensing capabilities were extensive. Our IR sensing circuitry allowed us to detect both relevant frequencies using tone decoders, as well as the magnitudes of the signals seen by the left, center, and right phototransistors. They were mounted on our rotating turret, allowing us to intelligently track our target even as it drifted left or right after initial alignment without having to reorient the entire 'bot. We mounted tape sensors on the base of the bot that could detect the presence of black tape and thereby help us to navigate successfully to the reload station. Optointerrupters were used to count encoder ticks from the drive wheels. We used two ultrasonic rangefinders on our 'bot, one to sense the distance between the front of our robot and the far wall and the other to sense the proximity of the opponent's bot across the dividing wall. Using the distance of the enemy 'bot, we were able to intelligently tell our lance when to actuate, thus increasing the likelihood that we would lasso the Knight's head. Limit switches were used to trigger wall collision events and to initiate the reload sequence when our 'bot was properly positioned relative to the resupply depot.
Our sensing capabilities were extensive. Our IR sensing circuitry allowed us to detect both relevant frequencies using tone decoders, as well as the magnitudes of the signals seen by the left, center, and right phototransistors. They were mounted on our rotating turret, allowing us to intelligently track our target even as it drifted left or right after initial alignment without having to reorient the entire 'bot. We mounted tape sensors on the base of the bot that could detect the presence of black tape and thereby help us to navigate successfully to the reload station. Optointerrupters were used to count encoder ticks from the drive wheels. We used two ultrasonic rangefinders on our 'bot, one to sense the distance between the front of our robot and the far wall and the other to sense the proximity of the opponent's bot across the dividing wall. Using the distance of the enemy 'bot, we were able to intelligently tell our lance when to actuate, thus increasing the likelihood that we would lasso the Knight's head. Limit switches were used to trigger wall collision events and to initiate the reload sequence when our 'bot was properly positioned relative to the resupply depot.