Go to Post Gee, I wonder if AndyMark has a wedding gift registry? - KathieK [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
 
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 06-05-2016, 20:29
phurley67 phurley67 is offline
Programming Mentor
FRC #0862 (Lightning Robotics)
Team Role: Mentor
 
Join Date: Apr 2014
Rookie Year: 2013
Location: Michigan
Posts: 63
phurley67 is an unknown quantity at this point
Re: FRC Primer for Programmers

Personally, I would also throw in a bit about version control, network tables, and logging.
Reply With Quote
  #2   Spotlight this post!  
Unread 24-05-2016, 19:16
doge-in-a-bush doge-in-a-bush is offline
Registered User
no team
 
Join Date: May 2016
Location: Dayton, OH
Posts: 1
doge-in-a-bush is an unknown quantity at this point
Re: FRC Primer for Programmers

I'd be really interested to see the powerpoint when you are finished!
Reply With Quote
  #3   Spotlight this post!  
Unread 26-05-2016, 23:29
Dan Waxman Dan Waxman is offline
Registered User
FRC #0263 (Aftershock)
Team Role: Programmer
 
Join Date: Feb 2016
Rookie Year: 2016
Location: Long Island
Posts: 28
Dan Waxman is an unknown quantity at this point
Re: FRC Primer for Programmers

If you're up for it, I've wanted to make YouTube videos for this stuff for a long time now. Maybe we could correspond in writing material then I can make videos explaining everything? Please PM me if you're interested. Thanks.
Reply With Quote
  #4   Spotlight this post!  
Unread 27-05-2016, 10:01
WSiggs WSiggs is offline
Pb Fabricator
FRC #4908 (Dragons)
Team Role: Programmer
 
Join Date: Jan 2016
Rookie Year: 2014
Location: Duxbury Massachusetts
Posts: 21
WSiggs is an unknown quantity at this point
Re: FRC Primer for Programmers

Is there anything like this already for java out there other than what's on the wpilib site?

Last edited by WSiggs : 27-05-2016 at 10:03.
Reply With Quote
  #5   Spotlight this post!  
Unread 27-05-2016, 10:05
Katie_UPS's Avatar
Katie_UPS Katie_UPS is offline
Registered User
AKA: Katie Widen
no team
Team Role: Engineer
 
Join Date: Feb 2008
Rookie Year: 2008
Location: Wisconsinite lost in Texas
Posts: 955
Katie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond repute
Re: FRC Primer for Programmers

Quote:
Originally Posted by rich2202 View Post

2) Overview of the Hardware
RoboRio
Driver Station
Connection through FMS
3) Overview of FMS
Robot Init
Autonomus Init
Autonomus periodic
Autnomous continuous
etc.
.....

12) Networking details
10.TE.AM.xx
Fixed vs dynamic IP addresses
Default Fixed IP Addresses
Router
Why do they need to know this in depth? Why is "Deploying Code" not closer to the top? You're going to bore 99% of them to death. Why would I as a high school student spend my summer watching power-points on dynamic IP addressing?

