Log in

View Full Version : Can I Make Something Clear?


davidthefat
19-05-2010, 18:03
Ok, first I made the Autonomous Challenge for those teams with 2+ years of programming experienced member in their team. I never meant it to be for the teams with rookie programmers, even if your team is a veteran, the veterans leave every 4 years, so not even veteran teams. I never meant it to be accessible to rookies just like that, without them actually knowing whats going on. I remember like 4 years ago, I looked at the source of AssaultCube, I was just blown away, me being 12 did not help much either. But I still had the basics of C++ under my belt. I am not trying to brag or anything, but 4 years of programming experience is not much considering the fact that there are guys with 10+ even 30+ years of experience. But the project was NEVER intended for new programmers. I like the motive of the guys behind the autonomous SDK stuff, but really, it won't help in the long run... Building things from scratch builds character.

Programming is like any other profession: the longer you do it, the better you get. I see back at my old code from when I was 12, I just facepalm my self. It is terrible... I new how to program, sure the end result worked, but the way I did it was either redundant or just plain ol' stupid.

Yes some of you more experienced guys out there might think I may be on the same boat, an autonomous robot is just way over my head. Well the end result might not get my championships, but I can say confidently that I did not touch the joystick the whole competition.


edit: I had an Algebra 2 test today, I can now say that I think too much like a programmer... I do not get enigma stuff... I think of for loops instead...

Chris is me
19-05-2010, 18:14
So on one hand, you're trying to tell programmers to be realistic about their skill sets and what they can accomplish, but in te same breath you're saying that as a student with a few years of programming experience, you can achieve what computer scientists work on for years in a 6 week build window?

I really don't like killing childhood dreams or anything like that, but let's take this year's game as an example. I'll even let you pretend you have 1114's robot so you have as much technical capability as possible. Take an empty field. There are 3 balls on it. Which one should the robot drive toward? How accurately can you get the ball's position? What if it rolls away out of camera view? Now add other robots, how do you pick the ball that is least likely to be knocked away by a defender? How do you account for the slipping of drive wheels and being pushed sideways, accurately enough that you're not at an insurmountable disadvantage to anyone with eyes?

It's an enormous task, and while taking enormous challenges is a load of fun, are you really going to suck up your team's resources, time, and effort for your own personal goal? Perhaps if you're interested in AI, you can start simpler and scale up. Making a simple 2v2 grid and turn based game of Breakaway that you could work on AI algorithms for would be very interesting, still extremely hard, and isolated from your team's on field performance. If you like sensor work, there's still autonomous mode, or you could automate portions of teleoperated play like hanging.

davidthefat
19-05-2010, 18:17
So on one hand, you're trying to tell programmers to be realistic about their skill sets and what they can accomplish, but in te same breath you're saying that as a student with a few years of programming experience, you can achieve what computer scientists work on for years in a 6 week build window?

I really don't like killing childhood dreams or anything like that, but let's take this year's game as an example. I'll even let you pretend you have 1114's robot so you have as much technical capability as possible. Take an empty field. There are 3 balls on it. Which one should the robot drive toward? How accurately can you get the ball's position? What if it rolls away out of camera view? Now add other robots, how do you pick the ball that is least likely to be knocked away by a defender? How do you account for the slipping of drive wheels and being pushed sideways, accurately enough that you're not at an insurmountable disadvantage to anyone with eyes?

It's an enormous task, and while taking enormous challenges is a load of fun, are you really going to suck up your team's resources, time, and effort for your own personal goal?

Never said 6 weeks, I am working on it right now. I kinda see what you mean, but honestly if you don't even know how to use pointers, how do you expect to do this? But the professionals have a different goal, I am not trying to argue, just stating my opinions

Andrew Schreiber
19-05-2010, 18:27
Never said 6 weeks, I am working on it right now. I kinda see what you mean, but honestly if you don't even know how to use pointers, how do you expect to do this? But the professionals have a different goal, I am not trying to argue, just stating my opinions

So, let me get this straight, you are trying to write an AI that can solve any problem? As someone who HAS written AI systems I can safely say you clearly know nothing. If you are interested in learning I would suggest you look into writing a simple program to solve an 8 piece puzzle in a reasonable time (ie, faster than a person can do it). When you do that I have another "trivial" problem for you to solve.

davidthefat
19-05-2010, 18:33
So, let me get this straight, you are trying to write an AI that can solve any problem? As someone who HAS written AI systems I can safely say you clearly know nothing. If you are interested in learning I would suggest you look into writing a simple program to solve an 8 piece puzzle in a reasonable time (ie, faster than a person can do it). When you do that I have another "trivial" problem for you to solve.

No not any, I am a football player, so the most obvious thing for me was having a "playbook" of strategies

