Has anyone thought about or even been able to implement bug algorithms in their code for the autonomous round?
I have implemented bugs in my autonomous code every season.
When I first read the above, I didn’t know what was meant by “bug algorithms.” My first thought was, “Sure, we have had lots of bugs in our autonomous algorithms, but none of those were on purpose!”
However, with google to the rescue, I’ve now learned about bug algorithms. For others that haven’t heard of them, either, the following link might be helpful: Algorithms for Sensor-Based Robotics: Bug Algorithms
Our team discussed “tactile feedback” for use in autonomous, but decided to instead work on camera-based tracking in autonomous. Given the success of Team 40’s autonomous mode, camera-based tracking for autonomous can be extremely effective!
The reason I ask is because I’m the only programmer and have been studying bugs, but since I am using Labview, I haven’t used them. Since Calgames is coming up for our team in November, I’m working on rewriting our code in C. Can you give me a basic idea of how to use bugs? I want the robot to make it to the other side of the field to our human player, but as we learned at competition a lot of robots get stuck in the middle of the field. So i want to use bugs to go around the robots and try and reach the point that is programmed.
Any help would be appreciated!
My thoughts on bug algorithms in FIRST:
They perhaps are not so well suited for our environment:
–Most of the big obstacles on the field (robots, field elements) are moving (fast!)
–Except for the fast moving obstacles, we already know a map of the environment, which makes dead reckoning a better approach
However, I think they could be a fun way to teach beginning programmers, as they can be fairly simple algorithms to write - i.e. if antennae sensor is bumped, reverse direction. Thus, you can get some really interesting behaviors given very little coding, which is the key for getting kids interested in something challenging like programming. Could be especially effective given some of the concepts they could introduce.
Thoughts on implementation:
Sounds like a really good usage for state machines to me, at least based on the examples given in the presentation that [Ken Streeter] linked to.
I might have to try these with my own teams.
–Ryan
If bug algorithms are what i think they are, i haven’t seen any used this year, but last year KRUNCH Team 79 had an awesome avoidance program. To the best of my knowledge it involved 3 sonars and possibly some other stuff.
below are two examples I could find, it was always fun to watch
http://www.thebluealliance.net/tbatv/match/2008fl_qf4m1
http://www.thebluealliance.net/tbatv/match/2008fl_sf2m1
During our testing we were able to use our accelerometer to successfully detect whether we hit something and go around it. However, we decided that it wasn’t worth pursuing because our dead reckoning worked so well.
I didn’t read up on the bug algorithms you are referring to, but one thing I’d hoped someone might try was using the camera to find and follow the edge of the field. The white rego is surrounded by the dark carpet, and it should be pretty easy to spot, detect and use to avoid the melee in the middle of the field.
I suspect you can even find bugs in nature that have similar behaviors.
Greg McKaskle
Yo,
our team (G-FORCE) had this crazy bug in its programing. It like, had turrets. we found that if you turn the battery power on, and then off before autonomus, everything worked. cup-cakes
We used a bug algorithm(possibly the worst computer science name ever) this year–but it was based on camera data, not tactile. We ended up using a method like that in the original DARPA challenge–finding deviations from the white field surface and flagging them as obstacles. Our bot was originally programed to get to our player station or outpost, but in the actual comp it rarely got there due to too big of a jam-up in the middle of the field(still better than trying blindly to get into position and getting stuck though)
Do you know of any repositories that would provide a basic code outline for the algorithms