Programmers: I Have A Challenge For You

Next Year, no matter the game, I challenge you to make your robot fully autonomous. That means autonomous during tele operation period too. Anyone up for that challenge? That would challenge your skills and dedication to the robot. That means no more just drive up 3 feet, kick, repeat type of coding. It would have to be a lot more thought out and will have to use real life robot coding. Its not really a robot if its not autonomous, its just an over glorified RC car if its human controlled. And if you are still sceptical, FIRST pretty much writes the libraries so that even a guy that picks up a programming book can code the robot in a week or even less… Well IMHO you can’t learn programming from a book, sure you may learn the language and syntax, but you have to have experience to actually program. Programming comes with experience, and the way FIRST makes it, you get minimum experience as a programmer programming these robots. I will be announcing to my club next year that we want to try this. Just post your opinions and I will add to the list if you want to take the challenge.

Teams That Are Willing To Take The Challenge:

*Team 589 (Just Me As Of Now)
*Team 33
*Team 2503
*Team 1086

I will give you an internet high-five even if you just attempt this.

I’m not a programmer, but I do know that because of the was the field system works, you will have to have the program read that it is now in teleoperated, and then begin a program.

But why not, instead of fully autonomous, make it to where it is mostly autonomous. Meaning that the only thing that isn’t autonomous is driving across the field. So you drive a long distance, flip a switch, and then it does the rest on it’s own? I’m not a programmer, but I have a feeling FULLY autonomous may be a little to hard. (My programmer has less hair than he had at the beginning of the season… )

Just my $0.02

Good luck!

Was thinking of the switch too, if the robot is acting really dumb and going away from the action, you can flip a switch to get you into the real teleop mode… Teleop mode is way easier to code than auto so it will be a breeze


That would be pretty challenging. I think it would have to involve AI… One would have to code in game strategy, get the robot to line the ball up to the goal, avoid penalties, use the camera to identify balls and enemy robots…

:rolleyes: Don’t use the word “ball” FIRST come up with some wacky games…

During this off season I am going to be working on finishing up my ADK (autonomous dev. kit).

The plan is to try to have a fully autonomous robot as a proof of concept.

My personal goal is to make a programming platform that even rookie teams could use to have a decent autonomous.

The more teams we get to have autonomous the more FIRST will work to help us improve it (personally i would love for them to add the zigbee into the KOP so robots could communicate).


Thats great, but what language(s) will it be in? Because I think if FIRST will distribute it, you probably will have to port it to the other languages

I don’t think the drivers would go for that otherwise I would SO do that! :rolleyes:

I’m nearly certain that 1756 won’t be doing full-autonomous the whole match. That is, unless that’s the challenge for next year. If it is the challenge next year, well just see how that goes. As always, we will probably try to incorporate autonomous actions into teleop.

Best of luck to you if you can run autonomous the whole time. Your drivers will look pretty useless, though.

I have some pretty radiacl ideas, I wanted to do full autonomous this year but never got to do it since I was new this year, so no one really listens to you… I think I want to make a 4 legged robot to go to the competition legally by my senior year

A programmer mentor and myself talked about a fully autonomous robot for 2008 Overdrive. But we couldn’t convince the other mentors or the students to go for it. He had most of the code written for it by the end of the 1st week while we were still deciding what we wanted to do.

Heh. That’s a big challenge. Not impossible, but a big challenge indeed.

If I had a chance to do this for total fun (i.e. not in a competitive sense where points matter ergo not a regional), I think it would be fun though I think it would be really hard to sense the environment around the robot. There’s only so much ultrasonic sensors, touch sensors, and a camera can pick up. I’m sure there are more advanced sensors, but there’s a point where the robots look less and less like FIRST robots and more like DARPA cars with LIDAR and 5 different cameras plus infrared imaging.

Do I think it’d be neat? Yeah. Easy? Nope.

About the most automated thing I’ve done for the teleoperated mode is let the robot put our robot’s kicker in the correct position and backwind the rope we used to bring the kicker back. Probably not the autonomous we’re thinking of, but thought I’d add it in.

I still think it’d be fun. I want to play with some ultrasonic sensors and the camera during the off-season just to have fun and learn something new about autonomous.


Im thinking of using a couple IR sensors (one for each side) and a couple ultra sound ones too to track the closer stuff. And a couple gyros (yes couple) to keep the robot from going all crazy looking like a drunk driver or something, it has to go straight at least

I’ve done one thing with one gyro and it’s worked quite well. I didn’t actually use it for anything, but what it showed was quite neat.

