Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Programmers: I Have A Challenge For You (http://www.chiefdelphi.com/forums/showthread.php?t=84797)

JamesBrown 14-05-2010 08:32

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by kamocat (Post 962078)
I don't understand how we can get students interested in new engineering fields if we don't expose them to it.

I don't think it is necessary to directly expose the students to the fields, what FIRST does is tease them with a little introduction, and let them find their way from there.

We can't just force teams to build more autonomous robots and force them to function in more dynamic environments. We need to keep in mind that this is still a high school program, and the majority of high school programmers (and a lot of the mentors) don't have the necessary skill set to build and control sophisticated robots. There were teams this year, including very experienced teams (even original teams from 1992) who did nothing in autonomous. This year you could score >75% of the time by just driving forward in the front zone, and yet there were teams that couldn't do it. There were teams in 2005 that could not knock the hanging tetra off, and in 2008 that could not drive forward to cross one line. These are extremely simple tasks that teams are just not doing. Whether it is due to lack of time, programming experience, or anything else it is obvious we are not ready to make autonomous any harder.

mwtidd 14-05-2010 13:33

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by JamesBrown (Post 962103)
the majority of high school programmers (and a lot of the mentors) don't have the necessary skill set to build and control sophisticated robots.

I've attatched a link to the trinity fire fighting robot contest.

This has not only a high school division, but also a junior division.

http://www.trincoll.edu/events/robot/

I think what is holding FIRST back is the way it encourages autonomous. First off unlike trinity, it is not really a requisite. As many have said the advantage of having a strong autonomous robot has been reduced greatly recently, which confuses me seeing as they invested in the cRIO. In the past we were given 15 seconds, and a good autonomous gave you a distinct advantage but did not at all guarantee a win (see 2004). Now we've been given c++, java, and labview but we're only allotted 10 sec, and in this game 3 points if you were lucky.

because of this movement it has forced a priority shift almost entirely to the engineering, which is why I believe you saw almost no autonomous this year... making programming an "if we have time" sort of thing. I would like to see a shift back to the 04/06 style autonomous, to give us and more importantly our teams the incentive for making impressive autonomous robots.

kamocat 15-05-2010 16:39

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by JamesBrown (Post 962103)
I don't think it is necessary to directly expose the students to the fields, what FIRST does is tease them with a little introduction, and let them find their way from there.

I guess I just don't understand how that helps create more engineers. We've all seen Bill Nye the Science Guy, but does that make us want to be scientists? Do we actually pursue science with a passion due to him, or do we find inspiration in the technology we create?
With the millions in scholarships and the direct contact with professional engineers, I don't see how FIRST could justify saying "engineering is cool" and leave it at that. Connections, education, and experience are what help people become professionals. If you were a student, would you be interested in a robotics program if you only knew of it as a hobby, if you had no idea how to actually do it as a profession? If FIRST was just a game, would it be a fraction as important as it is? It would only be a sport.

Quote:

Originally Posted by JamesBrown (Post 962103)
We can't just force teams to build more autonomous robots and force them to function in more dynamic environments. We need to keep in mind that this is still a high school program, and the majority of high school programmers (and a lot of the mentors) don't have the necessary skill set to build and control sophisticated robots. There were teams this year, including very experienced teams (even original teams from 1992) who did nothing in autonomous. This year you could score >75% of the time by just driving forward in the front zone, and yet there were teams that couldn't do it. There were teams in 2005 that could not knock the hanging tetra off, and in 2008 that could not drive forward to cross one line. These are extremely simple tasks that teams are just not doing. Whether it is due to lack of time, programming experience, or anything else it is obvious we are not ready to make autonomous any harder.

In order to make autonomous more common, not only does its treatment within the game need to change, but its ease of programming. Programming autonomous should be no more difficult than planning a field trip. However, that's a community-based project. At the moment autonomous may be difficult for most teams, but that's something we can change. Do you want to help?

artdutra04 15-05-2010 17:20

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by kamocat (Post 962269)
In order to make autonomous more common, not only does its treatment within the game need to change, but its ease of programming. Programming autonomous should be no more difficult than planning a field trip. However, that's a community-based project. At the moment autonomous may be difficult for most teams, but that's something we can change. Do you want to help?

How do you make programming autonomous easier? There are thousands of different FRC robot configurations, every one different from the other. Different drive trains, different mechanisms, different sensors (or lack thereof).

Programming fully autonomous (or semi-autonomous) robots is difficult and takes a long time. It takes a lot of processor power, a lot of memory, a lot of sensors to make them "smart". Odometry calculations, matrix frame transformations, filtering of sensor data (such as with Kalman filters), forward/inverse kinematics, environment mapping, navigation and pathfinding/planning, etc. This is all high-level stuff that isn't even approached until the second half of an undergraduate engineering degree, and would be way over the heads of high school students.

And then to package this into a modular software package applicable to any FRC robot with simplicity that would make Apple jealous? If there is anyone who is seriously considering the effort to create this, they're probably in industry right now doing it to earn money, either for an existing company or a start-up they founded, because that final product would be worth serious $$$.

The only way you'd ever see any kind of really advanced autonomous or even significant-majority autonomous action in FRC is to use small, nearly identical robots. Shift the focus away from mechanisms and towards controls and programming. But this would cause major outrage in the FIRST community. Many of the students and mentors currently involved like to be involved because of what FRC currently is; there are plenty of other competitions where mechanical design takes a backseat to programming and controls, like the autonomous soccer competitions or Trinity Firefighting.

That being said, if autonomous in FRC was extended to 20 seconds long, and if there was a significant scoring bonus for achieving tasks during this time (especially with an easy task, a medium task and a difficult task, all rewarded appropriately with points), then you'd see a lot of teams out there with advanced autonomous modes.

Increase the return-on-investment for points scored in autonomous mode versus the man-hours of effort to get those points, and you'll see a lot more teams doing a lot more advanced autonomous modes.

Tom Line 15-05-2010 20:09

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by lineskier (Post 962138)
I've attatched a link to the trinity fire fighting robot contest.

This has not only a high school division, but also a junior division.

http://www.trincoll.edu/events/robot/

I think what is holding FIRST back is the way it encourages autonomous. First off unlike trinity, it is not really a requisite. As many have said the advantage of having a strong autonomous robot has been reduced greatly recently, which confuses me seeing as they invested in the cRIO. In the past we were given 15 seconds, and a good autonomous gave you a distinct advantage but did not at all guarantee a win (see 2004). Now we've been given c++, java, and labview but we're only allotted 10 sec, and in this game 3 points if you were lucky.

because of this movement it has forced a priority shift almost entirely to the engineering, which is why I believe you saw almost no autonomous this year... making programming an "if we have time" sort of thing. I would like to see a shift back to the 04/06 style autonomous, to give us and more importantly our teams the incentive for making impressive autonomous robots.

I'm not sure I understand. Autonomous is 15 seconds. It was all of this year.

In addition, while many people didn't realize it, autonomous was absolutely critical this year to success. Much like normal soccer, ball control this year was absolutely critical. Getting your balls moved into your zone in auto gave you a HUGE advantage - even if you did not score them.

If you look back at the highly contested matches this year (heck, look at Einstein), without auton you lose. Without hanging, the team that won might very well have lost.

While it isn't worth the insane amount it was in '06, if you wanted to compete at the high end of the spectrum then you had a good autonomous.

As a great example - ours was malfunctioning during qualification rounds because we had to change the surgical tubing powering our shooter, and the new stuff had significantly different spring rates than the old stuff. Had we had it running correctly, our final seeding score might have made it a different ball game. In the playoffs, we got it working. Our semifinals matches would have been lost without us nailing the shots that we did.

Auton this year wasn't critical to playing the game, but it was crucial to playing the game at a high level. I think that is the perfect measure of it's importance, as it lets newer teams still compete, and powerhouse teams show off their prowess. (Edit - I am not suggesting we are a powerhouse. Far from it. But without a good auton we wouldn't have done nearly as well as we did this year).

mwtidd 17-05-2010 00:42

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by Tom Line (Post 962309)
I think that is the perfect measure of it's importance, as it lets newer teams still compete, and powerhouse teams show off their prowess.

Sorry for my mistake on the length of autonomous, and thanks for correcting me.

My comments were directed at two things, capability and priority.

I believe that high school students are capable of building an impressive autonomous as displayed by the trinity comp.

With regards to priority, Trinity forces autonomous and programming to be considered for all teams, where as FIRST it is "optional". As you said for all-stars it is also necessary, I can't tell you how many times our matches were decided in the first and last 15 seconds. If you look at my team, years we have autonomous we make it to the elimination rounds and years we don't have one we don't make it. So I totally agree.

My thoughts are though that as FIRST doesn't "require" autonomous, it falls down the priority chain for even experienced teams. My comments were with regards to FIRST making autonomous more "mandatory" and raising its priority. In doing so they would have to better support the programming in such a way that a rookie team could have an autonomous.

I think given the appropriate tools and learning channels (tutorials) all teams could produce very impressive autonomous robots, its just a matter of adjusting the priority with the engineers.

I also know the argument can be made that this isn't the responsibility of FIRST, I just wish i wasn't always debugging in the pits :)

JamesBrown 17-05-2010 09:14

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by kamocat (Post 962269)
In order to make autonomous more common, not only does its treatment within the game need to change, but its ease of programming. Programming autonomous should be no more difficult than planning a field trip. However, that's a community-based project. At the moment autonomous may be difficult for most teams, but that's something we can change. Do you want to help?

I would be more than willing to help, however, I think that the solution to the problem is not making programming Autonomous simpler, it is teaching students (and in some cases mentors) the basics of programming and control.

Creating an effective autonomous that performs a basic task (i.e. dropping the hanging tetra in 2005, crossing 1-2 lines in 2008, or scoring from the first zone in 2010, or just moving defensively 2006 and 2009) is not difficult given the libraries first has provided. I taught myself to program for FIRST in 2005, by the end of 6 weeks our robot could consistently score in autonomous (by dropping the hanging tetra) by Battle Cry we could score twice in autonomous (drop the hanging tetra and put the preloaded tetra into the bottom of the middle goal). Since teaching my self to program in 2005, I have decided to pursue a career in Control and Automation. Needless to say my teams' autonomous modes have gotten more sophisticated as I went through college, but along the way I have seen/helped plenty of high school students learn to write code and wire sensors that let them create their own autonomous modes, beyond what I could do when I started.

Long story short, I don't know what you are proposing to do to make autonomous a attainable task for all teams, but feel free to PM me with more information. I think that a group of mentors and capable HS programmers spread out around the country could easily create a program and run workshops to teach teams with out the necessary mentor support how to program so they can write their own autonomous modes. However the more commonly proposed method, building libraries, or a scripting language for students to use, is ultimately curing the symptom (Teams that don't move in autonomous), not the problem (Teams don't have the knowledge/resources to write their own autonomous).

progal 17-05-2010 09:16

Re: Programmers: I Have A Challenge For You
 
When I responded to this before, I think I made myself unclear. I would love to take the challenge, but of course, I would have to talk to my team about it. This would be a very fun challenge, yes, but like I said before, team 1086 isn't going to participate unless said otherwise.

Sorry for the misunderstanding! :)

