5776Y Mid-Season Turret Reveal

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 :frowning: 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

1 Like

Sorry for the lack of photos/videos. If you want to see tournament videos Dougherty Valley is uploaded on YouTube. I have Bellarmine on my computer but I’ve been too busy with college apps to work on it :frowning:

Very VERY impressive guys! That’s awesome!

Congrats guys! Looks amazing, can’t wait for a video!

Nice robot, I will be waiting for a video. Also, very impressive programming, any chance we could see a copy of the code?

You guys did pretty good at Bellarmine. You went to finals if I remember correctly.

Great robot! Too bad your not going to continue with the turret.
Interesting intake, I like the intake extension on the turret idea.
Why did you use 2 motors for the rotation of the turret? We have been using 1 and it sometimes seems overly powerful.
Also… What tool did you use to bend that C channel? Something rather powerful I assume.

:frowning: Sorry no reveal video. The robot’s been dead for a month now.

With 1 motor our turret would shake around and it wouldn’t be smooth. Two motors fixed the problem.

And Marty just used pliers to pull out the edges of the c-channels at each notch. He then literally just pulled the c-channels against a metal bar until they were bent. :open_mouth:

Thank you for sharing your design with a very detailed write up! We very much appreciate it. Unfortunately, it takes at least two reveals a week to keep some younger teams focused on the robot building and not get distracted on the video games and similar stuff. :frowning:

Seriously, very good write up, in addition to innovative robot, you must be having a killer design notebook.

I just changed laptops because my old one was dying so I don’t have a copy of the code available but it wasn’t extremely complicated. Position tracking utilized two encoders perpendicular to each other and a gyroscope. The gyro was on a low pass mechanical filter to dampen vibrations that could cause error. The sensor data from both the encoders and gyro were fused using a pretty primitive kalman filter. The flywheel had an encoder on it and utilized velocity control, we tested the flywheel at various velocities and created an equation to model the power required given the position. We had 3 separate recalibration points as well as presets in case our autoaim started messing up. Overall this was an interesting idea but I lacked the knowledge to perfect this system and the sensors aren’t exactly the best so I wouldn’t recommend using this for competitively.

If you would like to know more about kalman filtering I would recommend Google scholar. If you guys have any other questions about the code I’d be happy to answer them!

Makes sense, I’ve just built a mammoth turn table for our new turret and its turning out to be a little irritating, unfortunately I don’t have the option of the extra turret motor. So I’m just going to fiddle with it until it works. :expressionless: