|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
||||
|
||||
|
A Reminder of Simplicity
To all teams using the IR beacon to knock over the 2x multiplier, I am interested in what algorithms you used to get there, and how they worked. During the build season I myself experimented with several, using the EduBot, of a wide range of complexity ... and as I was about to decide on a very complex, trig-enabled algorithm, one of my mentors suggested I use a simpler approach. It turned out to be quite elegant, really.
I mentioned it before on CD (and was told it would never work!), but here is the basic premise of it: We have three IR sensors housed in a metal casing lined with black corrugated cardboard to reduce internal reflections, and have a small, adjustable vertical slit in each. The sensors are aligned so that one is put facing the right, one the left and the other forward (each housing box can be turned a given angle to adjust just when the sensor "sees" the beacon ... this can be used to hit the other team's ball, just ours or both). As we put the robot down, we hit a switch to tell it which beacon type to look for. Then, when auto mode starts, the robot drives forward until either the left or right sensor "sees" the beacon, whereat the robot stops, then turns either left or right accordingly until the center sensor "sees" the beacon, at which point we know we are facing the beacon. Here the robot moves its "tusks" and its "arm" to a position so that we can knock down the ball, and then it drives forward for a short burst of time. It is worth noting that this arrangement lined us up with the beacon *every* time, and the only issue was with coordinating the "tusks" and "arm" correctly ... which by the end of the competition, I had worked out rather nicely. It is a simple, uncomplex algorithm. We disgard the servo setup entirely, and just use three sensors. However, its simplicity makes it work fast and reduces the liklihood of either mechanical or programming failures. I'm interested in finding out how others modified the setup we were given, and to what success. |
|
#2
|
||||
|
||||
|
Re: A Reminder of Simplicity
That is a great way to do it! At one point my team had 4 servo sensors on the bot, but eventualy we went down to the old 2. We didnt do any real changes in what first did other than almost compleatly rewriting the code, making minor changes in the way the sensors are positioned on the head. We do have a very overly complicated navigation system that is completly untested on the frc! How have they been working at the comps? We cant wait to test ours at buckeye!
|
|
#3
|
||||
|
||||
|
Re: A Reminder of Simplicity
Quote:
|
|
#4
|
||||
|
||||
|
Re: A Reminder of Simplicity
Mtrawls
great thinks mind alike! we do exactly the same thing, except we us a yaw rate sensor integrated to give relative heading to measure the turn right or left it works extreemly well also - we dont use interrupts for the IR sensors - if you connect them to rc_dig_in01 and 02 there are interrupt flags that get set if the sensor toggles the input pin - all you have to do is poll the flag, see if its set, and if it is then you know the sensor saw the beacon (and you clear the flag in SW) we did notice the sensors pick up stray triggers once in a while, so we wait until we see it in the SW loop 3 times in a row (about a 1/8th of a second) great job - simple things work the best. |
|
#5
|
||||
|
||||
|
Re: A Reminder of Simplicity
Quote:
Quote:
|
|
#6
|
||||
|
||||
|
Re: A Reminder of Simplicity
Our bonus ball mode is completely untested. We initially were going to do line following, but lost them due to space and and weight. Our current setup is driving straight and turning.
We probably will never do that, as we have a hopper on our 'bot and want to be there to catch 'em all. (And, yes, we can catch all of them.) |
|
#7
|
||||
|
||||
|
Re: A Reminder of Simplicity
In keeping with simplicity:
Why not just use dead reckoning? In general we have observed that the more complicated an auto mode gets, the less accurate it gets, and that extends just as much to sensor using robots. With some thought you can set up a really easy to maintain and tinkerable state machine to adjust motor values, and from there its just some testing to get it to work right... A lot of people stopped by our pit in Sacramento and commented about how simple our idea for knocking the ball off is (a fiberglass whip on a spring, lowered by a pneumatic cylinder), and it kinda surprised me. Simple mechanism means a simple program, and that's why we were so successful in hitting off the ball (until day 2 when one of the motor transmissions got changed...that's the downside of sensorless automodes =\ ). |
|
#8
|
||||
|
||||
|
Re: A Reminder of Simplicity
Quote:
here see that little platform inside the A-frame towards the top? that holds 4 fixed-position IR sensors each at a different angle.... makes life easier |
|
#9
|
||||
|
||||
|
Re: A Reminder of Simplicity
I don't think anyone at the st. louis regional used ir for competition (correct me, team members, if I'm wrong). Most of the successful autonomous modes were dead reckoning, although a few line followers got close (hit the frame around the bonus balls or some other such small failure).
|
|
#10
|
||||
|
||||
|
Re: A Reminder of Simplicity
the problem with dead recogning is that as your bot gets wear and tear during the matches, and your batteries are at different levels of charge, the speed and direciton your bot will run will change enough to make you miss the ball
the IR sensor scheme the originator of this thread created solves part of that problem - no matter how much the forward speed of your bot changes, it will know when its reached the beacon off 90° to port or starboard - its will know where it is on the field at that instant our bot is very similar - and since we get to the ball in about 5 seconds, it would be a waste of time to just sit there for almost 10% of the match so we back up and turn towards the drivers, turn our front roller on and drive through the field of freshly fallen balls to try and capture some of them. dead recogning is ok if you only want to go straight for several seconds and do nothing else - but I have to disagree with one of the previous posts - if you implement your sensors correctly then your bot will get the ball more reliably, not less and it will be able to do other things - and compensate for stuff like, oh I dont know, the opponent teams bot getting in your way and you have to push it backwards on the way to the release ball? :^) |
|
#11
|
||||
|
||||
|
Re: A Reminder of Simplicity
We use a fresh battery in every single match, no exceptions, and test on fresh batteries at the lab, so thats not a problem.
Second, the only serious wear problem we've had has been tread (we use waffle tread, it goes quickly), but surprisingly, it made no difference. The program we took from our lab, with our creaky, worn practice bot with almost no tread left worked perfectly on our smooth practice bot with new tread. I maintain that sensors will only complicate the process, though if you do not have a practice robot and no way to test and calibrate dead reckoning, it can be difficult. A sensor program could conceivably be written and used with no testing... |
|
#12
|
||||
|
||||
|
Re: A Reminder of Simplicity
where do you get a fresh battery from in every match of the elimination rounds? they take about an hour to recharge after a tough match and they only gave us two batterys?!
your right about having to tweak the DR auton modes - we did not get any real testing time on our bot for auton before we shipped it - but by the end of the day friday we were hitting the release ball dead center every time - and all we use to naviagate is the fixed IR sensors and one yaw rate sensor (i mentioned this above) it seems odd that you would be against using sensors. Put a pair of winter gloves on, put on a blindfold, and try to make a peanut butter sandwhich in your kitchen with YOUR feedback all turned off. Sensors provide feedback - feedback is information - more information is always better than none :^) |
|
#13
|
|||||
|
|||||
|
Re: A Reminder of Simplicity
I agree. If you do your sensors (and code) right, You don't need to calibrate between every match. We have a routine that we run ONCE, during the 7 AM practice round, and base everything on that.
And I'm not worried about other 'bots. If we go against a wall, the wall looses. If we a go against a bot, who do you think looses? |
|
#14
|
||||
|
||||
|
Re: A Reminder of Simplicity
Quote:
Although I do agree that dead reckoning has serious drawbacks. Feedback is important. Something of a hybrid could work. Our team had light sensors mounted facing our wheels. Weglued circles to our wheels that each had about 100 black and white stripes. The light sensors gave us feedback on the transitions between white and black as the wheels spun and gave us accruate wheel counts that we used to drive straight. (Our drive train was...not cooperating and veered to the left in autonomous when told to go straight). Although we didn't use it to attempt to hit the 10 point ball, you could use these wheel counters to tell you exactly how many revolutions you've made at any point in time, and if you know the circumference of your wheels and the distances on the field, you could do some pseudo-dead reckoning with feedback. =) I think that would be the best solution for a lot of teams who, like ours, may have had trouble with designing a system for using the IR beacons. The wheel counters were easy(ier?) to work with and could give you feedback. Because a robot without feedback is a robot out of control. =) (Our team didn't have any actual physical mechanism on the robot that would have been able to knock off the 10 point ball, in case you were wondering why we never tried. That and I just thought of this idea while writing this post. ) |
|
#15
|
||||
|
||||
|
Re: A Reminder of Simplicity
We had about 8 batteries at competition this weekend, and kept cycling them through our three chargers...during elimination matches we ran close to out, but thankfully we didn't have to play any tiebreak matches and stayed powered through it all. If all else fails, I am almost positive another FIRST team would offer a spare battery (especially if they are not in elimination matches) if you are out of fresh ones. Even then, we had about 40 minutes between matches, so if you have 3 batteries you could have stayed powered through preliminaries...sorry if I am discounting teams that don't have the battery supply we do.
Perhaps my aversion to using sensors comes from the ease of using the whip to tap the balls off the tees. We don't have to turn and face into the ball; rather we run along the wall and in fact use the wall somewhat to correct our angle and hold straight. We are planning on putting a light sensor to detect the line and tell us where to stop to only hit one ball, but any more sensors would have only put more hardship on us programmers (we had enough to think about on the arms). Another problem is serious sensor malfunction. Team 60, the team we collaborated with this year, lost in semifinals because their proximity sensor that was counting gear teeth was malfunctioning. Their autonomous mode, based on this sensor, then flung them into a wall, and they lost a pneumatic fitting, and all pressure. Eventually they lost the match and couldn't get repaired in time for the next one. With our dead reckoning, we can tap the wall a little hard, but we feel safer than if we were letting the robot decide things more. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Just a reminder - BACK YOUR CODE UP! | wun | Programming | 0 | 23-02-2004 21:59 |
| LAST REMINDER - Discounted DUEL ON THE DELAWARE | John Larock | Off-Season Events | 2 | 17-06-2003 13:00 |
| Reminder about CNN | archiver | 2001 | 0 | 24-06-2002 03:34 |
| Reminder...... | skrussel | General Forum | 0 | 28-09-2001 17:16 |
| REMINDER! | Clark Gilbert | Chit-Chat | 6 | 05-08-2001 10:26 |