mwtidd 17-05-2010 13:10

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by JamesBrown (Post 962543)
I would be more than willing to help, however, I think that the solution to the problem is not making programming Autonomous simpler, it is teaching students (and in some cases mentors) the basics of programming and control.

James, I have a few developers who have signed on with me for the Bobotics ADK, you can find it on First Forge, and I would love it if you could help out.


The ADK is set up in a way to make programming easier to learn. After someone learns the basics, they can do more advanced things like using an async event system, set up complex state machines, learn about the MVC and factory design patterns. The core of the program does most of the background work, which helps to lower the "getting started barrier", however it is highly extensible for advanced developers.

Robototes2412 17-05-2010 13:29

Re: Programmers: I Have A Challenge For You
 
Im sorry if this angers anyone, but I firmly believe that people need to start by sending raw pwm values to the speed controllers, then use the class, then make a class to control the victors, then work on autonomous. In order to program effectively, you need to tailor the code to the device by learning how it works.

Then you can use the Bobotics ADK.

Joe Ross 17-05-2010 14:01

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by lineskier (Post 962138)
I've attatched a link to the trinity fire fighting robot contest.

This has not only a high school division, but also a junior division.

http://www.trincoll.edu/events/robot/

There are (at least) two features of the trinity competition that make it much more feasible to be fully autonomous.

