Team Eight/Journal
From Maslab 2006
| Maslab teams |
|---|
| Team 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · 11 · 12 · 13 · 15 |
| Team Eight's Journal · Paper |
Contents |
1/9/06
Today was the first day of maslab. We got our kit, assembled the pegbot and wrote a small program that drove it around a little bit. We had some technical difficulties with our Eden computer and OrcBoard, but with some help from the maslab staff we worked through them. We also created a schedule to help us plan our future maslab activities and discussed robot design.
1/10/06
We manufactured the base of our robot today. Hopefully we'll be able to switch to our real robot chassis soon and not have to rig up the pegbot for all of our checkpoints. We also wrote some code to use the IR sensor, but due to some calibration issues we were unable to get our robot to stop in front of the wall as we were supposed to do. We also started red ball tracking, which seems to be working to some extent.
1/11/06
Today we first fixed our IR sensor code so we could complete the checkoff from yesterday with our pegbot. After this we made our transition to our real aluminum chassis with three wheels. We don't have the real wheels yet (ordered them online) but we were able to use old wheels to make it partially work. After doing some work on our red-ball image processing we successfully passed the first checkpoint. It looks like the new motors we are using are not going to work - they are too slow. Throughout the day we worked on other image processing (goals, barcodes, etc) and are making progress on those.
1/12/06
Day 4 was a busy and productive day. On the software side we completed most of our basic image processing - ball finding, goal finding, blue-line filtering, and barcode reading. This should be all the image processing we need for checkpoint 1. We also started our module to actually make the robot move where we want it to move, which is complicated in some ways and simplified in some ways by our 3-wheeled omniwheel design. On the construction side we started working on our arm that will extend out and capture balls. Hopefully we'll be ready for tomorrow's checkpoint!
1/13/06
Today we weren't really sure what we accomplished. First we asked all the other groups what they were doing so we could steal their ideas, but none of them were doing anything interesting. So we left and we decided to reconfigure the pegbot. We put all the nuts and bolts in all the different possibilities on the pegbot. That took at least an hour. Since the pegbot is pretty strong, we decided we'd make our robot out of it, but the motors went too fast, so we decided to use servos. Unfortunately, the gears stripped in one of our servos, so we guessed that they weren't strong enough. It's ok, however, because we switched the gears with someone else's servo, so now ours works again. This girl told me to end all of our journal entries with the word "sincerely", so I'll probably try that. We decided that we'd worked on the mechanics too much, so we decided to work on the asthetics. We wrote a really awesome program to convert mp3s into .wavs so they could be played on the computer, but then we realized that we didn't have a speaker. Finally, we realized that the best thing for the robot to do was to play TV on its LCD, so we wrote a program to play dithered images on our LCD, so now at least when we get bored, we can watch TV. Sincerely, Jayant, Sean, Jon
1/14/06
We came into the lab with high hopes of passing checkpoint 2 today, however we were confronted with a host of mechanical difficulties that prevented us from doing so. We finally recieved our omniwheels and mounted them on our chassis, but the initial set of drive motors we were supplied with didn't have enough power to move our robot. We tried switching to the high torque motors, but they were much too slow. Finally, after discussing our problem with the maslab staff, we discovered that there was a motor grab bag of sorts and selected three motors that seemed to be the most powerful present. Unfortunately their shafts were bigger than those of the previous motors and thus we had to bore out our motor mounts to make them work. By that point it was too late to use the shop, so we left that task for the next day. On a more positive note, we managed to write a program to convert optical mouse movement into a distance, and our limited testing seemed to indicate that it was fairly accurate.
1/15/06
We remachined our motor mounts and wheel mounts to fit the new motors, but for some reason we couldn't get the motors to drive. We also worked on using the camera to estimate distances and calibrated it, but we have yet to test it. This motor thing is really starting to piss us off.
1/16/06
We finally discovered today that our motors refused to work since they were shorting across the chassis of our robot. After fixing this issue, we managed to drive our robot around, which was very cool. We also refactored all of our code into it's final structure, which is nice because we won't have to create mini programs to pass the checkpoints anymore. The distance estimation using the camera also appears to work pretty well.
1/17/06
We debugged all of our motion code and thoroughly tested it. We found a surprising number of bugs. In the meanwhile, Sean started machining the claw. After the mapping lecture we worked on implementing a Kalman filter and on generic avoidance/ball grabbing routines.
1/18/06
Finished implementing the Kalman filter but it remains untested. Tested wallfinding, which was a miserable failure, so we'll have to scrap that and try it some other way. Worked on map visualization stuff as well. The design review was an interesting experience, it was nice to see what other teams were thinking about and working on. We were surprised by the number of teams who were going to be using an optical mouse for odometry, but on the plus side we'll all be able to help each other make them work.
1/19/06
Today we did a lot of testing and debugging of the Kalman filter. It looks like it is mostly working at this point on sample data, but we still need to do a few things to integrate it with the rest of our mapping code. We also looked at how we're going to actually be using the data from our map, and tomorrow we'll start implementing some of that. We weren't able to actually test our code on the robot because it was in another lab where we were modifying the chassis to better hold our battery, computer, and orc equipment. We are trying to mount these things as low as possible so our camera can be as low as possible.
1/20/06
Before we started serious work on our robot today we went to the guest lecture by James McLurkin. It was really a very impressive and interesting demonstration, and it showed us both how far we have to go from our robots to have a cutting edge robot and also that some of the things we have problems with on our own robots still cause experts problems today. After the lecture we resumed work on mapping. On the mechanical side we finally got the optical mouse mounted on the bottom of our robots with some springs that hold it against the ground. The first run of our mapping code was both exciting and disappointing. It was exciting to actually see different objects on our map image, but sadly (and to be expected) the objects were often completely in the wrong place, some were missing, and there were many superfluous ones popping up. We started work on an A* implementation to use our mapping data and that should be done soon. It's exciting to see our code starting to come together as our physical construction does the same.
1/21/06
First day we've taken off!
1/22/06
Weren't able to get much done mechanically because the shop we need access to for our work is closed on weekends. We were able to fabricate the claw that will go on our arm. It seemed to work pretty well at lifting the balls up a little bit, which we'll need to bring them back into the robot. On the software side we worked on making our vision better and implemented A* to find paths to objects we can't see (or we can see for that matter) from map data.
1/23/06
Worked some more on our vision. Still having a big problem trying to recognize the line between the bottom of the wall and the carpet. After one of us worked on this for many hours he realized we didn't really need to know it...big waste of time. Implemented a faster A* algorithm and changed all of our im.getRGB(x,y) calls to work through the byte array of the hsv values. Seemed to make it run significantly faster. On the mechanical side we worked on our arm / claw mechanism and mounting it on the robot.
1/24/06
More vision work, the results look promising. We've implemented the Canny edge detection algorithm which is simply amazing, and a Hough transform (which we're still tweaking to get optimal performance). We also wrote a ton of simple movement routines that we'll hopefully be able to test out tomorrow when we (hopefully) get all of our major components mounted. We were trying to finish with the mounting by today, but instead we ended up fabricating the ball channel and attaching the claw. Actually competing in the mock competition Thursday seems possible, but we still have a lot of work to do tomorrow.
1/25/06 & 1/26/06
These two days blurred together as we were pretty much in the lab from 10 am 1/25 to early evening 1/26 preparing for and taking part in Mock Contest 1. We wanted to have as much code to test in the contest environment as possible. Sadly, our results at the mock contest were not as good as we would like. After scanning the area with our rotating camera, our robot moved almost straight into a wall and continued to drive in that direction until we shut if off. This probably was a result of some mostly untested code concerning following a path. Looking at the code afterward showed a sign error that most likely was the cause as the robot appeared to head nearly directly into the wall. We're now excited to have the robot construction done tomorrow as it appears it will be. This will be a big help to the programmers as we will be able to have the robot 100% of the time for testing and refinement of our behaviors. On the mechanical side, at this point we have successfully "permanently" mounted our mouse, battery,camera, arm, and of course wheels and motors. Other major construction (excluding small things like adjusting wire lengths, etc) should be done tomorrow.
1/27/06
Early on, we decided to design our robot from the top down, which we realized might be an issue now that we're running out of time to finish everything. We laid out a plan for getting our robot ready for mock contest 2 and the final competition, but unfortunately immediately fell behind as our batteries were low and we were unable to calibrate the mouse and gyro. On the plus side, we managed to pretty much finish the construction of our robot (except minor tweaking), so we should have the opportunity to work on our code all week.
1/28/06
Despite having received the 3.9.3 firmware update for our orcboard, our gyro still gives us random numbers. After checking the wiki, we discovered that we needed to get the 3.9.9 update, but were unable to find a TA who could do it for us. So our odometry remains in limbo until tomorrow, when hopefully we'll have better luck with this whole orcboard thing. We did manage to calibrate and test our claw, however, so we can finally pick up and deposit balls. The robot seems to be coming together, but mapping is still looming over our heads. We've written all the necessary code to create and use a metrical map, but without odometry (grrr) we can't test it. Mapping is an integral part of our robot design, so, with less than a week left, this annoying delay may cause some serious problems.
1/29/06
Today we made some good progress: we managed to upgrade our orcboard firmware and get the gyro working and calibrated. It seemed to drift a lot, but once we compensated for that it seems to work okay. We managed to make our odometry work with the combination of both the mouse and the gyro, and we're putting that data into an extended kalman filter which will hopefully be able to combine vision measurements with our odometry to create a really awesome map of the playing field. We also wrote some routines to approach and pick up balls, but we discovered that we can't really see the balls when we get very close to them. We should be able to get that working with just a few minor tweaks, however, so I remain optimistic.
1/30/06
Mock competition 2 today was a disappointment of sorts. Due to an annoying bug with our pathfinding algorithm (the angles were reversed so we went in the opposite direction of the one we wanted to travel in), we started the match by crashing into a wall. We proceeded to remain stuck on the wall due to another stupid bug (not setting a stuck variable) which prevented us from getting unstuck. Both bugs were quickly fixed afterward. Our camera rotation mechanism also broke, so we're hoping to get a new one We also ran extensive tests on our pathfinding algorithm and wrote routines to use it to approach balls and goals (since we received an ultimatum: pass checkpoint 3 tomorrow, OR ELSE. It's ok though, because we really should be able to do that anyway). Tomorrow's going to be a busy day for us...