Its cool to teach them everything (though most of it isn't really necessary, just interesting to some), but get them interested first. If they signed up for "learning to program" maybe programming should be in the first few topics.

None of this is going to have any context until they start writing code anyways, so why not start with code?

Quote:
Originally Posted by phurley67 View Post
Personally, I would also throw in a bit about ...network tables
Again, what does this add? How does this help them write an autonomous program? If a student shows interest in the deeper parts of how-things-work then explain it (or if it becomes a relevant lesson because of a problem they're having).

They're not starting Computer Engineering. They don't need to know the networking layer right now, or how the FPGA in the roboRIO works... It's cool and useful eventually, but you're just going to scare away anyone who doesn't think they're smart enough.
Reply With Quote
  #6   Spotlight this post!  
Unread 27-05-2016, 10:23
Jaci's Avatar
Jaci Jaci is online now
Registered User
AKA: Jaci R Brunning
FRC #5333 (Can't C# | OpenRIO)
Team Role: Mentor
 
Join Date: Jan 2015
Rookie Year: 2015
Location: Perth, Western Australia
Posts: 251
Jaci has a reputation beyond reputeJaci has a reputation beyond reputeJaci has a reputation beyond reputeJaci has a reputation beyond reputeJaci has a reputation beyond reputeJaci has a reputation beyond reputeJaci has a reputation beyond reputeJaci has a reputation beyond reputeJaci has a reputation beyond reputeJaci has a reputation beyond reputeJaci has a reputation beyond repute
Re: FRC Primer for Programmers

Quote:
Originally Posted by Katie_UPS View Post
Why do they need to know this in depth? Why is "Deploying Code" not closer to the top? You're going to bore 99% of them to death. Why would I as a high school student spend my summer watching power-points on dynamic IP addressing?

Its cool to teach them everything (though most of it isn't really necessary, just interesting to some), but get them interested first. If they signed up for "learning to program" maybe programming should be in the first few topics.

None of this is going to have any context until they start writing code anyways, so why not start with code?



Again, what does this add? How does this help them write an autonomous program? If a student shows interest in the deeper parts of how-things-work then explain it (or if it becomes a relevant lesson because of a problem they're having).

They're not starting Computer Engineering. They don't need to know the networking layer right now, or how the FPGA in the roboRIO works... It's cool and useful eventually, but you're just going to scare away anyone who doesn't think they're smart enough.
I have mixed feelings, some disagreements and some agreements.

Learning about the hardware in the robot is important. We're not building desktop applications here, we're building applications that make a robot run. Students are learning to program for an embedded system, and with that comes some limitations and gotchas that don't come with regular programming lessons. For this reason I think (2) should be included.

FMS -> If your robot is dead on the field, your electrical and programming teams will be the first port of call. Most of FMS is a black box, but things like Periodic and Iterative functions are important as they're important for the control of your robot. I've taught FRC software classes before, and I've had many students come up to me and as "wait, so why do we run the same code over and over again? Can't we just put it in init and it will work?". Students need to understand how states in the robot work, otherwise their code is just plain not going to work. If you look at any child of the RobotBase class, you'll see the words "{state}Init" and "{state}Periodic" pop up very commonly. This grants (3) a pass in my book.

(12), Network Details. Robots don't always work, especially when they're on the field with 6 other robots. While this isn't as important as the other topics, and maybe shouldn't be included in the general, introductory course (sorry op), I think it has a place in more advanced classes maybe later in the pre-season. I'd have to agree that it doesn't belong in the 'primer' course.

NetworkTables. I'd recommend swapping this out for SmartDashboard in the primer, since most of the time (unless your programmers have spare time), you won't be dealing with your own network data transport. I'd have to agree that this doesn't belong in the primer, either.

When you're providing a primer course to students, you're setting the foundation for what they'll do later on, when they start to get more in depth and more advanced. Unfortunately in FIRST, a lot of the code resources are just examples without any real explanation, which places some programmers into bad practices, or in the horrible state of knowing but not understanding. Understand first, execute second. Not the other way around.

~Jaci
__________________
Jacinta R

Curtin FRC (5333+5663) : Mentor
5333 : Former [Captain | Programmer | Driver], Now Mentor
OpenRIO : Owner

Website | Twitter | Github
jaci.brunning@gmail.com
Reply With Quote
  #7   Spotlight this post!  
Unread 27-05-2016, 10:35
Katie_UPS's Avatar
Katie_UPS Katie_UPS is offline
Registered User
AKA: Katie Widen
no team
Team Role: Engineer
 
Join Date: Feb 2008
Rookie Year: 2008
Location: Wisconsinite lost in Texas
Posts: 955
Katie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond reputeKatie_UPS has a reputation beyond repute
Re: FRC Primer for Programmers

Quote:
Originally Posted by Jaci View Post
FMS -> If your robot is dead on the field...

cut for length: I do agree that a lot can be useful, and you brought up some points I didn't think about.

My suggestion OP is that you reorder your topics. Start with what gets them hooked: writing a program, making a robot drive. Expand from there. Focus on whats the most relevant to making a robot move and work your way out. Save advanced topics for advanced students. No one starts out robot design with stress analysis and motor-curves. Programming is already scary and daunting for some students. Don't push them out by making it harder/more complex than it needs to be.
Reply With Quote
  #8   Spotlight this post!  
Unread 28-05-2016, 07:38
rich2202 rich2202 is offline
Registered User
FRC #2202 (BEAST Robotics)
Team Role: Mentor
 
Join Date: Jan 2012
Rookie Year: 2012
Location: Wisconsin
Posts: 1,116
rich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond repute
Re: FRC Primer for Programmers

The intent is to give a high level overview. Not to make them experts. The idea is to give them context for what they will see in the production robot code. Knowing the sequence of calls from fms helps in understanding what gets called when in the robot code.

Once the high level overview is created, I could see expanding each topic to a more in depth tutorial.

Note: the purpose is not to entertain. That is for others to work on. The purpose is: in order to understand the code, here is what you need to know. Enough to understand, not enough to program.

Sitting around watching the experienced programmers is no fun if you have no idea what they are doing.
__________________

Reply With Quote
  #9   Spotlight this post!  
Unread 28-05-2016, 07:50
rich2202 rich2202 is offline
Registered User
FRC #2202 (BEAST Robotics)
Team Role: Mentor
 
Join Date: Jan 2012
Rookie Year: 2012
Location: Wisconsin
Posts: 1,116
rich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond repute
Re: FRC Primer for Programmers

Quote:
Originally Posted by Katie_UPS View Post
Why do they need to know this in depth? Why is "Deploying Code" not closer to the top? You're going to bore 99% of them to death. Why would I as a high school student spend my summer watching power-points on dynamic IP addressing?
It is an overview, not in depth. It is a one session overview, not a summer long class. The summer is for me to put it together.

Deploying code is at the end because that is the last thing you do.

The idea is: when something happens, and the programmers start looking at ip addresses, they have a context on what is being debugged. As they gain experience, when something goes wrong, they have some idea where to start looking.
__________________


Last edited by rich2202 : 28-05-2016 at 07:59.
Reply With Quote
  #10   Spotlight this post!  
Unread 29-05-2016, 10:57
jtrv's Avatar
jtrv jtrv is offline
github.com/jhtervay
AKA: Justin
FRC #2791 (Shaker Robotics)
Team Role: College Student
 
Join Date: Jan 2013
Rookie Year: 2012
Location: Latham, NY
Posts: 142
jtrv is a name known to alljtrv is a name known to alljtrv is a name known to alljtrv is a name known to alljtrv is a name known to alljtrv is a name known to all
Re: FRC Primer for Programmers

Quote:
Originally Posted by rich2202 View Post
Deploying code is at the end because that is the last thing you do.
I'm not sure if this is a perfect idea. I understand where you're coming from- but personally, if I sat through a lecture on a library and I wasn't shown how it deployed until the end, I would be constantly wondering and trying to figure out how it all works together until the lecturer finally shows it at the end. I'd wind up distracting myself from the more important content at hand. I think showing that it is as simple as hitting Build on whatever development setup you have going is a good thing to show at the start. Say that for now, it just sends the code to the router and compiles it or what have you, and that you'll address it more in-depth later.

Just my $0.02 as a student in the middle of many years of lectures.
__________________
2791 (2012-2016)
Alumni & part-time programming mentor of 2791.
My views do not reflect the views of my team.
2012 - BAE Granite State Regional Finalists & Imagery Award, Connecticut Semifinalists & Creativity Award
2013 - BAE Granite State Regional Quarterfinalists & Quality Award, WPI Regional Finalists & Excellence in Engineering Award
2014 - New York Tech Valley Quarterfinalists, Finger Lakes Semifinalists & Quality Award
2015 - New York Tech Valley Quarterfinalists & Quality Award, Finger Lakes Quarterfinalists & Industrial Design Award
2016 - New York Tech Valley Semifinalists & Quality Award, Finger Lakes Semifinalists
Reply With Quote
  #11   Spotlight this post!  
Unread 29-05-2016, 19:15
Monochron's Avatar
Monochron Monochron is offline
Engineering Mentor
AKA: Brian O'Sullivan
FRC #4561 (TerrorBytes)
Team Role: Engineer
 
Join Date: Feb 2007
Rookie Year: 2002
Location: Research Triangle Park, NC
Posts: 887
Monochron has a reputation beyond reputeMonochron has a reputation beyond reputeMonochron has a reputation beyond reputeMonochron has a reputation beyond reputeMonochron has a reputation beyond reputeMonochron has a reputation beyond reputeMonochron has a reputation beyond reputeMonochron has a reputation beyond reputeMonochron has a reputation beyond reputeMonochron has a reputation beyond reputeMonochron has a reputation beyond repute
Re: FRC Primer for Programmers

Quote:
Originally Posted by rich2202 View Post
It is an overview, not in depth. It is a one session overview, not a summer long class.
It still sounds like "one session" is going to take quite a while. If your goal is get students interesting in working on the robot programming, you may want to give higher priority to piquing that interest.

Quote:
Deploying code is at the end because that is the last thing you do.
Are they not going to deploy any code until the very end? I guess it depends what your goals are for this class. If you have students who are already programmers or who are already certain that they like programming, then you don't need to get them hooked first. And the topics you have planned are all definitely necessary if you want to build a strong programming team. But if you are hoping to grow your programming team with this lesson plan, I'm not so sure.
__________________


2016 | Innovation In Controls, Industrial Design, Quality Award, NC District - 4th Seed
Reply With Quote
  #12   Spotlight this post!  
Unread 29-05-2016, 20:01
rich2202 rich2202 is offline
Registered User
FRC #2202 (BEAST Robotics)
Team Role: Mentor
 
Join Date: Jan 2012
Rookie Year: 2012
Location: Wisconsin
Posts: 1,116
rich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond reputerich2202 has a reputation beyond repute
Re: FRC Primer for Programmers

Quote:
Originally Posted by Monochron View Post
It still sounds like "one session" is going to take quite a while.
Maybe 2. But definitely not an entire semester.

Quote:
If your goal is get students interesting in working on the robot programming, you may want to give higher priority to piquing that interest.
Oddly enough, piquing their interest is not the goal. Over the last few years, the team has grown from 30 to 70+ students, with 15 of them programmers this year. In the past 2 years, the programmers have been pretty autonomous of the Mentors - we pointed them in the right direction, and they did it all themselves. Unfortunately, the 2 strongest programmers graduated this year.

The goal is to make sure everyone has a high level overview of how the robot works (code wise).

Quote:
Are they not going to deploy any code until the very end? I guess it depends what your goals are for this class.
For the 1 or 2 (or whatever) number of sessions, it is purely lecture. No coding. Once everyone has a foundation of the basics, then the programmers can have at it - "Hello World" exercise, or whatever they want to do.

Quote:
If you have students who are already programmers or who are already certain that they like programming, then you don't need to get them hooked first. And the topics you have planned are all definitely necessary if you want to build a strong programming team.
That's the plan.

Quote:
But if you are hoping to grow your programming team with this lesson plan, I'm not so sure.
At this time, growing the programming team is not a priority. This year, we had too many. It was challenging keeping them all involved. I was trying to get the 2 lead programmers to become more Project Managers and divide up the tasks, but that didn't work so well. Fortunately, one is hopefully coming back next year as a Mentor. Definitely needs to be more hands off as a mentor. It will be interesting watching a College Freshmen develop management skills.
__________________

Reply With Quote
  #13   Spotlight this post!  
Unread 30-05-2016, 02:36
AlexanderTheOK AlexanderTheOK is offline
Guy
no team
 
Join Date: Jan 2014
Rookie Year: 2012
Location: Los Angeles
Posts: 146
AlexanderTheOK is just really niceAlexanderTheOK is just really niceAlexanderTheOK is just really niceAlexanderTheOK is just really nice
Re: FRC Primer for Programmers

Quote:
Originally Posted by rich2202 View Post
with 15 of them programmers this year.
Oof. Well there's your problem. Thankfully (or oftentimes not), on both teams I've participated on, programming hasn't been the greatest interest, so for teaching I've generally got one robot/roborio per student/2 students.

I do have to say though that a lecture on basic FRC programming would bore the crap out rookie student me. I would have remembered very little, and decided I wanted to build stuff, taken the more tangible safety certifications, and started machining/designing parts.

Thankfully, instead of a lecture, we got to write some code for an old robot and make it run. I've found that this strategy works rather well in general. It means the student is more willing to read documentation on their own with the idea ahead that it will lead to more of the robot functioning. I say this having both trained my successors for two years as a student and mentoring a team through it's switch from LabView to Java.

Of course, I doubt many teams have ceil(15/2) = 8 mostly identical robots to program on, so you're in a bit of a pickle. If I was in your situation I might have broken up the students into several sessions so they could all take a crack at making a robot work.

However I am not in your situation. Best of luck.
Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 01:20.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


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