First, there are no limitations on time to build the robot. The competitions are approximately the same from year to year. Thus you have a lot more time to work on autonomy. Not only does FIRST have a six week build season, and radically different games each year, but you aren't even allowed to reuse code (in many cases). In Trinity, you could build the robot one year, and just make software and sensor tweaks over the years. You can really learn from the best and directly apply those the next year.

Second, in Trinity, you're the only robot on the course. All the obstacles are things that you choose based on the point values. In FIRST, you have to figure out how to sense and avoid 5 other robots, who will be moving very fast.

gblake 17-05-2010 14:03

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by Robototes2412 (Post 962569)
Im sorry if this angers anyone, but I firmly believe that people need to start by sending raw pwm values to the speed controllers, then use the class, then make a class to control the victors, then work on autonomous. In order to program effectively, you need to tailor the code to the device by learning how it works.

Then you can use the Bobotics ADK.

Don't forget how important it is to write the initial versions of these routines using assembly language; and and also only using locally developed device drivers, instead of skipping past that part of learning how the devices work.

Blake

PS: I have a spare Morse code key if anyone wants to use it to enter the 1's and 0's of their executables.
PPS: ;)
PPPS: There certainly is value in understanding a layer or two of detail below whatever layer of abstraction you are writing code for; but I'm not sure that you have fully articulated a compelling reason for why the path you advocate is the best way to learn to effectively program an FRC robot (or similar device). You have made an assertion with some merit; but so far I don't see it as a compelling argument.

