Our 6.270 Journal - IAP 2000

Danny Jochelson
Greg Kuhnen
Gabor Csanyi
Team #39


Monday 1/3
--------
Parts sorting (thanks Danny, Greg and Gabor are still lounging at home)... no flashes of inspiration yet.

Tuesday 1/4
--------
First lecture-

Learned about the rules for the contest. The random placement of the big group of student blocks should make this interesting.

The jail break rule seems like a bad idea. It's tough to judge the other robot's position, and if they're in their jail, you'll end up wasting your time running into him.

Getting the professors as quickly as possible seems like a good idea because they're valuable and easier to get at than the opponent's blocks.

Today, we mainly thought about overall strategy, instead of minute details such as how to pick up blocks and other mechanical issues.

Wednesday 1/5
--------
Second lecture-

Learned about legos and sensors.

Greg walks in, fresh off the plane, just in time to learn about electronics.

Started talking about strategies. Those students may not be worth much individually, but each hacker we can move from our campus to jail is worth a net +4. (4 hidden hackers) * 4 points each = 16 points if we can sort our blocks. Professors are only worth 12 for grabbing all 3. Did note that if we could put 4 professors in the opponent's jail, it'd give him -36 points. Will think about this idea later.

We're still thinking about a quick run for the professors. The problem is that a student sorter will beat it, but we'll think more. Maybe we can do both.

Began playing with legos, especially geartrains and bracing methods. Built the little motor cage that's shown in the notes.

Thursday 1/6
--------
Recitation 1

Gabor steps off the plane from Hungary; the dream team is complete.

Edwin Foo tells us about contest rules and shows us a robot from last year. Gabor checks out the bracing on the chassis. Looked at the line following array too since they said theirs worked well.

Edwin tells us to be open and share all of our ideas because we won't be the only ones to think of it. We're skeptical. Sure, someone else will probably think of the same thing, but not everyone.

Edwin also tells us we're not getting our boards until Wednesday. We were hoping for more time to work with the full kit.

We all fiddle with legos. Built our first vehicle and stuck a motor in it. It runs into the wall very nicely.

Friday 1/7
--------
Lecture 3

Learned about system control. Found out that Java VM supports threads this year (Greg does a little dance).

Greg: I'm thinking about doing a mostly predetermined strategy. We'll have feedback for block detection and collisions (with the other robot?), but I don't think we'll explicitly keep track of our position and the other robot's position and try to dynamically invent strategy. No time for the kind of robust systems we'd need for that, but we'll see. Threads will be very useful for things like detection of panic conditions and running some of the subsystems like block detection. Helps out a lot with the modularity of the design. Now we can separate navigation and block collection/sorting easily.

Started thinking about arms or grippers to use for picking up legos. Scoups and conveyor belts don't seem to work well for picking up wooden blocks off the table.

Saturday 1/8
--------

Finally, some progress. Gabor builds a prototype chassis and puts wheels on it. We also built a gripper arm that works decently and can easily be driven by a regular motor and a servo.

Started thinking about how we want to attach gears to the motors. There are some little gray pieces that could be nice because we can change what's mounted on them. Despite warnings, we're tempted to use a worm gear for some things.

Danny went to lab, he just doesn't remember what he did. He also gets us a multimeter and starts playing with sensors.

Sunday 1/9
--------

A day of rest. Gabor does research to appease his advisor. Greg works at the Tech. Danny is inspired to compose music.

Monday 1/10
--------

Danny: I spend all afternoon and evening in the lab. I have completed making two separate battery packs with on/off switches. These will be plugged into our controller board, when we get it. I obtained switches from the instrument desk, only to find out that 6.270 provided us with them. Thus, I had to redo some soldering (doh!). I plan to solder the serial line and the sensors tomorrow, making us ready to plug things into the controller board on Wednesday.

Greg and Gabor go to lab to test out our preliminary vehicle. It moves pretty fast and fairly straight, but we can't wait until we have the rest of our hardware so that we get a better idea of how the vehicle would handle in contest conditions. We also are rethinking the mechanism for picking up blocks. We may attempt to use lego beams to stick through the holes in the blocks, but we have much more design to do in this area.

Tuesday 1/11
--------
Recitation 2

Recitation wasn't especially useful. Talked about some control issues we had already talked about. Edwin also started talking about the API, which was good. Greg talked to ToastyKen later for more details.

Glued our motors to lego so that they'd be exactly 2 1/3 FLUs tall. Should make life easier. Danny also put together our serial port.

Gabor developed a mechanical block lifter that only picks up blocks with holes on the horizontal axis. Looks like it's got potential. Gabor's going to keep working on it. We're a bit worried about tolerances in the blocks being loose, because that could foul it up.

Wednesday 1/12
--------

