Go to Post Some said the aluminum foil gave the robot a NASA-like quality, but others pointed out that blanketing components with a highly-conductive material that blocked air flow was probably not going to help get us to Einstein. - beerobber [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

 
Closed Thread
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 13-11-2008, 09:59
Goldfire's Avatar
Goldfire Goldfire is offline
Programming Teacher
AKA: Richard Eisenberg
FRC #1884 (The Griffins)
Team Role: Teacher
 
Join Date: Oct 2008
Rookie Year: 2008
Location: London, UK
Posts: 4
Goldfire is a jewel in the roughGoldfire is a jewel in the roughGoldfire is a jewel in the rough
Organizing many programmers

This is my first year involved with FIRST (joining other mentors with more experience) as the programming mentor. We have team of 30-40 students, of which about 15 are interested in programming. They range in programming experience/knowledge from nothing at all to halfway through AP Computer Science. My personal experience is quite deep in C/C++ and non-existent in LabVIEW. I have no experience with robots of any kind.

I'm looking for suggestions of how to organize my students. Would it make sense to split into some who will specialize in LabVIEW and some who will specialize in C++? Should they all learn both? Is this an unmanageable size and should I work to encourage some to find other pursuits?

Somewhat separately, is anyone aware of good websites teaching programming basics for those totally new to the field? We don't have adequate time to warm the complete newbies up, but I'm hoping they can learn on their own.

Thanks!
  #2   Spotlight this post!  
Unread 13-11-2008, 10:13
Dave Flowerday Dave Flowerday is offline
Software Engineer
VRC #0111 (Wildstang)
Team Role: Engineer
 
Join Date: Feb 2002
Rookie Year: 1995
Location: North Barrington, IL
Posts: 1,366
Dave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond reputeDave Flowerday has a reputation beyond repute
Re: Organizing many programmers

Quote:
Originally Posted by Goldfire View Post
I'm looking for suggestions of how to organize my students. Would it make sense to split into some who will specialize in LabVIEW and some who will specialize in C++? Should they all learn both? Is this an unmanageable size and should I work to encourage some to find other pursuits?
I personally think you'd be best sticking with one language only (for your own sanity). Since you already know C++, that seems like the obvious choice. It's hard enough ramping up new students when you know the language.

We have between 10-15 programming students on our team the last few years and it has worked out for us. We split them up into teams to focus on different tasks (one focuses on drive code, another on arm manipulation code, etc). If necessary we break the group into 2 and have them come on alternate meeting days.

With a team that size, a good version control system is a must. We use Subversion and are very happy with it. Subversion (and several others) can be installed locally on a laptop so you don't have to worry about setting up a server. Obviously merging C++ code with something like Subversion is pretty easy - I'm not sure how that works (if it does at all) when you get into a graphical application development environment like Labview.
  #3   Spotlight this post!  
Unread 13-11-2008, 11:52
Joe Ross's Avatar Unsung FIRST Hero
Joe Ross Joe Ross is offline
Registered User
FRC #0330 (Beachbots)
Team Role: Engineer
 
Join Date: Jun 2001
Rookie Year: 1997
Location: Los Angeles, CA
Posts: 8,586
Joe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond repute
Re: Organizing many programmers

We haven't had quite that many programmers, but once our number got above 3, we started using revision control (CVS). It made keeping track of everything much easier. We used TortoiseCVS as a gui for it, which made it easy for people who were new to CVS to start using it quickly. Subversion is just as good, or better.

LabVIEW does integrate with several revision control systems, and has graphical differencing and merging, but only in the professional version (we are given the Full Development system, which is one level lower).
  #4   Spotlight this post!  
Unread 13-11-2008, 12:25
Russ Beavis Russ Beavis is offline
Registered User
no team
 
Join Date: Nov 2005
Location: Manchester, NH - DEKA R&D Corp.
Posts: 341
Russ Beavis has a reputation beyond reputeRuss Beavis has a reputation beyond reputeRuss Beavis has a reputation beyond reputeRuss Beavis has a reputation beyond reputeRuss Beavis has a reputation beyond reputeRuss Beavis has a reputation beyond reputeRuss Beavis has a reputation beyond reputeRuss Beavis has a reputation beyond reputeRuss Beavis has a reputation beyond reputeRuss Beavis has a reputation beyond reputeRuss Beavis has a reputation beyond repute
Re: Organizing many programmers

Depending on the cost of a spare cRIO (hopefully we'll get that info soon), you might want to consider dueling software teams - one with C/C++ and one with LabVIEW.

Another option to consider is a LabVIEW-based Dashboard app and C/C++ robot programming. There's definitely room for both.

You may even be able to use C code within LabVIEW and have high-level "systems engineers" coding in LabVIEW and "low-level software engineers" coding in C. However, I'm not sure whether the FRC version of LabVIEW will provide Code Interface Nodes or similar for integration with C code.

Sounds like you've got a big team! Keeping everyone "happy" might be a bigger challenge than the actual game. Good Luck and Have Fun!

Russ
  #5   Spotlight this post!  
Unread 13-11-2008, 14:43
ay2b's Avatar
ay2b ay2b is offline
Registered User
AKA: Andy
FRC #2928
Team Role: Mentor
 
Join Date: Mar 2004
Rookie Year: 1994
Location: Seattle, WA
Posts: 211
ay2b has a brilliant futureay2b has a brilliant futureay2b has a brilliant futureay2b has a brilliant futureay2b has a brilliant futureay2b has a brilliant futureay2b has a brilliant futureay2b has a brilliant futureay2b has a brilliant futureay2b has a brilliant futureay2b has a brilliant future
Re: Organizing many programmers

As almost everyone has said, some sort of version control system is a must.

I'd personally recommend against having competing teams, unless you did that all pre-season. During the season, I would try to avoid doubling the work you do, knowing half of it will be discarded. As an experienced C/C++ programmer, I found LabVIEW (at least the basics of it) fairly easy to pick up, but I'd recommend going with what you know. Either learn LabVIEW before the season starts, or use C/C++.

My recommendation for how to organize/divide the students is to have 4 or 5 teams. Each team is responsible for a separate component of the software.

a) robot interface -- using an object-oriented approach (which doesn't necessarily imply an OO language), this team provides an interface "to the robot". Present functions such as "drive at this speed", "move arm to this position", etc. This team would be responsible for integrating sensors, implementing PID control loops, etc.

b) autonomous operation -- using the interface provided by team (a), develop the autonomous operation.

c) teleop code -- using the interface provided by team (a), develop the teleop code. This team would probably also help to design the operator interface. Should we move the arm with a joystick, or have buttons to move to set positions? Should the arm joystick control the arm position or the arm motor speed? Do we use 1-joystick drive, or 2-joystick drive? etc.

