![]() |
Re: Why Windriver?
Quote:
Back in the day...being able to easily do what you just described was a pipe dream, a fantasy. Over 25 years ago I worked for a company and was charged with developing our in-house version of a product similiar to Labview. After spending many man-years worth of corporate wealth we released this product and about a week later Labview 1.0 came out. Many people do not really understand what a gift to students Labview, PTC, Autodesk, and others have provided. |
Re: Why Windriver?
Quote:
|
Re: Why Windriver?
I am on the other side of the spectrum when it comes to career choice. I want to be working on research and creating computer architectures and then creating the OS and compilers, assemblers and stuff like that. I want to work on stuff like supercomputers and distributed computing systems, quantum computers and cool biz like that. I actually want to make robots that use a distributed memory computing systems. Now this is not a farfetched goal. By the time I graduate college and go into grad school, it would be the norm if the pace is the way it is now. So these tools would be invalid to me because I would be creating similar software. I like open source because I can look at the source and learn.
Then after all that, I want to be a professor. Now seems like a very strange life, but it appeals to me. It is the equivalent to playing in the NFL, but for computer geeks. That is the reason why I was pretty disappointed with the FRC. I wanted to learn how to do all that low level stuff. I thought it was literally get a bunch of electrical components and soldering them together and making everything from scratch. Its not what I was looking for, but hey, beggars can't be choosers. By the time I graduate college, I would have had 10 years of C++ experience under my belt... But will that experience help in the world of super low level programming? |
Re: Why Windriver?
Quote:
I'm confused on why you think because FIRST uses proprietary software for its control system you feel restricted in your ability to learn about OS architecture and compilers. There are plenty of books, journals, and online resources available to explore these topics. Use them! Write your own compiler for fun! FIRST isn't stopping you, and neither is its lack of open source software. Plus, if you really want to get into those subjects, poke around in the lower level workings of vxWorks. Mess with multithreading and optimization! FIRST hasn't supplied some dumbed down OS designed just for the competition. Interested in compilers? Windriver compiles using gcc, the most widely used completely open source C compiler out there. In fact, here's the link to the source! Poke around to your heart's content! I'm with you. My interests don't exactly align with what FIRST offers. When I enter college next year, I hope to focus on computational theory and artificial intelligence. These subjects are why CS appeals to me. But I've found that FIRST teaches way more than simply a programming-based skillset. I've learned way more about working with a team and under extreme pressure than I have about CS, per se. And along the way, I've learned tons about robotics that I would not have had the opportunity to explore otherwise, and have enjoyed some of the greatest experiences of my life. This isn't a open source/closed source argument. I just think you're missing the point. |
Re: Why Windriver?
I seem to be the only person that agrees with davidthefat on this issue. I don't believe many people here have tried to do anything they "weren't supposed to" yet.
Quote:
Example: I wanted to bypass NIVision and skip the hassle of trying to train it to work in variable conditions (having it actually recognize something here, and then at the competition, are two different things) and substitute in a much simpler, static algorithm. On the presumption I can access raw images received from the camera, I start looking at the dashboard code to see if I can markup the image and send a modified one. I come to find out I can't directly access the image sent to the dashboard (and what I wish to do is more than draw boxes on it), so I put a custom dashboard in the back of my mind as something I needed to do. I can live without the feed for now. Right, next step, getting the image. After a day and a half of looking, I come to find out I can't actually bypass NIVision's access to the image. I looked around a while and found out the new radio is a combo bridge/access point. I plug the camera into the router instead of the cRIO and access it as such. After searching for a JPEG decoding routine, it turns out to be too slow (the cRIO doesn't use a very current VM at all). I end up moving all the image processing to the computer, and am developing from there. Anyway, this was all a really fun process, the cRIO is totally open and accessible! Quote:
Quote:
I'm assuming the second part about compilers is a separate thought, but either way, it's still a tenuous link at best. Too long; didn't read it? "It just bugs me." @davidthefat: Hope my presumptions about you don't offend, I'll explain them in more detail if you want. Personally, the only thing I can tell people (that makes sense to them) when asked about why I want to know how something works is similar response to your own. |
Re: Why Windriver?
@sjspry I think you misunderstood the purpose of my post (although perhaps I was not clear, my writing tends to be long-winded and confusing). I wrote it in direct response to davidthefat's most recent post, in which he seemed concerned that FIRST has limited his ability to immerse himself in the categories of Computer Science he finds most interesting. I was questioning what this had to do with the closed source/open source argument, and offered my own insights on how to use the tools FIRST gives to study the lower levels of computers.
It's funny that you mentioned the camera drawing, because I implemented something similar over the summer. I'm confused with how much trouble you had getting the JPEG image. I was able to find the solution fairly quickly. To do so, I looked at the WPILib C++ library for the Axis Camera (an open source library that can easily be browsed on FIRST Forge), and saw that all it did was use vxWorks's socket library to pool the server set up on the Axis Camera and stream the JPEG into a buffer which gets sent to the DS. Now, editing the image is a different problem, but there are plenty of open source drawing libraries that can assist in that. I've found that, in this certain instance, the openness of FIRST has allowed me to solve the problem without any interference or barriers. In response to your comments on optimization, yes, it is written at the highest level. However, you need a deep understanding of how vxWorks processes and prioritizes all the work necessary to complete the program to successfully create the fastest code possible. There are plenty of ways you can implement this, as well as multithreading, in FIRST again utilizing the power of the well documented vxWorks operating itself. Just because its not laid out nicely in WPILib or LabVIEW VIs doesn't mean its blocked off from accessing and impossible to implement. I disagree with your comments on the OS. Personally, I don't find it unnecessarily limiting that you cannot openly access every part of the file system on the cRIO. FIRST needs to ensure some level of consistency across teams for competitions and field connectivity to run smoothly. There is absolutely no need to access this level of the cRIO and, although I would certainly find it interesting to dissect the internals of the field management system, it is for the greater good of the competition that this is left secure. (the compiler statement was in response to his wish to work on and study compilers, to which I pointed out that FIRST uses an open source compiler if he wants to see how the inner workings of how one works). And, if the opportunities FIRST has presented to you cannot satisfy what you're looking for, the option to place a computer on your robot this year can fulfill that gap. Look into using a Gumstix minicomputer (which by default has a flavor of ARM Linux installed), or building your own, to outsource some of your robot control system. Here you can get literally as low level as you want, even writing in pure machine code if you truly desire. Send data through ethernet back to the cRIO, and make your robot do sick things. tl;dr "FIRST is more open than you think" |
Re: Why Windriver?
Generally I'm pretty pleased with FIRST. Pleased enough to have stuck around for seven or eight years. Last time I looked, no one was being forced to play the FRC game or use the FRC software. (Can you hear the "but..." coming?)
While I appreciate the donation of software, I also recognize that the support is a blend of philanthropy and shrewd marketing. Giving the software to students and teams that could never afford to buy it does not reduce the sales base for the software, comes at a very low marginal cost, and results in having your product exposed to thousands of people who might become familiar with it and then choose to purchase it a few years down the road. And that's just the students... having the mentors "forced" in to trying out your product is great marketing, too! So one could argue that the donation is a cynical plan to increase profits, or a mutually beneficial "win-win" scenario. I like to believe the latter. What I don't appreciate, however, is having the licenses expire. After I left for a new job my former school was unable to find the mentors to carry on with FRC this year and... with the Labview license up... have what amounts to a very expensive piece of garbage as a control system. I suppose they could sell the cRio and replace it... but it would be nice to have it around should they get back, or if another area school starts up an FRC team. Of course now, with the licenses timed out, it's not like any students at the school are going to be picking up a laptop, firing up the robot, rewiring the code and saying "Hey, this is fun... let's do it again." (Just as an aside... the EasyC licenses for our VEX robots don't expire, and they're still programming and using the VEX kits.) So it's great that the software is donated, and its great that its an industrial solution, and I'm sure that the FIRST board (who are a pretty bright group of people, after all) feels that it was the best solution for FIRST... but the best solution for FIRST isn't always necesarily the best solution for schools, teams, and students. Jason |
Re: Why Windriver?
So majority of FIRST's purposes are just head fakes. Its not really to teach you how to build a robot, but more like learning to finish with deadlines. Not to teach you to program robots in the low level but to learn how to work with other departments efficiently.
edit: What FRC feels like to me is "here is a bunch of lego pieces, make something cool with it" but I was looking for more of the "here is the lego making machine, make the lego pieces, as long as they fit, and make something cool with it". May be I'll have to wait for college for that type of experience. |
Re: Why Windriver?
Quote:
As for the openness of the libraries, the vision libs have a number of calls to copy the data into a low level data type, or even to hand you the pointer to the vision data structure. For LV, the VIs are IMAQ ImageToArray and IMAQ ArrayToImage. Taken from the NIVision for LabWindowsCVI Function Reference Manual, for C, the functions are Code:
void* imaqImageToArray(const Image* image, Rect rect, int* columns, int* rows);Creates a two-dimensional array from an image. and Code:
int imaqArrayToImage(Image* image, const void* array, int numCols, int numRows);Sets the pixels of an image to the values in a given array. This function resizes the image to the size of the source array. If you are wanting to do this in Java, you'll likely find that you need to write a wrapper first. Model it after the other vision wrappers or ask for help. Another way to go low level is to read the jpg from the tcp port. You have the low-level jpg encoding, and you can use other libraries such as the JPEG consortium's open code to decode and get at the pixels. I've spoken with several teams who wrote their own camera communication's lib, so it has been done before and is not closed. I'm not sure what any of this has to do with playing this year's game, but as long as you are doing that task as well and don't let down your teammates, these low-level side projects should be a fun diversion. As for FIRSTs purpose -- read the web site. If FIRST was going to teach you to build a world-class robot, it would be a course or a degree, not a competition. You are exposed to many of the fundamental robotic topics, and hopefully are inspired to go further. If you accomplish a fraction of what you list and FIRST played a part, they met their goals. If you decide to do something totally different with your life, but recognize how important technical training and problem solving skills are, they have met their goals. Greg McKaskle |
Re: Why Windriver?
Quote:
FIRST has a vision and a mission - it is on their website. FIRST is here to inspire you, to challenge you. Part of that process is giving you a task too hard, resources too little, people too many, time too short. It is microcosm of the real world experience. You will almost never ever find a useful job where the customer spoon feeds you the answers and or give you unlimited resources to take the time to do whatever project pops into your mind. If you find that job you will be living in the "ivory tower". What your "customer" (external, internal, private, public, etc) wants more than anything is a cost effective, relevant solution to their problem. That is the realm of applied engineering, and yes sometimes applied engineering has to do a lot of basic research. If you want to be a professor and do applied or theoretical research you still will not live in an "Ivory Tower". Your work will be funded by someone. You have to convince them that it is important and should be funded. Do not underestimate the importance of being able to motivate yourself learn, to meet deadlines, to work with other people and department, and to respond to their needs and requirements. If you can learn how to do these things you will be well prepared to work as an applied engineer, research engineer or scientist (professor), or many other things. For a student that chooses to embrace the challenges FIRST offers, they will receive in return 'years' worth of practical experience that is valuable to both the employee and employer, well before college graduation. |
Re: Why Windriver?
Quote:
That being said I don't think you understand the how much work it is for you to do everything you have said you wanted to do. 1.) Building robot electronics by soldering components. It just isn't possible to build a complex system in 6 weeks by starting at the component level. This means you have to make a choice: a.) Build and design the circuit by hand and greatly reduce the complexity of the Robots, or b.) use existing components that have been engineered by other groups. 2.)You will also find that in industry there are very few times that you will use open source software. Sure, I have Dev C++ and Notepad++ on my computer for work but I cont use them nearly as often as I use Visual Studio, or any number of IDE's for various microcontrollers (many of which are built on Eclipse like WindRiver). 3.) VxWorks is a great RTOS and is common in industry. I just graduated from college and was interviewing for positions in the Embedded Software field, all the employers I talked to were impressed that I had VxWorks experience. FIRST's software choices may not line up directly with your future goals, but they do line up with industry standards. FIRST's focus is Robotics, Automation, and Control, this lines up directly with my field and I can see great amounts of overlap in what I now do day to day, and what I did in FIRST. The software first gives you is Industry standard or equivalent. In day to day work you can always use an open source editor and create your own makefiles but it takes longer, and time is a company’s most valuable resource. |
Re: Why Windriver?
Quote:
Thanks for the tips btw. What I ended up doing before was hitting <ip>/axis-cgi/jpg/image.cgi?resolution=320x240 a few times a second. Way more responsive than the premade dash. @Greg I skipped writing a wrapper library for several reasons, the main one being I wished to write my own recognition routines (I'm sure NIVision is good at what it does, but it could turn out problematic based on the differing circumstances of our testing area and the playing field. My idea was something much simpler with just some blob detecting, where I just need to find a color range for, example, the pole or the tape.). After realizing I wouldn't be able to do anything quickly within Java, I just ended up moving all the recognition code to the computer so I could stick with Java. Much easier in my opinion than having to write everything in C++. The libraries on the cRIO are so limited I'd much rather be doing it on the computer anyway, and I'll be using Java simply because of the large standard library. |
Re: Why Windriver?
Quote:
As for the dashboard, all of the camera users are using the cgi requests to the camera. There is a bmp, a jpg, and an mjpg that you can use. The default dashboard goes through the cRIO, but if you move the camera, your laptop can directly talk to the camera. If you'd rather use the laptop to learn about image processing, that sounds like a fine initial approach. But it would be a good idea to learn how to use other people's libraries, like NIVision -- Color conversions, color thresholds, blob measurements, all in there. Additionally, when you find things that aren't in there, the libraries can be extended. Deciding that you have to do everything over again, in the language you choose can be a tough requirement on any project. But if you are making progress and helping the team build a better robot, power to you, let me know if you have any questions. Greg McKaskle |
| All times are GMT -5. The time now is 13:19. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi