Preparing for a Career in Robotics?
seanfast asks: "I just graduated from college with a B.S. in CompSci and a specialization in Artificial Intelligence. I am currently working full time, but I want to go back to school part time for my M.S. and specialize in AI or Robotics. Unfortunately, with my time schedule, and the extreme scarcity of a degree with either of those specializations being in my vicinity, I will most likely have to settle simply for a M.S. in CompSci with no specialization. If I want to work in the field of robotics and AI later on in life, what do I need to do in my current situation to prepare myself? Some have told me I need a strong mechanical engineering background, some have said I need a stronger software background, and some say I need to just tinker with stuff in my free time and not even worry about what they can teach you in school. Any advice, Slashdot?"
I can't give you advice on how to get into robotics because I never successfully did that. I worked with pioneer robots mounted with laptops and had the whole Aria package figured out. I studied all the white papers and took all the courses. I'm even getting my masters with a specialization in AI. What was my problem? I'm not sure, it was probably the fact that my grades were ~3.5 GPA out of 4.0 & I've never been published.
If you really love this topic and will settle for nothing less, then you have to be prepared to devout a lot of time to reading about everything out there and, yes as you mentioned, tinkering with things like JStick and real time microboards all the time. You need to be a master of forward & inverse kinematics and also have all the algorithms down pat.
I say this because people are not ready to hand over responsibilities to robots. You might cite NASA but their rigorous protocol of checking and double checking every tiny movement of their robots anything but artificial intelligence. Reason? High failure rate otherwise.
Today's robots leave a lot to desire. That might have changed since I last looked in the field but I can tell you that less than 5% of all computer scientists are lucky enough to work with robots (or unlucky enough) and I think an even smaller percentage get to develop for them. Maintenance is just as needed there as it is in any other software.
I'm not trying to discourage you, I'm trying to be realistic. I read I, Robot in fifth grade and it changed my life. Unfortunately, it only gave me the desire, not the rigorous technical background needed to put me in the few high percentage points of students.
You mention mechanical engineering but that implies robotics from scratch. If you're a computer science student, I advise you to treat the hardware as a blackbox and use the APIs to program for them. There is some cross over you will need to learn to program for arm or walking robotics but this is more theory of how your code should look to work the controllers. I guess if you want to design from scratch and make genuinely new physical robots, then you need not only a mechanical engineering background but also one in electrical engineering. I also foresee a lot of the signals moving from hardwired to wireless for simplicity so that would mean Fourier transforms, wavelets, & the like.
My suggestion is to hit Citeseer for the free papers. Hit your college's IT site and try to get into the IEEE Computing document repository. They also have a special robotics division that you might find useful for creating contacts though I'm a member of it and that's never happened (you have to attend a lot of meetings). Look everywhere for material on the topic and see what other people did right and what other people did wrong. Have you ever heard of Robocup? Definitely read all the papers released about that and look into becoming active in your university's robotics lab.
Most importantly, keep yourself knowledgeable/marketable for conventional jobs in computer science because you really never know what's going to happen. Robotic development has a very limited market. The factory line robots are getting more and more reliable and it seems any biomimicked robotics are for purely entertainment value. I'm not intending to be mean when I say it, but there probably is no "career" solely in robotics. You've got to bus tables in the computer science world before you can prove yourself to the big dogs.
I now write web services and web applications. You have a romantic goal, I wish you the best of luck in a more exciting future.
My work here is dung.
If I want to work in the field of robotics and AI later on in life, what do I need to do in my current situation to prepare myself?
If that is really the only thing you want to do (i.e., life-long passion and all that), then go to CMU. AFAIK, there is no better robotics program than the one at Carnegie-Mellon.
pretty much regardless of what you want to do in robotics (other than at the technician level), you're going to need a master's degree and quite possibly a ph.d, depending on where you end up working. part of the process of getting the advanced degree means accepting that you are probably not one of the very few people in the world who are able to master robotics from the high level control / deliberative planning, low level reactive planning, perception, mechanical and electrical control, communications & processing architecture, all the way down to the low level circuits and mechanical systems. so pick something you want to do well in (in my case it's the machine perception and sensing side) and write a master's thesis (or do a master's project) on something relating to that speciality.
:-)
regardless of your chosen speciality, you're going to want to get to be really good at math. in particular, linear algebra, calculus (multivariate), trig, analytic geometry, and stats/probabilities (in particular, bayesian thinking). also make sure you are really solid on forward and inverse kinematics. finally, an understanding of communication systems will be incredibly useful.
concurrent with that, see if you can get a job working in the field. drop me an email and i can get you in touch with my company's recruiting/hr people (we qualified 5th at GC2 and we do a lot of UAS an UGV work). of the r&d staff, about 17% hold ph.d.s and over 90% hold at least one master's degree (there are several folks with multiple m.sc. degrees).
finally: good luck! i know i couldn't believe that i'm actually being paid to play with the toys and do cool stuff with them
First, there's two kinds of robotics out there. There's the classical robotics like factory automation systems, which are made to be as reliable and predictable as possible. If you want to work in that field, you probably should have gotten an MEng in mechanical engineering and gone on to a PhD within the field specializing in control systems.
Then there's adaptive robotics, closer to what people in general think of when they hear about robots. Adaptive, self-reliant systems perhaps capable of interaction with humans and able to get about in the world on the worlds' terms, not on their own. And there, I'm afraid, a CompSci degree is not going to cut it.
Doing real adaptive robotics is a hard problem. It requires a lot of different subspecialities, from mechanical engineering to learning theory to neuroscience. You may have physicists, linguists, mathematicians, behavioral psychologists and neurobiologists all on the same team. And most of them will know AI and programming well enough already. It would have been a lot easier for you had you focused on on a field like the ones above rather than CompSci, to be frank.
What you likely need is to be accepted at a PhD program with robotics somewhere; preferably one that lets - or requires - you widen your field to really learn one of the needed specialities as you go along. Since adaptive robotics is very experimental still, there really is no good training outside a PhD program, and nobody is going to take you seriously unless you have that doctorate anyhow.
Trust the Computer. The Computer is your friend.