General Misc > Misc

Considering Mechanical Engineering, advice on robotics please?

(1/3) > >>

Hi there, I find making robots very interesting, and in fact, I am considering going to college for mechanical engineering with a focus of robotics. However, I did have a few questions first...

* If I wish to make my own robot from scratch, and if I use a microcontroller, do I have to program it with C programming language? Basically I'm wondering if in order to program robots if I need to learn and master C programming language...
* If so, does every robotic device use C programming language? like, is it a universal programming language? [li]How difficult is it to create a really, really good robot? Like, say for example I want a robot that can drive around in all directions, and has an arm attached to it to pick up something? How hard is it to make a robot of such caliber?

People will come in and mention various approaches to microcontroller and robot programming that don't *require* C knowledge. BASIC stamp, Netduino, LEGO Mindstorms graphical GUIs, and the like.
People who do this may mean well, but they give bad advice for the purposes of career development. For all real intents and purposes, you need to learn C (and, likely, C++) if you want to get into embedded microcontrollers. It's the closest you can get to a "universal language" for computer programming in general, and especially for low-level devices. There exists devices where C won't work, but those are few, far between, and usually in the margins.

A robot that can drive in all directions, and has an arm? You can buy components off the shelf, screw them together, and get it up and running in a week.
A robot that can actually fulfill specific requirements robustly? That's probably much harder, because anything from power cords and table legs, to bad ligthing and poorly oriented target objects, will challenge the "simple" approaches to robot behavior.
You may start out with a simple robot that can run around without bumping into walls, but to solve all the "real world" problems you end up solving problems ranging across steroscopic cameras, fuzzy object detection/image recognition, SLAM (simultaneous locating and mapping), path planning, safety interlocks, battery runtime, mechanical system inaccuracies, and a dozen other real-world challenges I'm forgetting about or haven't even learned about yet.

On the programming note, I will echo JWatte in saying that avoiding C is pointless.  But rest assured, you don't need to be an expert to get started... though that never hurts when debugging code.

My recommendation is that every engineer should understand programming logic.  In particular, I've found C and Python to be a good pair of skills to have.  Python is more of a scripting language, and ends up being well suited for computer-side interfacing with robots (e.g. logging data).

Check out the $50 robot tutorial on this website, if you haven't already.  It won't be a 'really good bot', but it will definitely get you hooked.

I studied mechanical engineering in college.

For my electives, I took classes such as electronics and three semesters of C++ programming. C++ is very similar to C, so I managed to learn C on my own after that.

Higher level languages, such as java, have fewer similarities with C so if your goal is robot programming, don't go that route.

C is used to program 99% of all robots. Period. :P

What kind of job do you want for making robots?

If you end up at an industrial robotics company there are lots of jobs that don't involve software. Designing work stations for an assembly line, designing new end effectors, etc.

But, having an understanding of software is a good thing and would improve your marketability if you want to have a robotics related job. You will at least need to know how your device interacts with the software. And, likely you will be involved with testing your mechanical device which will involve instrumentation / interfacing / data collection. And the ability to write up some test code to drive the device for testing may  be essential.

Learn C.

Learn math (you automatically get that as part of your Mechanical Engineering Degree)

Learn at least some electronics.


[0] Message Index

[#] Next page

Go to full version