JamesBrown 17-05-2010 14:39

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by Robototes2412 (Post 962569)
Im sorry if this angers anyone, but I firmly believe that people need to start by sending raw pwm values to the speed controllers, then use the class, then make a class to control the victors, then work on autonomous. In order to program effectively, you need to tailor the code to the device by learning how it works.

Then you can use the Bobotics ADK.

All of those layers are important to learn but learning them in that order is not the best option. Why not start at the top. Once you learn what a class does you can follow through by learning why and how it does it.

The beautiful thing about using an API is that you don't need to tailor your code to a device, you can write high level code while programmers with more time/experience/expertise can handle the low level platform specific code.

conceptsingh 17-05-2010 14:54

Re: Programmers: I Have A Challenge For You
 
wow that is very challenging because it like the robot have it own mind to play the game but it also depend on the field too because they change the measurement and what on the field too like this year they said that the bump height was 12 in but later when i check the online manual they change the bump height to 13 and a half in. So it basically depend on the game and what they want us to do.

mwtidd 17-05-2010 15:14

Re: Programmers: I Have A Challenge For You
 
Quote:

Originally Posted by Joe Ross (Post 962574)
There are (at least) two features of the trinity competition that make it much more feasible to be fully autonomous.

This is definitely true, my comments weren't regard with the challenge but rather that every team should be able to have an autonomous if they're given the proper tools and learning channels. I agree that trinity forces fully autonomous and thus maybe the analogy wasn't fully appropriate. My thoughts were that FIRST could do the same on a smaller scale. If they continued the model of 2006 it would have forced all teams to at least think about defense in autonomous.

Also as long as you make your source code public at the end of every year, you can reuse it as it acts as a COTS part.

Quote:

Originally Posted by gblake (Post 962575)
There certainly is value in understanding a layer or two of detail below whatever layer of abstraction you are writing code for; but I'm not sure that you have fully articulated a compelling reason for why the path you advocate is the best way to learn to effectively program an FRC robot (or similar device). You have made an assertion with some merit; but so far I don't see it as a compelling argument.

I agree that assembly should be in there somewhere. I was trying to mimic my undergraduate education in the way I approached the ADK. First you learn the basics of programming languages, then you would learn basic soft eng techniques, and finally design patterns. I am not great at system level things like assembly. My hopes is that someone else could help with this end. Also I was not emphasizing this because I view the wpilib as the low level. My goal with the ADK is to provide high level object oriented design education.

This is a link to WPI's course flow chart
http://www.wpi.edu/Images/CMS/UGP/cschart-10-11.pdf

To summarize start with java, then go to C and C++, then go to soft eng and assembly, and finally go to OOAD(design patterns)

Quote:

Originally Posted by JamesBrown (Post 962582)
All of those layers are important to learn but learning them in that order is not the best option. Why not start at the top. Once you learn what a class does you can follow through by learning why and how it does it.

The beautiful thing about using an API is that you don't need to tailor your code to a device, you can write high level code while programmers with more time/experience/expertise can handle the low level platform specific code.

Good point. In retrospect looking at the WPI plan this is exactly how they approach it.


All times are GMT -5. The time now is 14:58.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi