I teach programming at our High School and have been tapped by the team to lead the mentors (Ok, so there’s two of us) to our first competition next year.
We’re starting early because we’re starting from nothing.
My question is a two-parter:
Is there any way (apart from paying lots of money) to access and practice with LabView before the KOP arrives? There are some great tutorials here and elsewhere (seriously, love it) but I’m nervous that it won’t sink in without some practice.
Biggest piece of advice I can give: Don’t use LabView. Use Java. It will be easier to do, you will be more familiar with it, it is more likely that students will have familiarity with it, there will be more code from other teams that you can borrow with it, and it will be far easier to get code help from other teams with it.
Using LabView, unless you have a very good reason to do so (e.g. a head mentor who is very experienced with it), is a bad idea.
I’m on the other side of the fence.
I consider LabVIEW a better choice for this application (FRC robots) than Java.
You can use a LabVIEW evaluation or student copy if there isn’t a team you know that can help you out.
Start here: http://wpilib.screenstepslive.com/s/currentCS/m/labview
That includes where to get the LabVIEW downloads.
LabVIEW is also good for any students interested in a possible future in mechanical/electrical engineering. They will find it used for sensor data monitoring/collection/processing, process control in both college and future employment.
Java is a good choice if you want to take advantage of the support you can get from high school AP computer science programs.
Any of the languages (LV, Java, C++, Python) are good if your intention is to expose students to a broader range of programming languages.
We have programmed our robots in three of the languages just to expose students to the differences.
Java is an infinitely better language for any purpose. Not only does it give your students a feel of “real world programming” but it introduces you to key object oriented concepts that will help your students in the future. You can do far more advanced things with Java (even if you’re a rookie team) and there’s plenty of support for it.
Learning LabVIEW is a pain and is not worth it. No matter what you think now, you will eventually end up switching to Java. Better to start with Java as compared to switching to it later.
Personally, I view LabVIEW as a great first language because it allows you to start teaching programming principles (The robot does exactly what you tell it to do, not what you want it to do . . . Sequence, Choice, and Repetition . . .) without having to deal with a lot of syntax.
I know teams that started in c++ or Java because that’s what the mentor knew and have switched to LabVIEW because of the level of fellow team support (and support from National Instruments). As a professional developer, I recognize that any language used will have a learning curve because you are using a very specific library/framework for FRC (which is somewhat consistent across all the languages). Having served as a recruiter, a candidate having proficiency in a couple of langues (especially drastically different ones like c++ vs python vs LabVIEW - we don’t use Java), tells me that the candidate should have a good understanding of programming practices apart from language gimmicks.
Up to you. Because FRC is largely a hardware and sensors (I view joysticks as a type sensor) programming situation, if I don’t have the resources to start a group off with LabVIEW and the FRC control system, I try for Arduino (get the concept of sensor input => determines => motor output going).
I can guarantee you that you will have a much higher level of fellow team support with Java than with LabView, unless your team is located in an area where LabView is unusually ubiquitous. On the whole, approximately twice as many FRC teams use Java as use LabView. Additionally, it is far easier to share and provide useful commentary on Java code than LabView code.
If you decide to teach LabVIEW, you can also PM me. I’ll give you my email so you can contact me directly if you have questions. I’m a huge LabVIEW fan - of course I also work on the FRC software at National Instruments. If your goal is to get students programming a robot, LabVIEW has built in tutorials. They can also program a simulated robot and then drive it in a simulated physics engine. All you need is a decent computer (for the graphics) and a joystick.
That said, all the languages work great, and FIRST does a pretty good job of keeping parity between them as far as features are concerned.
I dunno, our team started with LabVIEW (even in the absence of a mentor with lots of experience with it), and we’ve been doing well figuring things out and it’s worked really well for us.
My honest opinion is talk to potential programmers, get an idea of what they want to do and then use that. If you decide to use LabVIEW, see if there are nearby teams that’d be willing to share their key (if I can dig ours out from somewhere, I’d be willing to share it as well, PM me).
Doing real-time controls well with a text-based language can be tricky.
Model-based languages like labview make doing it well a bit easier.
Truth be told, given what you described, it is probably a toss-up. The key to success, I think, is simply picking one, fiddling with it over the summer, and then sticking with the choice throughout the build season. Teams have great success with both so any issue you have will not be rooted in your choice of language - it’ll simply be in the application of it.
Even as build season rolls around, don’t be afraid to ask around here for help too! The main programming forum does get more traffic than the language-specific ones. As long as you keep your basic goals simple for this first round (ie, do just a simple drivetrain and simple manipulators - no PID :D), I’m sure we can all help you have success!
Others have posted the suggestion to reach out to NI. I’d strongly encourage the same. ni.com/frc has a link to a support number you can call and explain what you’re doing. I’d recommend this over the option to grab the SN from one of the other teams. I’d also agree that without practice, it won’t sink in.
I haven’t spent a great deal of time with JS. Some of the general ideas align, as is typically true with programming languages. But, I’m not sure how much of this would really help with learning how to program a robot or how to use any of the API. I’d probably focus your efforts on getting the kids comfortable with whichever language you end up deciding to use.
I won’t try to push you towards any specific language. Really, that should be a team choice made based on what you want to get out of the tool you use. I will point out the strongest opinions against it in this thread aren’t based in reality. Rather, they’re founded on fundamental misunderstandings. Each language has strengths and weaknesses, even in the FRC community. You’ll want to understand your team’s capabilities, current knowledge, and the knowledge of teams/resources you intend to reach out to when you get stuck to ensure the best position to succeed.
From an industry professional (large computer manufacturer) point of view, we don’t want any more Java programmers. We need more C/C++ and python programmers. Unfortunately Java is all the high schools and colleges seem to want to teach.
PIC’s, and other micro’s of all sizes are abundant in industrial equipment and especially in enterprise computing equipment; they can’t be programmed in Java. Some of the newer Arm based micros are now using Micro-Python.
Java is a great platform to learn and use and has it’s place, but if that’s all you know, you are limiting yourself in what you can do.
LabVIEW, we use it extensively! Everyday, it’s everywhere in industrial test, measurement and control.
Pick what you like, learn it and implement it. Summer is the best time to get ahead on the learning curve.