Thursday, November 30, 2017

What We Would Like to Achieve Before Sectionals

Project

  • Schedule Elementary School visits with MnDOT at Turtle Lake and Snail Lake
  • Complete a bag cost breakdown
  • Add how we applied the data from the survey
  • QR Code on pamphlets
  • Distribute the fliers to the ECFE
  • Ask the city of Shoreview to add a link to our bag site on their city website
  • Edit the script
  • Manufacture and sell bags in shops

Robot

  •  Simplify attachments
  • Add fire truck, well, and toilet to Cooper's mission
  • Add second manhole cover to Max's mission
  • Engineering Notebook (hello!)

Core Values

  • Create a challenge for the 4th grade team
  • Do more Core Values as a team
  • Mentor "Brainiacs"
  • Hold a review with "The Dots"
                                                                                        Until next time, keep building!

November 30, 2017

Today is our second practice after the Regionals tournament and a well-earned week long break. At practice today, we are attempting to fix Hulk Smash by not getting caught on the ramp as often and approaching the manhole cover from a different angle. Also, Cooper will investigate options to flush the toilet.

                                                                                         Until next time, keep building!

Friday, November 17, 2017

SuperPUDS

SuperPUDS is our main driving block and is very important. It combines DriveStr8, which uses gyro errors to drive mostly straight, and PowerUp, a block that gradually changes power over a specific amount of time.



SuperPUDSVariable is the most basic version - it simply ends on a variable. This one needs other action from outside the block to end it, unlike the others which end in the block alone.


SuperPUDS can have any ending condition you need - you can change the variable to a different condition or just use the base SuperPUDSVariable - the latter is used in our new SuperPUDSTouch block.

Overall, SuperPUDS is a very universal block that is very reliable as well. But, we still need to discuss the components.

PowerUp

PowerUp is actually a reference to
Super Mario power-ups. These are a few of them.
Source : https://orig00.deviantart.net/a84e/f/2
014/085/9/1/random_ma
rio_s_power_ups_1_by_superlakitu-d7bqawj.png
PowerUp is the “PU” portion of SuperPUDS. It allows changing the motor power: for instance, it can start the motors slowly and then speed them up. Many teams call this “ramping up,” and the reverse is “ramping down.” (Really, PowerUp is simpler. It doesn’t do anything with motors. It just outputs a number that changes over time. We wire this output into a motor block as the Power input.)

Our old PowerUp was incredibly over-complicated. We didn't know linear functions at that time, so we ended up writing very complicated code that was basically a linear function. Now that we do know them, we can easily write the program in a jiffy!


DriveStr8

Okay, DriveStr8 is really complicated. Get ready.

DriveStr8 is a PID Gyro controller. It didn’t start out this complicated. Originally, DriveStr8 was inspired by Builderdude35’s video “How to Make your Robot Drive Straight with the EV3 Gyro.” He shows how to write a proportional controller: in a loop, over and over,

  1. Read the Gyro angle
  2. Subtract it from the desired heading (call the difference the “error”)
  3. Multiply the error by a gain (this makes it “proportional”)
  4. Wire that into a Move Steering block as the Steer input, so that the Robot steers back to the desired heading.


This is also really commonly used for Line Following, using Reflected Light Intensity instead of the Gyro. This is something every FLL team should learn. Builderdude35 has a lot of videos on Line Following, too. The one called “PID Line Follower for EV3 - The Ultimate Line Follower!” sounds really great, but we watched it and Did. Not. Get. It. What is PID?

YouTube has lots of videos on PID. They tell you that it stands for “Proportional Integral Derivative.” We know what proportional means. The other two words are from Calculus, though. Finally, we found a video that explains it as past, present, and future errors, and that made enough sense for us to figure it out.

Present error is the current error in the Gyro. This is the P term, for Proportional. There are two big problems with using just a proportional Gyro controller:

  1. It wobbles a lot.
  2. It settles on the wrong value most of the time. (Ask for a heading of 20, and you’ll maybe get 17 or 22 instead.) This doesn’t seem like a huge deal, as the Gyro’s accuracy is supposed to be 3 degrees anyway, but we wanted something more reliable.



This picture shows a test we did, with a marker taped onto the robot. The robot started with a Gyro reading of 0, and we ran SuperPUDS for 5 seconds with a desired heading of 20 degrees. The orange lines show it driving with only proportional control (using only the present error). It’s really wobbly in the beginning, and in three different tests, it didn’t do a very good job driving in a repeatable path.

Here’s a corresponding plot of the Gyro readings. The orange line was from one of these tests. You can see that it settled at around 17 degrees.


Fixing the Wrong Value Issue

The fix for the “wrong value” issue is the past error. This is sort of like the robot attempting to learn from its mistakes. It adds together all of the previous errors. That’s a bit strange, so let’s say it again: the past error adds together all of the previous errors. Why would you do this? Because it tells you if you’re continually wrong to the same side. If, instead, you wobble back and forth, then the cumulative value is around zero. If you’re always wrong to the same side, then the cumulative error keeps growing.