548swimmer
19-05-2010, 18:36
No not any, I am a football player, so the most obvious thing for me was having a "playbook" of strategies

Wouldn't you then have to touch the joystick to tell it what to do? Or might that be an alternative option to explore?

davidthefat
19-05-2010, 18:38
Wouldn't you then have to touch the joystick to tell it what to do? Or might that be an alternative option to explore?

No, I was thinking more like before the match, either have a switch board that has all these options that give the robot "moods" like aggressive, passive and what ever then just go into the match and just let it run. Or do that softwarely and have a config file

sgreco
19-05-2010, 18:51
No, I was thinking more like before the match, either have a switch board that has all these options that give the robot "moods" like aggressive, passive and what ever then just go into the match and just let it run. Or do that softwarely and have a config file

I don't know if you've ever been in the heat of elims, but you don't have time to download code. So this would only work in qualifications.

If you were around in 2008 hybrid mode sort of accomplished what you're talking about.

davidthefat
19-05-2010, 18:59
I don't know if you've ever been in the heat of elims, but you don't have time to download code. So this would only work in qualifications.

If you were around in 2008 hybrid mode sort of accomplished what you're talking about.

The thing is not uploading code, easy as just taking out an SD card and replacing with another one with different config

548swimmer
19-05-2010, 19:29
The thing is not uploading code, easy as just taking out an SD card and replacing with another one with different config

I know this year our robot's autonomous was controllable by different switches on the robot. Different combinations selected one of about eight different programs. This might be simpler than swapping out a card.

Rion Atkinson
19-05-2010, 19:33
I know this year our robot's autonomous was controllable by different switches on the robot. Different combinations selected one of about eight different programs. This might be simpler than swapping out a card.

Hows is flipping semi complex switches harder than inserting a labeled card?

548swimmer
19-05-2010, 19:38
Hows is flipping semi complex switches harder than inserting a labeled card?

Simpler may have been the wrong word. You're certainly less likely to lose switches bolted onto your electrical board than a labeled card.

AmoryG
19-05-2010, 22:05
You could always use the digital/analog inputs on the driver station. They work just fine.

virtuald
19-05-2010, 22:40
I like the motive of the guys behind the autonomous SDK stuff, but really, it won't help in the long run... Building things from scratch builds character.

From scratch then? Alright, well why aren't you programming in assembly language then?

Yes, clearly it's important to know how things work and to be able to evaluate their performance. But from scratch, really? I'm going to use std::sort() on my std::vector<> full of dynamically allocated objects full of boost::shared_ptr<> objects long before I try to write my own sort function on a raw array that I have to manage myself along with all of the silly pointers for my dynamically allocated objects. It's just not worth my time.