Thought out the calling structure of our contest code. Greg started coding up diagnostics and simple code for Gabor and Danny to work with. Can't wait to get that board .

Thursday 1/13
--------
Recitation 3

In recitation, we showed off our robot to the class, as we pointed out our differential drive system created by Gabor. Edwin answered detailed questions after narrowly avoiding a car near Kendall Square.

Greg and Danny start working with the Java code. We plan to first write a short diagnostics test to read the sensors and drive the actuators. Once we can see how the sensors and actuators work with the board, then we can start coding a detailed strategy for the robot. We really wish that we had our controller boards. :(

Friday 1/14
--------

Danny: I spend the late afternoon and early evening in the lab, as I continue soldering the connectors for our sensors and actuators. Soldering and gluing for a long time can be quite tiring. I shall continue making more connectors tomorrow.

Greg continues working on the code.

Saturday 1/15
--------

Danny: I spend all afternoon in lab, creating more connectors so that when we do get the board, we can just plug things into it. I still need to make many more because I don't want to be spending too much time later on EE stuff, for I will be working on code with Greg then.

Greg and Danny spend a few hours working on the Java code, and they complete diagnostic procedures to test out sensors and actuators. We hope to be able to download code onto the board when we get it.

Sunday 1/16
--------

Danny: Another day of soldering and gluing in lab! So many connectors to make, so little time.

Greg works on code; Gabor continues to improve the robot.

Monday 1/17
--------

Danny goes to lab again. He connects up the sensors so that they are ready to be plugged into the board, when we get it. Greg and Gabor spend the evening working on the mechanics of the robot. Our block pickup mechanism works fairly well. We would like to start working on following lines, but the lack of the board prevents us from doing so.

Tuesday 1/18
--------
Recitation 4

Recitation gets cancelled because the organizers and TAs are busy trying to fix the controller board problems.

Danny: I get our controller board at 1:30pm, only to return it at 2:30pm. This is becoming very frustrating. Where we mount our sensors will depend on their characteristics, which we cannot test until we have the controller board! There is also the issue of how we will physically mount the controller board on our robot. We don't know what voltage the controller board will put out for our motors, which strongly affects our gearbox requirements.

Greg: Feeling Foo-F*@ked.

The team meets to finalize a strategy so that we can translate it into code. We discuss exactly how to implement the sensors to follow lines, make accurate turns, etc.

Finally work on mounting the servo, think about shaft encoders, played with moving line sensors more than 1 inch from the board.

Wednesday 1/19
--------

Gabor moves our middle wheels back a little bit for more stability. We reglue our axles to our motors because the hot glue just doesn't hold very well.

Greg and Danny begin to work on Java code during the afternoon, and then we find out the Handy Boards are now an option. Granted, we'll have to redo a bunch of code, but we don't mind it if we have a reliable board that won't fry.

We pick up the Handy Board at 7:15pm. We are happy to finally receive a board. We begin our C programming quest.

Thursday 1/20
--------
Recitation 5

Recitation yields no useful information. We explain to the class why we chose the Handy board; we are not concerned that we are in the minority. Edwin encourages us to "make him proud".

Greg and Danny have completed some diagnostic tests. These tests include driving forward for a certain amount of time. servo and motor tests, sensor tests, and using our robot arms to "whap" the blocks into a position for us to pick them up.

We connect the board to the robot and perform the tests. The driving distances in the test are highly variable because we have not implemented shaft encoders yet. Gabor makes more mechanical improvements to the robot.

Danny: Greg and I go to the lab for the entire night. We use the sensor tests to get a better idea of how our line following strategy will go. Right now, we plan to use an array of 5 LED/phototransistor pairs for following lines. By having more sensors, we can get a better idea of the amount of correction needed when we are not on a line. We show our robot to ToastyKen and Matt, and they are very impressed with our robot's philosophy. Now, we just need to get our ideas to work reliably.

Friday 1/21
--------

Gabor does some mechanical redesign on the gear train and the arms. He builds an arm extension that makes it much more difficult for us to miss the blocks.

Greg works on more code. He converts our old Java calibration routines into C. The next step is to code a line following procedure.

Danny goes to lab and makes the IR beacon. So much soldering! :)

