Hi VEX Community!
The hype train is back on track…about 2 months late, we’re finally posting our turret “reveal!” We destroyed it about a month ago but we’ve managed to salvage a couple of photos taken by potatocams to describe the robot on the anniversary of last year’s reveal (almost) =D
Specs:
- 4 motor high speed 1:1 4" omni-wheel tank drive
- 4 motor high speed 1:36 overall 1 5" flywheel
- 2 motor custom turret
- 1 motor plastic lock bar intake
- 1 motor conveyor in the center of the robot
Front view: https://drive.google.com/file/d/0B-Uqz5VPtZLqLUM3R08tZGZ6amc/view
Diagonal view: https://drive.google.com/file/d/0B-Uqz5VPtZLqb1pLNm54SWp2VWM/view
Tl;dr OG Turret, don’t build a turret
The reason we built a turret in the first place was because we predicted at Worlds right after the game reveal that a robot that shot while on the move would be the winning design. And that’s how the MAUS came into being.
All About Our Turret
@Marty Shoutout to the awesome dude who sacrificed his summer break to design the turret! He can probably describe the turret in more detail later if necessary?
Originally we bent a couple of c-channels to form the ring, but it ended up being too wide and we couldn’t figure out a way to power the turret. We tore it apart and after several design iterations including custom Plexiglass rings and a volcano-shaped device, Marty came up with the idea to bend a couple of plates and attach tank treads to the outside to power the turret.
While building the turret we came across the problem of the turret being too heavy that it created considerable friction between the sprockets on the motors and the tank treads, so Marty fashioned bearings from nylon spacers and screws to rest the turret on top of. They’re literally all black now but “that’s how we know they’re working!” ~Marty 2015
We also had to build 2 independent intakes in order to be able to first intake the balls and then bring them to the flywheel from any position. Each was powered with 1 motor. The outside one was built with lock bars literally because I couldn’t find any other parts to build with on the day of (and it turned out it worked fairly well). The inside one used a system of gears to have 1 motor power 2 conveyors, one on each side of the ball. Bent plates provided enough force to passively push the balls from the outer intake to the inner intake.
Horrifically Bent c-channels: https://drive.google.com/file/d/0B-Uqz5VPtZLqaWk3bldpbk1aaXc/view
Side view: https://drive.google.com/file/d/0B-Uqz5VPtZLqakdQU194c1pVOTA/view
Custom Bearings: https://drive.google.com/file/d/0B-Uqz5VPtZLqNGJid0xxNHMtNW8/view
Position tracking code:
@RedDrgn Shoutout to the phenomenal programmer who spent countless nights working on Autoaim! He can probably describe the program in more detail later if necessary?
It took forever, but we finally completed position tracking code before our tournament at Bellarmine. Essentially we used two encoders on unpowered motors + a gyro at the center of our robot and some trig equations to calculate the change in position every time the sensors updated.
One main problem we faced was the drift from the gyro. We implemented an extended Kalman filter, which made the readings a lot more accurate. We also included a couple of recalibration points on the field, including the starting tiles and the center of the field.
Another problem we had to overcome was when the robot drove without turning. For some reason the turret wouldn’t account for the change in position. I honestly don’t know how Hareesh fixed it but all I know is it took repeated testing and debugging and possibly some jank code.
After inputting the values through a bunch of crazy equations, Hareesh changed the turret position with PID using an encoder on the turret.
Flywheel speed calculations
We tried implementing RPM calculations for the flywheel to automatically control its speed, but because of non-ideal conditions and inconsistent densities of the balls, we decided to use regression instead. We tested the distances the balls traveled at random power values over and over again until we had a scatterplot of over 60 values. Because the distances we had recorded were the distance the balls had traveled before they hit the ground and not before the hit the correct height to enter the net, we had to use projectile motion to correct the distance. After solving a system of 9 non-linear equations, we were able to formulate some random annoying equation with nested trigonometric equations and rational functions to convert the distances from the distance to the floor to the distance to the goal.
The residuals determined that (unexpectedly) a linear model would be the best fit for the points. We developed an LSR model that took in the distance from the ball to the goal and converted it to the power value necessary to score the ball.
We used PID to get the flywheel to get back up to speed as quickly as possible to reduce ramp up time.
And in the end after winning Tournament Finalists at both Dougherty Valley and Bellarmine we decided to rip apart our robot and go for another design. We felt a turret wasn’t worth it =( so RIP MAUS