Once you get to the real world, you will find there is a *huge* value to generic frameworks/libraries that already exist and have been debugged and well thought out (and theres even value in some of the ones that haven't quite been thought out all the way).

davidthefat
19-05-2010, 22:53
From scratch then? Alright, well why aren't you programming in assembly language then?

Yes, clearly it's important to know how things work and to be able to evaluate their performance. But from scratch, really? I'm going to use std::sort() on my std::vector<> full of dynamically allocated objects full of boost::shared_ptr<> objects long before I try to write my own sort function on a raw array that I have to manage myself along with all of the silly pointers for my dynamically allocated objects. It's just not worth my time.

Once you get to the real world, you will find there is a *huge* value to generic frameworks/libraries that already exist and have been debugged and well thought out (and theres even value in some of the ones that haven't quite been thought out all the way).

I believe that the WPILib is more than enough generic but more than enough to pull off an autonomous mode of this magnitude. Well IDK about you, but I feel way more accomplished if I do it from scratch. I rather program from scratch using OpenGL than use Irrlicht or Ogre3d or other stuff... Builds character

Rion Atkinson
19-05-2010, 22:56
Builds character

Okay... I'm sorry. I know this is off topic. But that was hilarious.

apalrd
19-05-2010, 23:38
I rather program from scratch using OpenGL than use Irrlicht or Ogre3d or other stuff... Builds character

I was thinking of not commenting on this tread. Too much flaming. Oh well.

I would much rather use libIrrlicht then access the raw OpenGL interface. It handles so much for me, more to not write. And with games (what Irrlicht was designed for), there is already so much to write it's not really funny to think about not using existing libraries.

As I once found in a programming book, in an early chapter on simplification and thinking through problems before implementing them:

The lazy programmer re-uses code whenever possible.

The message is clear. Don't ever re-invent the wheel. It has already been invented. Don't re-code something that has already been coded, that would be a waste of your time. Use it and build on top of it. You will still learn and feel accomplished.


Since you seem intent on autonomy, why not take a mars-rover approach and have the human give the robot simple commands which the robot then executes autonomously. Tell it what its goals are, where to move (virtual playing field?), possibly where objects of importance are, and let it generate and execute the curves and paths needed to perform the task. It will be much easier then letting it think on its own, because it is stupid until you make it un-stupid. And making it un-stupid will take a lot of software, much more then you want to write. The programming time necessary to let the humans make tactical decisions while letting the robot perform relatively simple drive commands will be much, much less then full autonomy. And, you can blame someone other than the programmer when it makes a mistake. Speaking of relatively simple, what is the most complex robot project you have programmed? Nothing near what you want to attempt.

Have fun. And use third party libraries where appropriate.
And, by the way, the cRio has a flash filesystem just asking to store configuration data. Much faster then re-compiling, much easier to implement then SD cards.

davidthefat
19-05-2010, 23:49
I was thinking of not commenting on this tread. Too much flaming. Oh well.

I would much rather use libIrrlicht then access the raw OpenGL interface. It handles so much for me, more to not write. And with games (what Irrlicht was designed for), there is already so much to write it's not really funny to think about not using existing libraries.

As I once found in a programming book, in an early chapter on simplification and thinking through problems before implementing them:



The message is clear. Don't ever re-invent the wheel. It has already been invented. Don't re-code something that has already been coded, that would be a waste of your time. Use it and build on top of it. You will still learn and feel accomplished.


Since you seem intent on autonomy, why not take a mars-rover approach and have the human give the robot simple commands which the robot then executes autonomously. Tell it what its goals are, where to move (virtual playing field?), possibly where objects of importance are, and let it generate and execute the curves and paths needed to perform the task. It will be much easier then letting it think on its own, because it is stupid until you make it un-stupid. And making it un-stupid will take a lot of software, much more then you want to write. The programming time necessary to let the humans make tactical decisions while letting the robot perform relatively simple drive commands will be much, much less then full autonomy. And, you can blame someone other than the programmer when it makes a mistake. Speaking of relatively simple, what is the most complex robot project you have programmed? Nothing near what you want to attempt.

Have fun. And use third party libraries where appropriate.
And, by the way, the cRio has a flash filesystem just asking to store configuration data. Much faster then re-compiling, much easier to implement then SD cards.
Yes I see you point, but I am doing this for the educational purposes. We are all students, we are not programming a multimillion dollar project that needs to save as much man work as possible. I totally would love if there was a development kit that does autonomous for me in a couple lines of code, but where is fun or the experience in that? IDK about you, ever since I was in like 3rd grade, I started taking things apart trying to see how everything worked and put it back (some times I just render it unusable) But this is what I love, there is so much to learn. I am not working NASA or some crazy big company, that means my product will not reach a broad audience. I don't know how to explain, but this is not our job, to be a programmer. Our job is being a student, what does students do? Learn, learning will only happen if you try it your self. About your Mars Rover approach, just does not feel "right" sure if I can't fully reach my goal, may be I have to settle for less and continue on the next year, but my goal is not semi autonomous. Success is not a destination, its a journey.

gallo26
19-05-2010, 23:52
Our team programmer before he graduated suggested we made a robot that would operate on it's own will power and do whatever it thought was correct. Basically whatever he wrote the code to do. So if it were kick the closest ball, it would do that. But the robot would remember what it did, and he had 2 buttons for it. A "No/Bad Robot" button to tell it that what it did was not good and it should not do that again. And if we pressed that one too many times, he figured the robot would sit there and twitch, unwilling to do anything afraid of being reprimanded, so he suggested a "Self-Esteem" button.

I found it funny how people in this thread were talking about AIs and robots with Moods while our programmer thought that a few years back. Just something to think about

davidthefat
19-05-2010, 23:57
Our team programmer before he graduated suggested we made a robot that would operate on it's own will power and do whatever it thought was correct. Basically whatever he wrote the code to do. So if it were kick the closest ball, it would do that. But the robot would remember what it did, and he had 2 buttons for it. A "No/Bad Robot" button to tell it that what it did was not good and it should not do that again. And if we pressed that one too many times, he figured the robot would sit there and twitch, unwilling to do anything afraid of being reprimanded, so he suggested a "Self-Esteem" button.

I found it funny how people in this thread were talking about AIs and robots with Moods while our programmer thought that a few years back. Just something to think about

:D Thats funny, kind of like a dog... but eh, I don't like copying ideas so I won't do that

apalrd
20-05-2010, 00:01
1. No matter how much you think you won't learn anything, you will still learn a lot by integrating a library, especially larger ones like libIrrlicht you mentioned earlier.
2. Why not start with semi-autonomous. Get the basic routines down, starting with position sensing, and generating autonomous paths on-the-fly and following them. If you can get it to do that, that would be a stepping stone to your goal. If you just say "i'm gonna go write AI just like that" you will never get there. You won't. You need to start with more basic things and work up to that level of autonomy.

I understand where you are coming from and your motivation to jump into autonomous programming. I learned that it is easier to not jump straight in, but to write software to get you a step closer there, and eventually you will make it. For you, you would need to get closed-loop control on everything, then follow your path, then generate the path to follow on the robot-end, then write game-piece finding code, etc... It's more work then you expect.

You may be surprised just how long it will take you to get to a point where you have a robot that can go to (x,y) on command, just getting it to go there and avoid fixed field elements like bumps or the rack from 07, etc.

mwtidd
20-05-2010, 00:09
I like the motive of the guys behind the autonomous SDK stuff, but really, it won't help in the long run... Building things from scratch builds character.

I like your motive too David, but really, programming a full autonomous robot, won't help others in the long run...

With regards to building character, there is no undergraduate CS curriculum that says okay you have no education, go figure it out, then we'll talk. Don't worry it will build your character. The goal of an ADK is not to build character, but provide a platform on which to provide an education for programmers of all skill levels.

Even within programming, there are many types of programmers. I can tell you are a low-level programmer, and that's awesome. Personally I hate it and suck at it. I am better at the high-level design and architecture. Many colleges split up their CS departments into several concentrations for this very reason. So please note that what you view as building character for you, may be time that could be better spent for someone else.

That's the beauty of soft eng, you learn to utilize several people on a team and leverage their strengths, rather force them into their weaknesses. I have the utmost respect for low level programmers, because it's something I just can't do, but in the same sense many low level programmers aren't great at the managerial and high level tasks required on a group programming task. As Mark Jung the founder of IGN said "Great doers don't always make great managers" We should all play to our strengths and realize rather than one of us being right, we are probably both wrong (and right) all depending on the context.

I agree with you, that doing stuff from the bottom up will give you an experience you otherwise wouldn't have. But also realize working from an existing complex architecture could also give you an experience you otherwise wouldn't have.

For example if you were to try to break up the task your are trying to achieve right now to a team of 5 programmers (much like what would happen in a real programming environment) many things would be different. In my soft eng class I had to lead a team of 15 students, and had to learn all about their strengths and individual work ethic before I could delegate the work. There's a certain amount of character building that occurs when you work on a project and just have to trust what someone else is doing will work.

PS... If you hope to use your code in competition, please remember to open source everything you do before the build season.

Kitmor
20-05-2010, 01:32
David,
As another programmer that likes low level programming, and has programmed several simple fully autonomous robots, I'd like to mention a few things.

First of all I don't know your programming background is, if you haven't done much robot robot programming, but you have done computer programming, you will be in for a tough challenge. Because as you have probably noticed, computers and computer operating systems are very well organized, yes you have to deal with messy user inputs sometimes, but for the most part you know what you are going to get. However, once you cross over into the world of robot programming, it's a whole different story. The robot lives in the ridiculously unorganized world that we live in. Nothing is well structured, and everything is always changing. This is a very interesting challenge when you first start working with it, and it will continue to be a challenge always.

Now, another thing I wanted to say is: This is not a low level programming project. You may want to start at the low level, with each reading and understanding each sensor, and as you say this builds character, it will also help you understand what kind of information you actually get from each sensor. However, at some point, you have to start treating this project as a high level programming problem, and if you want my advice, you start that at the beginning. If you really want this project to succeed, start at the top, design your behaviors, then figure out what types of computation you need to do to achieve those behaviors, then figure out what kind of data you need to get, then figure out what kind of sensors you need. Since you are using an object oriented programming language, then you need to start developing your class diagrams. Once again you need to start at the high level and work down. Once you have a diagram of your program, that is when you finally start typing your code. And more than likely, once you get down to a certain point in the development process, you will appreciate the advantage of using libraries :)

While this may not sound like a very fun way to approach this project, if you do it this way, you will end up with much cleaner and better code. This is how professional programmers do it, and there is a reason for that. Not to get sidetracked, but for example, I am in the process of "programming" a 2D game engine, because I recently was looking for a usable one, I was unsatisfied with how they worked. It has been almost two weeks since I started the project, and I haven't written one line of code, all I have been doing, is developing a UML diagram for the project, and writing documentation. Once I am done with this stage however, the programming will take a much sorter period of time than it would if I did it otherwise.

As someone who as spent their fair share of time writing assembly code, I understand your desire to start at the bottom. And to all those people who say there is no point in that, I would have to disagree, majority. I have used libraries, and I have started from scratch, libraries are great, but only if you truly understand what you get out of them. One very common mistake with robot programming is thinking that you are getting one piece of data from a sensor when you are really getting a slightly different piece of data, and sometimes when you are using a library it's hard to tell the difference. However, if you really get down there to the low level, you fully understand your data, you fully understand what the computer or microprocessor has to do, and I believe that is important. That said, with a project this size, you can't treat it as a low level project, you have to start at the top and design down. Then program from what ever bottom you choose up. And what you will find if you really use the object oriented model is, you will be making your own library. :)