Greg and Danny spend the night in lab again. We then go to Athena to work on the line following procedure. It is not finished yet because we want to be very thorough and try to catch all possibilities for the five line sensors. (although it's really a 3 line sensor + 2 for weird cases algorithm Greg adds).

Saturday 1/22
--------

Gabor spends the day rebuilding our robot into it's final design.

Greg and Danny work on more basic code tests and procedures. We get a pretty good "whap" test using the servos instead of the motors. We also start reading the shaft encoders and try to drive a certain distance. We realize that we'd like to have a braking procedure so that we are more accurate with our distances.

We go to lab in the middle of the night to fine tune some procedures, especially the "whapping" of the blocks. As soon as we have our basic procedures, then we can implement our stategies. Whap looks VERY good. It consistantly picks up the hackers and ignored the students. Everyone oohs and aahs.

Sunday 1/23
--------

Starting at 3pm, we begin a 6.270 marathon, working on our robot continuously until Monday night. We glue sensors in place and begin testing some of our basic procedures and fine tuning them.

Monday 1/24
--------
Mock Contest

Hallucinations have not occurred yet, but we are very, very tired right now. Our brains have lost simple memory recall, but we continue coding and improving our robot. We hope to participate in the mock contest, but our robot is not ready in time, although it turns out people weren't as well prepared as we thought.

Greg:Line following got to be fairly complex, and I was starting to feel like I was loosing it right before I finished, but when we put the robot on the table, it works perfectly. Put it on a line at just about any skew within reason (less than 80 degrees off course or so), and it quickly turns to the line, straightens out, and heads down it with little or no oscillation. Two constants allow fine tuning, rebound and turnpower. Turnpower is just the power to apply to our turn motor. Rebound decides what portion of a correction the robot should straighten out by after a correction, so after wandering off to the left and applying a right turn correction for N milliseconds, the robot will turn back to the left for rebound*N milliseconds to straighten out. Values between .3 and .5 seem to work well for rebound. Turn is fine at full power.

Tuesday 1/25
--------
Round I (Qualifying)

We don't qualify in our first match. We are surprised because the basic procedures had worked well many times before. It turns out that we had knocked some LEDs off of alignment during transport, affecting the line following capabilities greatly. We are greatly disappointed that after the many hours of work during the last week, we couldn't even qualify.

We start working after the round, and we don't stop until impounding!

Sometime in the late evening, we manage to score 24 points by rounding our side of the board, picking up all hackers, and dropping them in our jail. This doesn't really count for much though because the bot needed a small push to start each of its turns, just to start moving. The run takes 5 minutes, but 2 mins. of that was intentional pauses, and all of it is running at slow speeds. We're all starting to worry about battery power as we realize how quickly our bot drains its batteries while running. Hooking up a meter, we can see the voltage tick away.

Wednesday 1/26
--------
Impounding at 10:30pm!

We continue our coding. We have our basic procedures, such as whapping, line following, and turning, working fairly well. We next work on strategy code, which uses our basic procedures. Gabor and Danny work out the mechanics of our strategy and translate it into code.

At 7pm, we finally decide to get qualifying done. We only have our robot get one certain hacker in order to qualify, as we are still working on getting the rest of our strategy perfected.

Danny: Our Handy Board battery drains quite quickly. At 9pm, we realize the severity of this problem, for we are unable to drive the turn motor effectively on a low battery. Thus, we attempt the Hawker cell hack on the HandyBoard, but it does not give us enough voltage. As it turns out, we had been charging the Handy Board up to 12 V, and it would discharge down to 9 V fairly quickly. We think about putting 6 Hawker cells on the robot, but we don't think that the voltage consistency advantage outweighs the extra weight disadvantage. Thus, we decide to just constantly charge the Handy Board.

We go home at 11pm. So close. Another day and we might have done it. As is, we're running a new board untested. Wish we'd had those boards sooner. In any case, we saw ourselves score the 24 points, and we're happy that the idea worked. Wish we could show our stuff in the big contest.

Thursday 1/27
--------
Round II at 11am!

Danny: I awaken to the sound of my phone ringing. It's Greg calling to wake me up:
Greg: "Danny"
Danny: "Yes"
Greg: "Do you know what time it is?"
Danny looks at his clock, which reads 1:30 PM!!
Danny: "Oh #$%)#@$!"
Later calls confirm that Gabor slept as well.

After several days in lab, beds were just too comfortable. We all overslept and missed the second round, eliminating us from the competition. We are very disappointed. After spending a whole week of sleepless nights working in lab, we had been eliminated without even seeing our robot work in a real contest round. What a horrible feeling.

The Final Contest

We attend the final contest, even though we're out of it. We hope to demo our robot, for the whapping mechanism would surely be a crowd-pleaser. Unfortunately, by the time we go up for our demo, our batteries lack the charge to drive our beautiful robot. Power is Bender's fatal flaw.

Greg:Oh well. I was happy with the overall experience. Next time I really hope the kits will be ready before the course begins. 1 week is not enough time to build and test one of these things, unless you have an entirely mechanical design, which isn't the goal of the contest. On the positive side, I've learned a lot about realtime programming, and I wrote C code at a faster rate than I've ever done so before. (2000 lines final code in 6 days, not including all the stuff we wrote and later pruned. It's good code.