From what I know, using IR/ultrasonic sensors will just give you a relatively blurry image of the outside world. What you do with that data is the hard part. How do I differentiate between a robot, a wall, and a goal? Friend/Foe? Acquisition of game element?

I know of ways to do it, but it’d be complicated. As I said earlier, it’d be challenging. Would I have fun doing it? Oh yeah…


A wise mentor once told me:

The smart have a great understanding of the things they know.

The wise have a great understanding of the things they do not know.

David, as a teacher I would NEVER stop a student from pursuing a project as ambitious as this. Based on your other threads, you definitely strike me as a VERY smart young individual. My only word of advice is that I hope there can be a very wise (and hopefully smart!) mentor to provide some wisdom along the way. I guarantee it will be the difference between having the most hard-working, fulfilling and successful 6-weeks of your life, versus a few moments of undirected enthusiasm followed by sustained frustration, eventually giving up, and resorting to playing Madden on your hand-held.

If you can find that mentor and successfully work with them, I’ll certainly give you an internet high-five regardless of whether you actually produce a functioning fully-autonomous robot…


1024 could have done that in 2008.

I don’t see why I should do this when I could spend my time winning instead, especially because game pieces are basically in random locations and 5 other robots are on the field too. Implementing fully autonomous control, with any semblance of strategy, isn’t going to happen.

Well one of my programming mentors is very supportive of my ideas, I wanted to used C++ this year, but he didn’t trust my skills to pull it off since I was brand new and just a sophomore, but by the end of the 6 weeks, I have managed to get his attention and hes letting me use C/C++ next year. the other one thinks I will get extremely frustrated or something trying to use C++ and move back to Java. I have learned C++ as my first language and have been using it for 4 year, I don’t think I will give up on it. Yea both are great mentors, but I have yet to deliver this message to them yet. I told them to let all the other programmers to code in Java and I will just out perform them with my C++ code.

Essentially what I was going to say. Ambition is never a bad thing - it should always be a reward to go above and beyond. However, I think you underestimate how much work fully autonomous code is. Granted, I’ve never done it myself, but imagine how much you have to do. I’m not doubting anybody’s programming ability, but you have to face the facts: even if you do extensive work during the off-season, you only have six weeks to tailor all of your code to a game. Good AI that adapts to the current situation is difficult enough to write by itself. Making a robot respond to it adds another very large layer.

A much more practical goal would be semi-autonomous systems which would let the robot “help” the driver in accomplishing certain taks, i.e. lining up for a shot.

It’s amazing how much automation creeps up as the years go by…

In 2001 (Back in the day of PBASIC) we had a robot that could balance itself on the ramp with the push of a button. A weight on a pot was all it needed. That’s autonomy, however basic it is.

Then, in 2003, FIRST added Autonomous mode. I’ve heard stories from former members and mentors of back then (“Back in 2003, the robot entered Autonomous and hit a wall at full speed”) and how bad it was programming it (“We had 63 bytes of RAM and spent more code caching things into EEPROM to save RAM then actually doing stuff”)

In 2004 we had a decent processor and real autonomous programs began. This year, we also had an automatic transmission (autonomy in Teleop). It automatically shifted based on RPM’s of the wheels vs output speed,

Several of our other robots have had semi-autonomy in Teleop. 2007 had some pretty sweet arm software that I would say goes beyond the “rc car” definition (you could slide the end point in and out and it would calculate joint angles on the fly, as well as make sure it didn’t hit itself on the way). This is my personal favorite robot of ours, so I went and wrote a LabVIEW demo to illustrate automation of the arm (combining some elements from the 2005 game, notably the ability to store game pieces).

This LabVIEW demo was known as “the belly manager” and basically allowed the operator to perform many tasks with only 4 buttons. The total actions: Get Floor, Get Human, Score Hi, Score Lo, Hold Hi, Hold, Belly1, Belly2, Belly3 (get and put belly), as well as several intermediate states. The operator requested a Score Hi, Score Lo, Get Human, or Get Floor and the robot automatically stored game pieces in the belly when slots were available, and always tried to either empty or fill the claw. Based on states of the claw or belly slots, it would either hold the arm in a high position that makes manipulation easy or fold down to a lower position to be more stable. With the single press of Score Hi or Score Lo, it would execute a sequence to move to the setup position (possibly many steps depending on starting position), “stab” the goal, drop the game piece, and return on a path that was as stable and efficient as possible. The “robot” would try to determine the operators desired action (score, retrieve, move, etc) and act accordingly. While this never exited the simulator, this kind of automation could easily be incorporated into FIRST robots.