[an error occurred while processing this directive]

Issaquah Robotics Log
2005 FIRST Competition


Build Period: Week 1 - Week 2 - Week 3 - Week 4 - Week 5 - Week 6
PNW Regional: Wednesday - Thursday - Friday - Saturday


Pacific Northwest Regional FIRST Competition
Day 2: Friday, March 11

As told by Tom Saxton

Over the course of Friday and half of Saturday, there were 62 qualifying matches to be played. With six teams in each match (two alliances of three robots each), that means each team competes in about 10 matches, on average a bit less than an hour between matches. So things are pretty frantic, with making any needed repairs plus adjustments in software and strategy. It can be pretty boring between matches if things are working well and extremely hectic otherwise. The latter is more common.

Our day started with a great match. We were in the second match and our alliance won 62 to 7. The second match was another great match, with both sides working well and scoring a lot of points. We narrowly lost 43 to 41. The third and fourth matches were two more victories: 20 to 7 and 40 to 0. In that fourth match, the opposing alliance scored 12 points, but got hit with a 30-point penalty, dropping their score to zero.

This year, the competition has some interaction between the robots and the players. Whenever this occurs, safety is the first concern. The robots weight 130 pounds and are capable of doing real damage to each other, the field and people. To make sure things stay safe, the rules are structured around safety and the scoring builds in an incentive to behave cautiously. When the robots are in position to get loaded by a human, other robots are prohibited from interfering. Any such interference is punished with a 30-point penalty. In these matches, scoring 30 points is difficult, so losing 30 points all but ensures that the offending alliance will lose.

Our winning continued in our fifth match of the day, 25 to 22. This put us in third place in the rankings and made it look like we could do as well, or even better, than we did in the seeding matches.

Here we are about to stack a tetra on top of a goal previously capped by the opposing alliance.

stacking

photo by Barbara Joyce

Our sixth match was another great match. Our alliance scored 32 points, but the opposing alliance edged us out with a score of 34. Fortunately, in addition to the win loss record, the standings are determined by how well the losing alliance scores in the match. So, if your matches have high scores on both sides, your team gets ranked at the top of the list of teams with the same win/loss record.

Our last match Friday was our first big disappointment. Our alliance scored 41 points, but one of our partners racked up 40 points in penalties, so we lost 1 to 24. It's very frustrating to get out there and perform well, but lose because a partner was not paying attention to the safety rules.

So, we closed the day with a winning record of 4 and 3, with good standing points for many high-scoring matches. This puts us easily into the top half of the seeding ranks, and if we can continue this, we'll easily be involved in the finals.

We did have one mechanical issue during the day. In one match, the elbow joint on the arm stopped working. We first thought we had dropped the chain, but we had actually sheared off the key that locked the two sprockets onto the elbow axle. Without that key, the two sprockets could freely turn on the axle, which meant driving the motor would spin the small sprocket, but that rotation didn't carry over to the sprocket attached to the arm - so, no elbow action. Kris (our driver) went into defense mode and the mechanical team sprung into action after the match. Jim Troy drove down that morning, so he was able to help diagnose the problem and work on a solution with Jim Culbertson and Erik. There was a mobile machine shop available, so Jim T. took the key stock over to have them machine it for us. Unfortunately, it took them over 15 minutes to cut the piece too short and machine it down too thin. Fortunately, Jim insisted they return the original piece as a reference. As the time for the next match quickly approached, we had to ignore the repeated calls for our team to get into the queue while Jim tried to create a new replacement with a hacksaw and a file. In the end, they decided we could get by with the original piece put back into proper position with some hasty patch to hold it in place.

At the same time that was going on, we decided we should stop risking damage to the elbow and install a limit switch for the down position. The problem was we want to rest the upper arm segment on the top cross brace of the lower arm to take strain off of the chain on that sprocket, but we don't want to press the arm into that plate and put even worse strain on the sprocket and risk bending the arm and dropping the chain. We solved this with a pad made from a pit-mate's foam hat and a limit switch. Of course, there was the usual software scramble where some confusion about both the direction of the motor and the sense of the switch caused us drive into the brace and keep pressing against it even though the switch was tripped, but then the software was confused and would let us drive the arm in the other direction to relieve the strain. Real time programming with an audience where bugs can lead to the destruction of the robot we've all worked on for six weeks can get pretty stressful. But, we did finally get it done and before we caused any damage.

Amazingly, that was our only mechanical failure of the entire tournament. It was more than enough having one between-match scramble to tear the robot apart and put it back together again in a tenth the time it took to put it together the first time. We did a lot of that at last year's tournament and it was a big relief to not have so much of it this year.