d) dashboard code -- this could be the people who really want to use LabVIEW or C/C++, whichever you chose not to use on the robot.

You might split team (a) into two teams, one that does the drive (and encoders, gyro, DAA, etc for positioning the robot on the field) and one that does the manipulator (and associated sensors).
__________________

2011 - SD Quarterfinalists (980), LA Quarterfinalists (980)
2010 - LA (2404) Finalists (980), AZ Motorola Quality (980)
2009 - LA Semifinalists (980); Las Vegas Quarterfinalists (980); SD (2404); IRI #1 Seed, Finalist (980)
2008 - SD Quarterfinalists (980), LA Champions (980), LA Rookie Inspiration Award (2404); CalGames Finalists
2007 - So.Cal Finalists (980), SD Quarterfinalists (980); CalGames Finalists
2006 - So.Cal Regional Champion (4), Toronto Judge's Award Day 1 (4)
2005 - SVR Champions, Delphi "Driving Tomorrow's Technology" (980); AZ Xerox Creativity (980); So.Cal Finalists, RadioShack Innovation in Control (980); Championship Archimedes Division Semifinalists; IRI Finalists (980)
2004 - So.Cal Regional Champions, Leadership in Controls (980); AZ GM Industrial Design (980); Championship Galileo Division #2 Seed; IRI Champions
2003 - PNW Semi-finalists (488)
2002 - PNW Finalists (488)
2000 - X-bot / 488 - Mentor / Founder
1994 - Sunny Delight - Driver - champion
  #6   Spotlight this post!  
