|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
||||
|
||||
|
Opinions wanted: LabView-based controller?
Many of you probably saw the rumor that was posted in another thread that the new RC was to be an NI device that is programmed using LabView. The poster later recanted that statement, but it brings up an interesting topic.
I know there are already several other threads on the new RC, but I'd like to discuss something more specific in this thread. I am curious about how would you here on CD would feel about an RC that required the use of LabView to program it. I have a strong opinion on this subject myself, but I won't go in to that right now. I would, however, like to know how the rest of the FIRST community would feel about that option (well, at least how the "people-who-post-on-CD" community feels anyway). Tell us what you think the pros and cons are, tell us why you like or dislike the idea. Tell us if you have first-hand experience with LabView or if you're basing your opinions on second-hand information or just what you think you know about it (it's OK if you don't have experience with it, but I think it's important to note what your opinions are based on). Anyway, I hope this might generate some interesting conversation. |
|
#2
|
|||||
|
|||||
|
Re: Opinions wanted: LabView-based controller?
My opinion: Bleah. That's a sticking-out-tongue bleah, not a shrugging-shoulders one.
LabView is useful, powerful, and appropriate in some contexts. In my opinion, a project with thousands of programmers creating thousands of individual programs with many shared features is not one of those contexts. Learning the LabView "style" of programming does not carry over well to other development environments (and vice versa). If FRC were to start providing LabView-based robot control systems, I think the pool of helpful programming mentors would shrink drastically. Even with experienced programmers standing by to help, it's a lot easier to do text-based support on a forum like Chief Delphi than it would be to try to assist someone having problems with a graphical programming language that hides details behind separate layers of views. (I have programmed using LabView, and I use LabView-developed systems regularly.) |
|
#3
|
||||
|
||||
|
Re: Opinions wanted: LabView-based controller?
I have never used LabView for development, however in my opinion a move away from C would be a big mistake. The biggest pro of using C is that it is the one language you will find in almost every technical industry and University engineering program.
|
|
#4
|
||||
|
||||
|
Re: Opinions wanted: LabView-based controller?
I have experience in LabVIEW... for better or worse. I guess i'll just start out with some pro's cons for the language itself:
Pros: Insane amount of conenctivity options, rapid software prototyping, many built in Signal Processing filters and functions, little learning curve for very basic operations, graphical, great quick easy operator control pannels, easy integration of multiple high complexity sensing systems, C code snippets can be used, LabVIEW vi's can be compiled to ANSI standard dll's, can handle and optimize-compile for multiprocessor/multicore and 64bit processors, can compile to FPGAs, compatible with SolidWorks CosmosMOTION in-pc design mechatronics/programming full simulation system (run your code in a purely virtual full physical simulation environment) Cons: MEMORY INEFFICIENT (all variables passed by value), LabVIEW code runs at decent speed but isn't the most efficient, code nearly impossible to document, debug difficult, code appears extremely complex, some fundamental features missing (ex, poor array functions), no zoom on editor (it sounds trivial but just try 'writing' code for a while), complex functions have large learning curve, debug sometimes difficult. Now that's just LabVIEW.... NI hardware is AMAZING! I usually avoid labview but for some functions speed is not a huge issue, and the picture (code) you make isn't way too hard to read, then i sometimes use it favoring speed of development over execution efficiency and algorithmic power. NI has a gigantic array of hardware... all of which is expensive for FIRST robot type price ranges and probably overkill... but wow... the thought of having a PXI chassis on a robot with an XPe computer card.... whoooo hoo. For those of you who arent familiar, you really should check out NI's hardware products... I've experience with their M-cards (PXI I/O cards), NI-Motion cards (fantastic performance! but $$$$$$), CAN-interface cards, Vision systems (check out VBAI) and others.... all of them have performed with exemplary performance. So, in my opinion, would it be cool to have a PXI or something of the sort NI hardware based controller? ABSOLUTELY! (provided we got hefty discounts) Would I like to see LabVIEW show up on a FIRST controller? Not so much... I don't mind if its an option, but I'd still like to be able to write C, even if the C code runs within an NI framework... as long as the C code you can write is not in any way restricted (i.e. can still run arrays and such) What do you all think.... -q |
|
#5
|
||||
|
||||
|
Planning, Training, and Support Critical
I'd much prefer to stick with text based programming for the same reasons already mentioned by others. I can see some benefits to the Labview environment and done right it can work.
However, getting it "done right" can be tricky. My FIRST Labview experiences have not made a good impression. This applies to both trying to get the Camera code working a couple of years ago and trying to do a data acquisition project last year. I'll admit to not doing much of the tutorials, but a lot of my concerns really aren't covered in the ones I did try.
I'm sure we can work with it, but as I've said elsewhere, the sooner we know what we're working with the better. This would be a major change, not just a rehashing the current code. Labview based development will call for an entire new set of training resources. The demo at Kettering made it look more promising than I would have thought, but the details are key to making it work. |
|
#6
|
|||||
|
|||||
|
Re: Opinions wanted: LabView-based controller?
For those of you who don't know me, I am a LabVIEW developer working for National Instruments on the LabVIEW Floor. Admittedly I do not develop features in the Core of LabVIEW, I am the owner/maintainer/developer of our x86-based RTOS used in LabVIEW Real-Time. Now that this has been said, I'll be frank with my own personal experiences - I use LabVIEW for several of my "personal" projects as well as in-house projects.
Learning LabVIEW from a C and Pascal based background was definitely not the most pleasant experience; I was a Co-Op student at GTRI and my boss threw LabVIEW and some IMAQ hardware on my desk and said, "Use this to track people walking under a camera." In a couple weeks I learned enough LabVIEW code and its syntax to do pretty much anything I wanted, but the hardest part about learning LabVIEW was getting out of the C mindset. I pulled my hair out trying to figure out how to lay down the code blocks in the correct format, tried to figure out what styles of structured programming work for different scenarios, and until I learned to use the tools that were in front of me built into the language I had a difficult time. It's no hidden secret - just like any other language, Dataflow languages like LabVIEW have a completely different "style" of programming and until you've been programming in it for a couple weeks it's going to be somewhat painful to transition. I would declare myself an expert C programmer, and a proficient LabVIEW programmer. I can do things in LabVIEW in a couple clicks of a mouse that would take me an hour to do in a language such as C. On the flip-side I can perform some specific programming tasks in C in a few minutes that takes me an hour to do in LabVIEW. I can read a C program for an hour and understand everything about it, but I might spend twice as long on a piece of LabVIEW code and still not know all the nuances about it. Reading this you might say, "Well, then, the choice is clear - C is the better environment." I say you can make no such statement - it's impossible to make a qualified comparison between the two languages. And once you are experienced enough to think you can make a comparison, then you will realize there's this thing called LabVIEW Real-Time, and your assumptions about memory, diagrams, and performance just get thrown out the window! LabVIEW Real-Time, which is what we use on our PXI, cFP, cRIO, and CVS hardware is optimized for the embedded space; what I mean here are targets with very little memory and slow processors. Of course, now that we've got LabVIEW Real-Time SMP we can handle multicore devices and do things that other RTOS systems can only drool at. Would you like to have an entirely dedicated core for a PID loop? Yeah, we can do that. Would you like to have native parallelism (native threading model)? Yeah, done. Would you like to be able to interact with your hardware on a low-level or high-level basis? Yeah, we've been doing it for years. However, we are definitely in the same boat as C, JAVA, or other "traditional" languages - we're only as powerful as the guy writing the code. Just because you have a .c file or a .VI shouldn't cause you to think any differently about the quality of the engine being used to compile it or to run it. I say this because a lot of people had problems with the CMUCam application that was written and provided to teams. That code was written by a FIRST supporter and volunteer who had an extremely good piece of hardware in his hands when he wrote that code. However, he didn't account for the garbage that is sold really cheap these days, and didn't put in the required error detection and correction code that was eventually needed. Plus who would have guessed at the wide range of hardware issues that eventually came into play when dealing with the CMUCam? There's a whole forum on the problems people have had with that hardware when interfacing with LabVIEW, and several more forums on problems with interfacing with C! Customers who use LabVIEW love LabVIEW for its inherent parallelism - its ability to natively be multi-threaded. That's a powerful tool, but one that you STILL have to understand what you're doing before you do it, even in C. Race conditions, synchronization, scheduling - all things you still have to deal with, even in LabVIEW. For good or for bad, it's easy to find things you don't like about LabVIEW. It's also easy to find powerful things about LabVIEW that just cannot be done in languages other than LabVIEW. I could talk for hours on the benefits of LabVIEW, specifically relating to FIRST Robotics, and I can even give you some reasons why LabVIEW might not be the right language for FIRST. But unless you hear them all it's near impossible to make the determination that needs to be made eventually, which is the question you're asking - Should LabVIEW be a language that teams use to program their robots? -Danny |
|
#7
|
|||||||
|
|||||||
|
Re: Planning, Training, and Support Critical
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
-Danny |
|
#8
|
|||||
|
|||||
|
Re: Opinions wanted: LabView-based controller?
Quote:
Last edited by Alan Anderson : 25-09-2007 at 16:03. Reason: original wording might have been misunderstood as sniping |
|
#9
|
||||
|
||||
|
Re: Planning, Training, and Support Critical
Quote:
On the other hand, if it is true that big, complicated things like LabView are inherently buggy then I'd cite that as a good reason not to use it. |
|
#10
|
|||||
|
|||||
|
Re: Planning, Training, and Support Critical
Quote:
-Danny Last edited by Danny Diaz : 25-09-2007 at 16:19. Reason: original wording was confusing |
|
#11
|
|||||
|
|||||
|
Re: Opinions wanted: LabView-based controller?
While a LabVIEW-based controller would run fine, there are teams out there programming on a 350MHz laptop with a 6GB hard drive with 128MB of RAM. Try installing, let alone running, LabVIEW on that.
And LabVIEW does NOT need to install any service on my machine (a good program does not rely on them), or start anything up at startup, yet it was trying to start at least 3 processes (which I promptly disabled) at startup. I also find that documentation on LabVIEW is extremely sparse. For C, there are *tons* of tutorials. Not so for LabVIEW. Mostly because it is so expensive. At least before today, the MCC18 compiler could be run on any system, even Linux, through WINE. I'm 99.99% sure LabVIEW won't so as well in an emulator. What about alternate OS programmers? I'm tired of proprietary software. I'd like to see IFI or whoever designs the new controller to *completely* open-source the whole thing. Schematics, master code, compiler, IDE, etc. That would be really nice. If LabVIEW was quite a bit less beefy, then maybe I might go for it. However, I think that many programmers would be disabled by LabVIEW--it wouldn't install on their systems, or would crash. It's fine for industries that can afford new computers, but we are not such an industry. It's not that I'm trying to put down LabVIEW; I believe it has applications in other areas (signal processing and simulation are two areas that come to mind) but I don't see it as suitable for FIRST. Maybe I'm just biased by all of the nice open-source projects I've seen, but that's my 2 cents on this topic. JBot |
|
#12
|
||||
|
||||
|
Re: Opinions wanted: LabView-based controller?
Quote:
Quote:
Quote:
Last edited by Adam Y. : 25-09-2007 at 17:10. |
|
#13
|
|||||
|
|||||
|
Re: Opinions wanted: LabView-based controller?
Quote:
Quote:
It would be fun to experiment, but when all is said and done, I am much happier coding in C. JBot |
|
#14
|
|||||
|
|||||
|
Re: Opinions wanted: LabView-based controller?
Quote:
![]() Quote:
-Danny Last edited by Danny Diaz : 25-09-2007 at 18:30. Reason: added clarifying statements |
|
#15
|
||||
|
||||
|
Re: Planning, Training, and Support Critical
Danny, thanks for your replies, It's nice to have your expertise here.
That may be true, but these services should be inactive unless I'm using LabView and should shut down without errors when windows does. Quote:
Ultimately, the main message that I was trying to convey in my earlier post is that we'll need adequate time, samples, and resources to successfully use whatever controller we go to next. I appreciate the effort that went into the Labview samples we've seen (CMUCam and others) I just remember having a student become more frustrated than inspired trying to get things to work. I think the LabView RT system has real promise as a controller. I'd rather have a less bulky and complex system to program with, but I am intrigued by the possibilities of the hardware and software. As to whether this is like what is used in industry, I think the graphical approach is becoming more and more prevalent even where C programming is done. We use UML diagrams for our design documentation and some code generation. We have also looked at other graphical tools as well. Graphical programming has been used for years in factory and lab control applications. Actually, Relay Logic and PLC controls which have been around for decades are actually simple graphical programming environments. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Wanted: 2006 Robot Controller | BradyP4 | Control System | 3 | 06-08-2006 21:13 |
| Wanted: 2005 Robot Controller | BSMFIRST | Control System | 0 | 01-03-2006 11:27 |
| Human Arm based controller | Andrew Schuetze | Control System | 5 | 09-10-2005 15:05 |
| People's opinions.. | pras870 | General Forum | 9 | 14-01-2004 23:53 |
| 2 v. 2 opinions | P.J. Baker | Off-Season Events | 11 | 28-06-2001 13:24 |