David, I respect your enthusiasm, and this is an idea that our programmers have talked about, however, only jokingly. I would love to see a robot that could run completely on it's own. You just have to realize the magnitude of this project, and make sure you design it accordingly.

-Kit

Jack Jones
20-05-2010, 07:56
Success is not a destination, its a journey.

Oh really? Then how do you know when you get there?

.

Daniel_LaFleur
20-05-2010, 08:15
Oh really? Then how do you know when you get there?

.

When you've succeeded? :p

Seriously, Success is defined by the individual. I define success by the accomplishments of the students and how motivated/inspired they become. They probably view success a bit more on win/loss, but the 2 definitions are not mutually exclusive.

Success is indeed in the journey, not in the destination because 'How you get there is more important than getting there'. IMHO

slavik262
20-05-2010, 09:12
I believe that the WPILib is more than enough generic but more than enough to pull off an autonomous mode of this magnitude. Well IDK about you, but I feel way more accomplished if I do it from scratch. I rather program from scratch using OpenGL than use Irrlicht or Ogre3d or other stuff... Builds character

Like apalrd, I was going to stay out of this ridiculous flame war, but the asininity of the above statement got to me.

First of all, FIRST is about teaching practical lessons that you can use to drive the future. You'll find that this "builds character" bit doesn't exist in the professional world. Business respects results. If your co-worker (let's call him Bob) can code something in half or even a quarter of the time you can because he used a library or something higher-level than you, your boss won't care if you are "building more character" than Bob by doing it from scratch. Bob will get the contract/raise/promotion every time. Why? Results matter, and time is money. You don't just have to work hard, you have to work smart.

Secondly, doing everything from scratch is just masochistic. This is coming from someone who used to be like you - I used to want to do everything from scratch - I was convinced my "from scratch" code would run faster and better than any library I found. But re-inventing the wheel every time has a serious cost. Try to do anything significant without a library and you'll spend ludicrous amounts of time just getting to the point where you've re-coded what the library does and are actually ready to begin what you set out to do in the first place.

I decided a few months back that I wanted to make a video game, and decided first that I'd make my own DirectX engine. Luckily, a friend of mine, who is a professional game developer, stopped me ahead of time and told me that if I wanted to make an engine, I should make an engine, but if I wanted to make a game in any useful amount of time I should use a pre-existing game engine. I went with Irrlicht, and things have been going great ever since. You know what, though? Even with an engine, you have a lot of coding to do. Thousands and thousands of lines. Your proposed AI project will be no different - coding anything useful takes a lot of code. Have you ever looked at the source of a game engine? Open up the Irrlicht source and you'll find thousands upon thousands of lines. Why would you put that additional burden on yourself? As elitist as we programmers like to be, good libraries and engines are well-thought out and coded for the most part, and you're a fool if you don't take advantage of all the painstaking work someone's already done to help you. There's a reason professional 3D graphics and audio engines are valued at thousands of dollars per license - if they weren't that valuable to other developers, they wouldn't sell at that high of a price.

Your response to this over and over, David, has been that you want to do these things for your education. Look at the posts in this thread. There are professional engineers and mentors from all over the country trying to save you from yourself. We're not trying to discourage you - we're trying to help you and teach you a very valuable lesson. Most of us have been down this road before. I've had to learn the hard way why to use pre-existing code when I became overwhelmed several thousand lines into a project. I was convinced I could make a better MFC. :p You don't realize the enormity of a project until you really start coding.

My code mentors once told me, "A good programmer can look at a library, decide he hates how it's implemented, and re-code everything from scratch. A really good programmer can look at a library, decide he hates how it's implemented, but realize the time it will save him and learn to use it."

EricH
20-05-2010, 15:05
David,

If you truly want to build from scratch, then that means that you will need to develop your own programming language. Every time you use C++ or any other language, you're putting pieces together that have already been made for you. (Similarly, building a robot completely from scratch means going at least to the ore, if not digging out the ore.) ;)

You want to further your education. But with the grades that you posted in another thread, I would suggest concentrating on your schoolwork and furthering your education in your free time. You have your whole life to learn to build libraries from nothing. But at this time, you have better things to do.

Use the libraries. Then go back after you're out of high school (and maybe college) and rewrite them from scratch. If you haven't already done so in a class, of course. Maybe you'll figure out that not using them was a mistake at some point...

Isaac501
20-05-2010, 16:21
My only real response to the first thread, and now this one is:

Why?

You have a very, very, very, very, very, very and let me add very limited sensor and compute base on a FIRST bot. After seeing the GATech Darpa Urban Challenge bot at Championships, I can't even imagine thinking about making something that has to be able to do more than just drive with 1/100th of that hardware. I saw the postulates about putting the PS3 on the bot, and even then it would be ridiculously underpowered and still illegal.

If you want to learn to program, learn to program; It's a useful skill and will be helpful in your future. Also helpful is being able to tell when an idea is unrealistic or unachievable.

Opinion567
20-05-2010, 19:41
I'm sure I will get criticized for killing dreams and hampering progress. I'm sure that to some this is also not in the spirit of first. I hope someone else has said it and I just missed it, but

creating a fully autonomous robot is STUPID. There is NO WAY you will ever program a first robot to be smarter than the average human, and I would assume teams don't have their below average students driving. The game has too many variables to consider, and if you think you won't forget something or miss some scenario then you are very arrogant. Automating some tasks can be helpful. In autonomous try whatever you want. But in teleoperated with identical machines, I guarantee you that I beat any full auto bot 1 on 1 at least 95% of the time. (5% for the time to account for the time I get stung by a killer bee and pass out)

For educational purposes, I personally think you're wasting your time but its your time to waste., If however, you honestly think you will get a full auto bot to out perform a human then you are either very arrogant, or very stupid. (or the human is comatose)

Criticize me if you want but those are the facts, and I know for a fact that other people that have read this have thought the same thing.

kenavt
20-05-2010, 19:52
I'm sure I will get criticized for killing dreams and hampering progress. I'm sure that to some this is also not in the spirit of first. I hope someone else has said it and I just missed it, but

creating a fully autonomous robot is STUPID. There is NO WAY you will ever program a first robot to be smarter than the average human, and I would assume teams don't have their below average students driving. The game has too many variables to consider, and if you think you won't forget something or miss some scenario then you are very arrogant. Automating some tasks can be helpful. In autonomous try whatever you want. But in teleoperated with identical machines, I guarantee you that I beat any full auto bot 1 on 1 at least 95% of the time. (5% for the time to account for the time I get stung by a killer bee and pass out)

For educational purposes, I personally think you're wasting your time but its your time to waste., If however, you honestly think you will get a full auto bot to out perform a human then you are either very arrogant, or very stupid. (or the human is comatose)

Criticize me if you want but those are the facts, and I know for a fact that other people that have read this have thought the same thing.

That is not his goal. He has never said he wants an autonomous robot to outperform a teleoperated robot. He just wants to develop a robot that is completely autonomous. As long as it performs basic tasks, it doesn't matter how good it is compared to a human being.

davidthefat
20-05-2010, 20:23
I have everyone's comments, I thank you for your input(s), first of all, yes, I do need to get my grades up, my mom just scolded my like 10 minutes ago after she saw the progress report... You know how Asian moms are. Like what Slavik said, irrlicht is just a 3d engine, so does nothing else for you, so obviously it would take tons of code. The main problem is my ego/pride, I know all of you can see it. My only goal here is to just let the robot do it's job, I really don't care if we win or lose, as long as it does it's job, I am happy. Sure many of my teammates might disagree if I officially declare it next year that I have been working on code for a fully autonomous robot, but is it really abour winning and losing? When it comes to focusing on winning, things get ugly FAST. I know it, Im in football, they are the biggest and meanest people on the field. LOL

slavik262
21-05-2010, 07:05
My only goal here is to just let the robot do it's job, I really don't care if we win or lose, as long as it does it's job, I am happy. Sure many of my teammates might disagree if I officially declare it next year that I have been working on code for a fully autonomous robot, but is it really abour winning and losing?

No, it's not about winning or losing, but it should definitely be about what the team as a whole wants. I'm still at a loss for why you won't first target a simpler goal (90 % autonomous where the driver just tells the robot what to do like many have already said) before going after fully autonomous. The first Apollo mission wasn't designed to land people on the moon; they built up what they could do over 10 missions before Aldrin and Armstrong set foot on the moon's surface.

pSYeNCe
23-05-2010, 17:33
creating a fully autonomous robot is STUPID. There is NO WAY you will ever program a first robot to be smarter than the average human
...
If however, you honestly think you will get a full auto bot to out perform a human then you are either very arrogant, or very stupid.


I had made up my mind that I wasn't going to answer any flame comments, but yours... I can't handle.

I read somewhere that within 50 years, a single desktop computer will have the same computational power of a human brain. Albeit, it will not have the same intelligence, but nonetheless the power will be there. You suggest that this will never happen, at least within our lifetimes. You are wrong.

Calling people names because you don't believe they can succeed is not the way that humanity innovates, the way we move forward. I think that someone who even tries this challenge, regardless of success or whether they use a library or not, regardless of whether they succeed or not, is going to be better off in the long run.

You claim someone who thinks their programming can outperform a human is either "arrogant" or "stupid". I would prefer to call them "hopeful" and "persevering".

Chris is me
23-05-2010, 18:44
I have everyone's comments, I thank you for your input(s), first of all, yes, I do need to get my grades up, my mom just scolded my like 10 minutes ago after she saw the progress report... You know how Asian moms are. Like what Slavik said, irrlicht is just a 3d engine, so does nothing else for you, so obviously it would take tons of code. The main problem is my ego/pride, I know all of you can see it. My only goal here is to just let the robot do it's job, I really don't care if we win or lose, as long as it does it's job, I am happy. Sure many of my teammates might disagree if I officially declare it next year that I have been working on code for a fully autonomous robot, but is it really abour winning and losing? When it comes to focusing on winning, things get ugly FAST. I know it, Im in football, they are the biggest and meanest people on the field. LOL

You do know you'll probably have to start all of that code over next Kickoff, no?

EricH
23-05-2010, 18:48
You do know you'll probably have to start all of that code over next Kickoff, no?
Under the 2010 rules, it was legal if it was publicly available. So all he has to do is to post it on his team's website (or on CD or some other similar place) and it's legal, assuming that that rule stays the same for 2011.

AmoryG
23-05-2010, 23:26
I'm sure I will get criticized for killing dreams and hampering progress. I'm sure that to some this is also not in the spirit of first. I hope someone else has said it and I just missed it, but

creating a fully autonomous robot is STUPID. There is NO WAY you will ever program a first robot to be smarter than the average human, and I would assume teams don't have their below average students driving. The game has too many variables to consider, and if you think you won't forget something or miss some scenario then you are very arrogant. Automating some tasks can be helpful. In autonomous try whatever you want. But in teleoperated with identical machines, I guarantee you that I beat any full auto bot 1 on 1 at least 95% of the time. (5% for the time to account for the time I get stung by a killer bee and pass out)

For educational purposes, I personally think you're wasting your time but its your time to waste., If however, you honestly think you will get a full auto bot to out perform a human then you are either very arrogant, or very stupid. (or the human is comatose)

Criticize me if you want but those are the facts, and I know for a fact that other people that have read this have thought the same thing.

So who's more arrogant, the guy that attempts the impossible or the guy that says it's impossible?

davidthefat
23-05-2010, 23:32
Under the 2010 rules, it was legal if it was publicly available. So all he has to do is to post it on his team's website (or on CD or some other similar place) and it's legal, assuming that that rule stays the same for 2011.

Yes it will be available to the public, as long as they sign up for the site and get approved... that is IF they ever get approved to join

biojae
23-05-2010, 23:44
Yes it will be available to the public, as long as they sign up for the site and get approved... that is IF they ever get approved to join

These are the rules in particular:



COTS – A “Commercial, Off-The-Shelf” COMPONENT or MECHANISM, in its unaltered, unmodified state. A COTS item must be a standard (i.e. not custom order) part commonly available from the VENDOR, available from a non-team source, and available to all teams for purchase.


<R25> Prior to the Kick-off: Before the formal start of the Robot Build Season, teams are encouraged to think as much as they please about their ROBOTS. They may develop prototypes, create proof-of-concept models, and conduct design exercises. Teams may gather all the raw stock materials and COTS COMPONENTS they want. But absolutely no final design, fabrication, or assembly of any elements intended for the final ROBOT is permitted prior to the Kick-off presentation.

Example: A TEAM developed an omni-directional drive system for the 2008 competition. Over the summer of 2009 they refined and improved the control software (written in C) to add more precision and capabilities. They decided to use a similar system for the 2010 competition. They copied large sections of unmodified code over into the control software of the new ROBOT (also written in C). This would be a violation of the schedule constraint, and would not be allowed.

Example: A different team develops a similar solution during the fall, and plans to use the developed software on their competition ROBOT. After completing the software, they post it in a generally accessible public forum and make the code available to all teams. Because they have made their software generally available, under the terms of Rule <R67> it is considered COTS software and they can use it on their ROBOT.

<R67> For the purposes of the FRC, generally available software modules obtained from open sources (e.g. professional publications, commonly used FRC community-accessible web resources, industry source code repositories, etc.) that are not specifically affiliated with individual FRC teams shall be considered COTS items, and may be used.

Chris is me
23-05-2010, 23:50
Yes it will be available to the public, as long as they sign up for the site and get approved... that is IF they ever get approved to join

That would not fit the intent and wording of the rule.

davidthefat
23-05-2010, 23:53
Now that really blows... Really is that necessary? How can they confirm that I worked on the code during the off season?


edit: so that means that anyone can take my code as their's? Thats ridiculous... Even if I put my ownership in the comments, no one is going to see the source and say "Hey David wrote that" they will see the end result moving on the field... Not cool

Andrew Schreiber
23-05-2010, 23:58
Now that really blows... Really is that necessary? How can they confirm that I worked on the code during the off season?

You know what, I had an actual response written but... please stop talking now. You don't understand what this competition is about. You don't understand what these boards are for. Spend some time lurking on these boards. Maybe spend a couple hours reading the mission of FIRST. Watch some of Dean's speeches. Maybe you can answer your own question.

davidthefat
24-05-2010, 00:08
After thinking about it, I would HAVE to rewrite my code, the circumstances of the game changes and I have to change to meet that criteria...

Chris is me
24-05-2010, 00:09
After thinking about it, I would HAVE to rewrite my code, the circumstances of the game changes and I have to change to meet that criteria...

Just remember you have to start completely over, or share your code.

The way I see the intent of the rule is to stop people from working on robots before build begins (a pretty key part of FIRST), unless you're willing to share that work with the community. This incentivises gracious professionalism by sharing work. This is a Good Thing.

Daniel_LaFleur
24-05-2010, 08:24
After thinking about it, I would HAVE to rewrite my code, the circumstances of the game changes and I have to change to meet that criteria...

You are thinking inside the box.

Consider the following ...

Write a program that inputs objects. These objects do not need to be defined until the game is released, while the base code could be created and published (albit relitively useless without the objects) before the season. The objects could be things like a map of the play field, game objects, field objects (both stationary and mobile) etc.

From there you could create a SLAM system (sensors to map whats happening within the known map) and an algorithm for object avoidance/interception ... and thus a autonomous rudementary AI (decisionmaking).

pSYeNCe
24-05-2010, 15:51
You are thinking inside the box.

Consider the following ...

Write a program that inputs objects. These objects do not need to be defined until the game is released, while the base code could be created and published (albit relitively useless without the objects) before the season. The objects could be things like a map of the play field, game objects, field objects (both stationary and mobile) etc.


This is a good idea. Sometimes in web design I'll just make a frame of the page until I get needed resources. It works quite well. You could set it up to reference some not-yet-existing image, and then just fill it in when the time comes.

The only thing is identifying characteristics of the object. That's the tough part that takes time to program, and you won't know that until you know the object.

JamesBrown
24-05-2010, 16:49
I read somewhere that within 50 years, a single desktop computer will have the same computational power of a human brain. Albeit, it will not have the same intelligence, but nonetheless the power will be there. You suggest that this will never happen, at least within our lifetimes. You are wrong.


This is really not pertinent, sure with enough time and sufficient processing power a computer may be able to out perform a person, however there are serious limitations that prevent this from being possible in FIRST. We are severely limited in our development time. We have at most 3 and a half months to design, code, and test all game specific software for the robot (assuming a team is competing at Championships, and has a second robot to develop code on after ship, also assuming that their are no rules restricting software development after ship) We are limited in our choices for sensors, and computers. While you can certainly use co-processors and sensors that are more powerful than what teams use now, you are still severely restricted by the cost accounting rules.

There are research groups at top Universities all over the world that are working on robots that play games and perform tasks much simpler than playing a typical FRC game. These teams are creating some incredible robots, however none of them are working on short deadlines, with limited hardware, and with teams driven by HS programmers with limited knowledge in the fields of Perception and Planning.

I am not trying to discourage David, or any one else, I am simply speaking as some one with more experience than most of those posting (3 years of research between RPI's Center for Automation Technology and the Rensselaer Artificial Intelligence Research Lab) and saying that this is not a practical goal, this like any problem needs to be attacked progressively. We should not be jumping from 15 seconds of unreliable Autonomy in a relatively static environment to a fully autonomous system.

Daniel_LaFleur
24-05-2010, 18:41
This is a good idea. Sometimes in web design I'll just make a frame of the page until I get needed resources. It works quite well. You could set it up to reference some not-yet-existing image, and then just fill it in when the time comes.

The only thing is identifying characteristics of the object. That's the tough part that takes time to program, and you won't know that until you know the object.

Maybe.

Creating a script file that defines the objects would allow you to create objects with varying numbers of properties. Also some objects are more easily defined (such as an initial map of the playfield) than others (placement, size, and orientation of an unknown game piece). All-in-all it would be an interesting and fun project.