Unread 13-11-2008, 23:32
EHaskins EHaskins is offline
Needs to change his user title.
AKA: Eric Haskins
no team (CARD #6 (SCOE))
Team Role: College Student
 
Join Date: Jan 2006
Rookie Year: 2006
Location: Elkhorn, WI USA
Posts: 998
EHaskins has a reputation beyond reputeEHaskins has a reputation beyond reputeEHaskins has a reputation beyond reputeEHaskins has a reputation beyond reputeEHaskins has a reputation beyond reputeEHaskins has a reputation beyond reputeEHaskins has a reputation beyond reputeEHaskins has a reputation beyond reputeEHaskins has a reputation beyond reputeEHaskins has a reputation beyond reputeEHaskins has a reputation beyond repute
Send a message via MSN to EHaskins
Re: Organizing many programmers

The only thing I can add is that you should use some type of version control, even if you've only got one programmer. I use SVN. Its is a fantastic tool, especially when combined with TortoiseSvn.
__________________
Eric Haskins KC9JVH
  #7   Spotlight this post!  
Unread 14-11-2008, 01:05
AustinSchuh AustinSchuh is offline
Registered User
FRC #0971 (Spartan Robotics) #254 (The Cheesy Poofs)
Team Role: Engineer
 
Join Date: Feb 2005
Rookie Year: 1999
Location: Los Altos, CA
Posts: 803
AustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond repute
Re: Organizing many programmers

If you don't mind your code being publicly viewable, you can host it on Google Code. Google Code provides a repository for your code (subversion by default, I think), and places for a wiki.

http://code.google.com/hosting/

FYI, I don't remember what license the code we will be using will be released under and whether we are allowed to make it publicly available...
  #8   Spotlight this post!  
Unread 14-11-2008, 15:09
Andrew Schreiber Andrew Schreiber is offline
Joining the 900 Meme Team
FRC #0079
 
Join Date: Jan 2005
Rookie Year: 2000
Location: Misplaced Michigander
Posts: 4,069
Andrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond reputeAndrew Schreiber has a reputation beyond repute
Re: Organizing many programmers

Since version control has been mentioned I will mention code standards. Possibly not as big a deal with Labview but still worth considering.
__________________




.
  #9   Spotlight this post!  
Unread 14-11-2008, 19:03
mluckham's Avatar
mluckham mluckham is offline
Registered User
FRC #0758 (Sky Robotics)
Team Role: Mentor
 
Join Date: Mar 2006
Rookie Year: 2006
Location: Ontario, Canada
Posts: 116
mluckham will become famous soon enoughmluckham will become famous soon enough
Re: Organizing many programmers

Quote:
Originally Posted by Goldfire View Post
This is my first year involved with FIRST (joining other mentors with more experience) as the programming mentor. We have team of 30-40 students, of which about 15 are interested in programming. They range in programming experience/knowledge from nothing at all to halfway through AP Computer Science. My personal experience is quite deep in C/C++ and non-existent in LabVIEW. I have no experience with robots of any kind.

I'm looking for suggestions of how to organize my students. Would it make sense to split into some who will specialize in LabVIEW and some who will specialize in C++? Should they all learn both? Is this an unmanageable size and should I work to encourage some to find other pursuits?
Assuming you are already meeting in the pre-season, I would recommend using the time to bring everyone up to speed with the tools available. We have decided to go with Labview - so have installed the Labview 8.5.1 (available free to FRC teams) on several machines and the students are independently working through some of the simpler tutorials.

Comparing Labview with C/C++ and Easy/C - only very exceptional students with actual C experience have found it easy to use text editor compilers such as MPLAB, while students with Visual Basic experience have some important basic knowledge (data types, etc) but because they all lack robotics/control system experience FRC is a total mystery until they are immersed in the environment for a number of weeks. Most of our potential programmers find icon-type programming such as with Easy/C more understandable, and are telling me their comprehension of simple Labview programs is similar ... although when we get beyond the simple and have to think of multiple things happening at once, they will once again fall off the track of understanding for awhile.

As we have been involved with FIRST for several years, we have the luxury of spare robot controllers/etc and have built several new platforms this fall with different drive systems plus having last year's robot available. Some of the programmers are reviewing the Easy/C code from the past couple of years, and implementing their own primitive control systems with the joysticks using Easy/C ... this is familiarizing them with draggable/configurable code blocks which has some equivalency with Labview. I understand from beta-Labview teams that the kit of parts this year will include a similar draggable icon library for Labview.

Some of the replies here talk about version control systems - that's too advanced for us, I will just have individual programmers work on Labview VIs independently (eg: joystick input and scaling, motor speed control with encoders, pneumatic arm control with limit switch) and convert them to subVIs, then have one or two of the programmers bring these subVIs together in the main program.

Hope this helps
  #10   Spotlight this post!  
Unread 14-11-2008, 19:46
AustinSchuh AustinSchuh is offline
Registered User
FRC #0971 (Spartan Robotics) #254 (The Cheesy Poofs)
Team Role: Engineer
 
Join Date: Feb 2005
Rookie Year: 1999
Location: Los Altos, CA
Posts: 803
AustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond repute
Re: Organizing many programmers

Quote:
Originally Posted by mluckham View Post
Some of the replies here talk about version control systems - that's too advanced for us, I will just have individual programmers work on Labview VIs independently (eg: joystick input and scaling, motor speed control with encoders, pneumatic arm control with limit switch) and convert them to subVIs, then have one or two of the programmers bring these subVIs together in the main program.
I would argue that version control is good for your situation too. I use it for individual projects where I am the only guy working on things. That way, every time your code gets checked in, it gets backed up, and you can go back to that place in time if you run into a problem. I consider myself to be pretty good at programing, and I have still used revision control a couple of times now to figure out what I changed between right now and a couple of minutes ago that caused my code to stop working. It probably saved me a couple of hours. For me, it has gotten to the point where when I work on a piece of code and it isn't in a revision control system, I actually feel uneasy until I have put the code in a revision control system.

In your situation, I would view a revision control system as more of a "backup system" than something to do all the fancy merging and all that that revision control software also does. Your revision control system could even consist of a folder on the school's server that all your programmers can access that you zip everything up nightly, adding the date to the folder name, to back it up. That is all that most pieces of revision control software will do for you anyways when you are using binary file formats like labview (I'm assuming that labview uses a binary file format), since you can't merge binary files together unless you actually know how the binary format works and can teach the revision control software that.
  #11   Spotlight this post!  
