First day of Maslab
We made our Pegbot and soldered our Orcboard and everything, but we were stymied when we encountered an unidentifiable problem with our computer. It worked once, but then refused to start up again. What happens is: you start up the Orc, no problems. But when you flip the switch to start the Eden, there is a power surge that resets the Orc, and the Eden doesn't start up at all. Even with help from the staff, we were unable to get it working, and so cannot yet get checked off for day one.
Second day of Maslab
Got our computer fixed - apparently the power cable was shorting, which explains why it wasn't starting up. Now we've got it and are checked off on Day 1! More to come as we finish Day 2.
We're in the process of designing our robot. It's going to be entirely made of metal. Our ball grabbing mechanism will be a spinning combine that will scoop balls into the robot as we roll over them. We will have an archimedes screw to lift the balls up and then into a container and over the field goal.
We've gone to the machine shop and obtained several pieces of metal including the base of our robot. We're also in the process of designing our AI for our robot.
We've gotten our bar code reader working, and we have some really cool ideas for how our bot is physically going to work. We'll have a combine that'll collect the balls as we drive over them and deposit them into a hopper in the back/side of our bot. Then we'll have an archimedes screw-like device to lift the balls out of a chute and through the field goal.
Cool technological ideas: 1. Control our own lighting: use flash bulbs with colored filters to cast a certainhttp://www.pvponline.com/index.php3 light for each picture. Use a green flash for detecting balls: this will make the walls appear green, which will greatly enhance the contrast with the red ball, making it easier to locate. Use an orange flash to see the blue strip on top of the wall, and a purple flash to highlight the yellow field goal. It may be difficult to time the flashes to coincide with the image capture, but it should be workable.
Update: we've gotten a lot of free, used disposable cameras from Walgreens. We can harvest the flash systems from them to use in our bot. Total cost against our limit: $0 :-).
2. Raise the camera on a boom 3 ft up. By having the camera that high up, we can point it down and get a (relatively) birds-eye view of the field in front of us. With a wide-angle lens, we can see over walls 5 feet in front of us. Then, if we put the camera on a servo, we'll be able, with 2 quick snapshots, to get a view of everything within 5 feet of us, in a 180 degree arc. This also would reduce the problem of obstructed objects in the viewing field: we'll be seeing walls from the top, which means that they won't block balls that are behind them. And because our camera is looking down, we'll never see half of a ball in the distance, so that'll never throw off our viewing algorithm.
We plan on raising the camera in a way similar to how a telescoping radio antenna works: we'll have three concentric truncated cones, where the top of the outer one overlaps the bottom of the inner one. Basically, when you pull the inner one all the way up, it'll drag the next one with it; when fully extended, it'll form a cone 6 inches in diameter and 30 inches high. That should be fairly stable, considering there won't be too much weight at the top. All we'll put on top will be our camera, along with the servo it's mounted on.
Here's the tricky part: extending the boom. If we can't find a good way to do this, by Monday night at the latest, we'll drop the whole raised-camera idea. The way we'll extend this telescoping boom would be with some pneumatics: have a sealed, telescoping cylinder in the middle that, when filled with gas, will extend, thus raising the boom. We might use a CO2 cylinder, or maybe a nitrous oxide canister for this - just break the seal on the canister, and the gas will expand, thus filling the pneumatic cylinder. We think that these things can be bought ready-made, so if we can find them for a good price then we'll go for it. Otherwise, we'll stick to a conventional camera approach.
That's it for now, that basically what we've come up with so far.
Technological issues aplenty. Rgb2Hsv has been giving us issues, and now our Orc Pad stopped talking to our Eden. So we can't see, and we can't move. And all the TA's are gone, so there's no one to help us. So I'm filling out our journal in the meantime.
So it turns out that one pin was loose connecting our PICs to our Orc board. Yuran pushed it in firmly, and it worked. Three hours of debugging + one loose pin = lots of frustration. After getting our board & camera working, we got checked off with no substnative changes to our code. We just had to change some wheel parameters, and that was it. Guess we did something right after all. Time to go home and code in a better environment.
We've been discusing our boom idea a lot. We've been considering different ways to lift the camera including gas canisters and rachetting mechanisms. We've started to work on writing our vision algorithm. We are going to keep track of the width of each object we are interested in and return the position of the object with the largest width.
We've abandoned the boom-mounted camera approach for one that we know we can get working in time. We're changing to an FSM approach in which we'll find all the balls we can see, and then wander pseudorandomly until we see some new territory or new balls.
Specifically, we'll find all the balls we can see, until we fill up on balls, at which point we'll seek the mouse hole instead of red balls. Either way, if we can't find our target, we'll follow walls until we find new stuff. Also, we'll use the exploration round for building a map of which barcodes can see which other barcodes and which can see mouse holes, as described in lecture. So we'll combine these two approaches into an FSM that should enable us to reach most of the territory on the field.
Also, we've changed our physical idea slightly: we're having the balls loaded almost directly into our Archimedes' screw, which will dump them straight out into the field goal. This reduces the number of balls we can carry to 2 or 3, but it makes it easier to machine. However, if we add a shaft encoder to the screw to figure out how far it's turned, we'll be able to store balls in the screw, thus increasing our ball capacity by a lot.
The chasis and combine are in the process of being built. We are also in the process of writing our final movement and vision code. We will search for red balls and yellow mouseholes and will go to the closest one as determined by the horizontal size of the object we are looking for. We also search for the blue strip on the top of the wall and remove everything that is above it.
We've been making some process in both the coding and the building of our robot. We havent really been working together so we dont know how it all fits.
We've done a lot of work on the movement algorithm and the vision code. Getting a little lathargic when it comes to working. Need to get back in gear.
We encountered some problems during the mock competition. We need to add bump sensors to make sure we do not get stuck on walls. We had difficulties running our code as it initialized multiple camera objects which caused errors. Also, the lighting in 26-100 caused problems with the vision code. We need to tweak the threshold values for red, yellow, and blue so that it works in the different lighting.
We really need to buckle down and start finishing up our robot. We scrapped most of our code and are working on rewriting it. The engineering people will be spending a lot of time in the machine shop to get our robot close to its final form.
We have come a long way since the mock competition. The chasis and combine are nearly complete. Eden, the orc board, and the battery are now securly attached to the chassis. The combine system is almost complete. We still need to adjust the position of some of the gears so that they rotate smoothly. We also built a bumber for the sides of the robot so that it can detect collisions with the wall. We fixed several of the bugs in the vision code and have determined new threshhold values for the colors. They have yet to be tested in the actual play field however. We need to finish construction of our Archimedes screw and the attachment of the break beam sensor which will determine when a ball has been picked up.
Afternoon update: Now that the mechanical guys have given us a working bot, we've finally been able to test out our code. It doesn't work, but we gained some valuable insights that should let us get a lot of work done tonight.
We've been working out bugs in the vision code, and doing some math to make our docking code really sweet. Hopefully it works. When it sees a mouse hole, our robot should turn sideways (but keep the camera looking at the goal) and strafe. Then, when it reaches the correct point straight in front of the goal, it'll turn towards it and move in to score. We'll see how well it works tomorrow in the mock contest.
http://www.pvponline.com/index.php3
And bugs are getting worked out of the visioAnd bugs are getting worked out of the vision as well. Finally worked through all of the Exceptions, hopefully no new bugs will show up. Thats all, folksn as well. Finally worked through all of the Exceptions, hopefully no new bugs will show up. Thats all, folks
Well we competed in the mock competition. Our robot didnt actually move though. Whttp://www.pvponline.com/index.php3e took it back to the lab and realized that our motor values were too low and our robot was too heavy. That's what happens when you have 4 hours to run the code on your robot before the competition I guess. We have also decided to scrap our movement code entirely... again. We're now implementing a much simpler FSM with random movements and collision detection. Hopefully this will work better than our absurdly complicated algorithm we had before.
We've completed the combine system both mechanically and codewise. The bump sensors are working. The random walk FSM algorithm has been completed and tested a little. Still in the process of testing the entire code package. Still need to do some construction on the ball holder and archimede's screw. Hopefully we can get it all done sometime early tomorrow.
Worked overtime last night and early this morning to try to get this thing finished. We can now successfully navigate around obstacles to get to balls and field goals. We've added a funnel to the front of our combine so widen the area of collection. Attached the holding pen for the balls after they go through the combine and the gate that will eventually release them. Also added some bump sensors on the rear of the robot.
Competition day. We didnt do as well as we had wanted to because we didnt get the chance to calibrate our color thresholds fully and basically didnt see anything as we wondered around.