So, we can take the past error times a gain, which is typically low for later on when the numbers get big. This helps the robot get aligned to where it should be, not where it’s been if that was wrong.

The blue lines in the above pictures show what happens when we include the past error. It gets the 20 degrees correct, but it’s still wobbly at the beginning.


Fixing the Wobbles

We can fix the wobbling by asking the robot to predict the future. This is based on the gyro rate, which the robot kindly will give us. This means we don’t have to guess what it is. If the gyro rate is high, then the robot is steering hard, and it will probably overshoot the desired heading. Did you catch that? We’re predicting the future heading, based on the current rate! We can apply another steering correction to counteract this. Being able to accurately predict allows for straighter driving more consistently. The green lines in our pics show the effect of including the future error. Notice how consistent they are, compared to without the future correction!

Is your mind blown?

                                                                 Until next time, keep building!

Thursday, November 16, 2017

Mission Run 3 Rundown

She-Hulk

Includes-

Manhole Covers
Pipe Removal

This run is worth 80 points.


Manhole Covers

This mission is the bulk of the points of this run. It's worth 60 of the 80! That's 75%! Anyways, what happens is the She-Hulk attachment, a claw, grabs a manhole cover, and the claw turns and opens to drop the cover, now flipped. This happens to both covers.

Pipe Removal

This is the yellow pipe in between the ramps. What our robot does is uses those green and yellow extendo-arms on the claw (look on the right side of the left image - you'll know what I mean) and pulls up by the loop on the pipe.
                                                                 Until next time, keep building!


Mission Run 1 Rundown

Mater Mission

Includes -

Filter
Pump Addition
Flow
Rain

This run is worth 95 points.

Filter

For this starting run, we simply have the robot drive forwards, with a giant rack called Mater attached to the arm. There is a red lever on this, which hits the button as the robot drives forward for the next segment.










Pump Addition

This is quite a simple run. The robot merely drives forward, then left to put the pump in place.











Flow

While Pump Addition is going on, the robot is getting ready for its next move. It uses another little lever on Mater to push the box up and get the water out. This helps the other team as well.



















Rain

For the last segment, the Mater rack goes out as the robot drives back. It pushes the small brick to drop the rains, then leaves the rack there for the rest of the run.


                                                                       Until next time, keep building!

                                                                         

Basic Mission Overview

For our missions this year, we have 2 big mission runs (a third one is in the works). We have planned out a spreadsheet evaluating all of the missions by difficulty to navigate to, difficulty to activate, maximum points, potential groups with other missions, and attachments we can use. Here is the spreadsheet we used to do all of this research in to the missions.
                                                             
                                                                              Until next time, keep building!

Wednesday, November 15, 2017

November 15, 2017 - Batmobile!

Today, Cooper finished tweaking Batmobile to where it needs to be for Regionals. Now, it drops water in to the fountain after driving over, turns the faucet, and uses a mini-attachment, Robin, to swing the slingshot in to the target. This is our final mission run in order, because the robot needs to stay by the faucet to keep it turned and to keep the slingshot in the target.

Also, most of our team went to a practice for the Brainiac Maniacs to mentor them on how to be a better team. We discussed important Core Values items and practices, like not saying "no". We also analyzed their robot chassis, reviewed the missions, looked at their programs, suggested they use more MyBlocks and implement more sensors, and encouraged more code commenting. We also told them a lot more. It was very helpful for them!

                                                                 Until next time, keep building!

Saturday, November 11, 2017

November 11, 2017

Well, Regionals are one week away, so naturally we've decided to write a complicated new program.

Vaughan started writing a Master Control program, which selects a mission run based on what color the color sensor sees. We had this idea several weeks ago, to avoid having to push a button on the robot and risk pushing it out of alignment.


We wanted to make sure the sensor would reliably detect the color we were showing it, so we did some testing.


We placed each of the "cards" in front of the sensor, and watched Port View.

  • Red: 4 away from the guard, and 5 against the guard
  • Blue: 3 away from the guard, and 2 against the guard
  • Black: 1 or 3 away from the guard, then 1 or 3 against the guard
  • Light Green: 3 away from the guard, and 2 against the guard
  • Green: Always 3
  • Yellow: 1 away from the guard, and 4 against the guard
  • White: 1 away from the guard, and 6 against the guard
Translating into colors, that's
  • Red: Yellow away from the guard, and Red against the guard
  • Blue: Green away from the guard, and Blue against the guard
  • Black: Black or Green
  • Light Green: Green away from the guard, and Blue against the guard
  • Green: Always Green
  • Yellow: Black away from the guard, and Yellow against the guard
  • White: Black away from the guard, and White against the guard
So, if we use Red, we shouldn't use Yellow. If we use Blue, we shouldn't use Green. And we just shouldn't use Black at all.


                                                                 Until next time, keep building!