Unread 23-11-2008, 18:54
Joe Hershberger Joe Hershberger is offline
National Instruments
AKA: jhersh
FRC #2468 (Appreciate)
Team Role: Mentor
 
Join Date: Nov 2005
Rookie Year: 1997
Location: Austin, TX
Posts: 148
Joe Hershberger is a name known to allJoe Hershberger is a name known to allJoe Hershberger is a name known to allJoe Hershberger is a name known to allJoe Hershberger is a name known to allJoe Hershberger is a name known to all
Re: Organizing many programmers

Quote:
Originally Posted by Russ Beavis View Post
Depending on the cost of a spare cRIO (hopefully we'll get that info soon), you might want to consider dueling software teams - one with C/C++ and one with LabVIEW.

Another option to consider is a LabVIEW-based Dashboard app and C/C++ robot programming. There's definitely room for both.

You may even be able to use C code within LabVIEW and have high-level "systems engineers" coding in LabVIEW and "low-level software engineers" coding in C. However, I'm not sure whether the FRC version of LabVIEW will provide Code Interface Nodes or similar for integration with C code.
LabVIEW Full for FRC supports call library nodes. You can build a .out file from your C/C++ code using the WindRiver tools and then call that code from LabVIEW using the Call Library Node. The entry points that you want to call from LabVIEW need to be C functions (and C calling convention). Code Interface Nodes are not supported on the cRIO... they are deprecated even on Windows favoring Call Library Nodes.
  #12   Spotlight this post!  
Unread 23-11-2008, 19:48
Tom Bottiglieri Tom Bottiglieri is offline
Registered User
FRC #0254 (The Cheesy Poofs)
Team Role: Engineer
 
Join Date: Jan 2004
Rookie Year: 2003
Location: San Francisco, CA
Posts: 3,187
Tom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond repute
Re: Organizing many programmers

A few things:

Windriver Workbench for FRC has an SVN client feature. I think we will be using that over TortoiseSVN or a similar tool.

We plan to have parallel LabView and C++ development going on. The LabView core will be our less experienced students, and will mostly be working on a dashboard and test drivers for specific function tests. (Camera/encoders/PID gains/etc).

I've found that wiki's are a good organization tool as well. They are available for free all over the web, or you can install your own if you have a web server.

Last edited by Tom Bottiglieri : 23-11-2008 at 19:52.
Closed Thread


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

Similar Threads
Thread Thread Starter Forum Replies Last Post
Organizing your KOP blue_crew Kit & Additional Hardware 9 02-01-2006 19:36
Need Help Organizing Your Team OnyxFox Team Organization 1 20-12-2005 13:42
Organizing multiple kits? Billfred Lego Mindstorm Discussion 5 31-07-2005 15:45
Organizing a programming team. scitobor 617 Programming 7 28-01-2005 19:18
Organizing Tips? archiver 2001 1 24-06-2002 00:46


All times are GMT -5. The time now is 19:25.

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