During the course of the day, the team settled into roles. Kris drove the robot base, Kyle and Caitlin alternated operating the arm, Christopher took the role of coach to coordinate with partners before the match and advise the drivers during the match. Erik coordinated loading the robot onto the field and played human player. Our robot could easily load from the auto-loaders, so I don't think we ever used the human player, so that was a tough job. Erik made the most of it by helping our alliance partners quickly load their robots from the human loader side. Linda started the scouting effort and got help from Caitlin when she wasn't driving and from Eric who sometimes alternated with Erik as human player.

There were some driving control issues during the matches. Turning the robot was difficult, so we worked some on that, giving Kris two modes, one with finer control and a turbo mode with more power. Still, doing careful maneuvers to line up for easy loading and capping was a constant challenge.

Driving the robot is hard, but driving the arm is even more challenging. The position of the upper arm segment can change pretty radically. When it's low, "forward" and "up" are the same rotation direction, but when it's high they are opposite. Finding a way to make that control intuitive is difficult. It can be done with inverse kinematics (where you control the position of the end of the arm directly, instead of controlling the two arm angles), but our lower arm segment only has two positions, so the usual solution doesn't work. We also had too little time with the robot to get anything very sophisticated working, and we learned last year that sensors fail and when that happens, you have to be able to drive on full manual.

Kyle argued that the arm rotation direction was counter-intuitive and should be reversed. Last year, we had major problems in a similar situation where we had two drivers and made a change Friday night (based on driver feedback) reversing the control directions and didn't have enough time to get the arm drivers used to the new controls and had big problems in the Saturday morning matches. So, at first Kris and especially Tom were reluctant to making that sort of change. Kyle persisted and Tom finally realized the controls were there for the drivers to use and they know best what's going to work for them. Fortunately, we had many switches on the operator interface, so we could relabel an unused switch for "Kyle mode" arm driving.

Kyle had another control improvement idea. On Thursday, we got the wrist automatically adjusting when the elbow and shoulder move so that the poker stays level when maneuvering the two arm segments. There was a similar problem with the upper arm segment when we fired the pneumatics to rotate the lower arm segment forward. Since the elbow joint (between the upper and lower arm segments) was moving, this would pitch the poker and the tetra it was holding downward. The often would slam the tetra into the goal we were trying to load onto and require some arm movement and base maneuvering to get the tetra positioned over the goal to be stacked. Kyle's suggestion was to adjust the elbow angle while the shoulder was moving to keep the elbow at a constant angle relative to the ground, thus slightly raising the tetra instead of lowering it. Again, we took over an unused switch to make this variation available.

Kris had an idea for another autonomous mode which didn't require moving the robot - have the robot start holding the freebie tetra and aimed at one of the back row goals. From that position, it was possible to drop the tetra onto the goal without moving the base. Even if it misses, it would have a good chance of knocking the dangling tetra under the goal into scoring position. We worked some on that but were having problems. There was a a bit of of rushed programmer confusion on how to get the cool auto-arm adjustments working while holding a tetra and moving the arm around in autonomous mode, but things still weren't working correctly even after we thought we had that all figured out. There's something strange going on when reading the OI switching during autonomous. It seems like not everything comes through all the time, which was causing arm behavior options to get unexpectedly switched.

Most of the team took off after our last match was done around 3:00, leaving Tom and Kris to work on the software. When Kyle and Caitlin came back a couple of hours later, the new driving software was ready and they got in some practice time. Caitlin decided that she preferred "Kyle Mode" after trying it out. We only got 15 minutes on the practice field, it would have been better to get more like a couple of hours!

They closed up the pits at 6:00 on Friday, encouraging everyone to get some food and relax, maybe even sleep, before the final matches Saturday morning. We left with some improvements to the arm control, but were frustrated by the problems in getting the new autonomous mode working.

The majority of the team started a meeting at 4:30 to start analyzing the scouting data that Linda and Caitlin had acquired with additional input from Eric and others. Linda was elected to be our representative at the alliance choosing meeting since she had taken the scouting task to heart and done an awesome job. She had in fact been so involved in her scouting, which required simultaneously tracking six robots in a frantic 2 minute 15 second match, that she had collected some information on 1318, later realizing that was our robot. Fortunately, she only had good things to say about our performance.

After that long meeting to jump start the alliance decision making process, we adjourned to the local mall for dinner at the food court and ice skating afterwards. Everyone was pretty worn out; enough that the students protested only a little at the 10:00 curfew we imposed.


Build Period: Week 1 - Week 2 - Week 3 - Week 4 - Week 5 - Week 6
PNW Regional: Wednesday - Thursday - Friday - Saturday

[an error occurred while processing this directive]