I want to know:
Do you need hardware skills to be a robotic programmer?
Software Engineering Stack Exchange is a question and answer site for professionals, academics, and students working within the systems development life cycle. It only takes a minute to sign up.Sign up to join this community
Depends what programming of what robots.
When programming industrial robots, you usually need to know pretty well the ins and outs of how this specific model is constructed. Perhaps not to the level of individual nuts and bolts, but you eed to know how much load it can handle, what forces/speeds/accelereations are allowed, which positions result in lower capacity or positioning quality etc. This is rarely a problem though, because before anyone ever lets you (or your program) near a robot on factory floor, you go through manufacturer's training.
It depends on the level you program the robot on. Have all the hardware abstractions already been programmed? If not, it's a lot like embedded development and you'll need to know the strengths and limits of the hardware pretty well.
Many robots these days run embedded linux. What if a new, custom device was added to the robot? You'd have to write a driver software. So you should have a thorough understanding of how to program close to system and hardware. You don't need to be an expert on hardware, but fundamental knowledge of digital circuits and electronics is mandatory.
You should also have some knowledge of mechatronics. It's much like business software: You can't write good software if you don't know your business domain well.
Of course, if you don't develop the robots on your own but just get one from a vendor, the APIs and abstractions have already been written. Then it boils down to end-user programming, often with custom languages, and the hardware isn't that important anymore. You can then focus on the tasks the robot should carry out. This can be a broad range of tasks, from very trivial ones (easy movement sequences) to very complex ones (decision making on basis of complex data, AI).
In conclusion, you can say:
Edit: btw, most robot programmers and embedded developers I know are electronics engineers.
However, all this is subject to change in the future. Programming computers has come a long, long way. In the early days of computers, you had to know your hardware pretty well. Today, this knowledge has become less and less relevant to programmers in most fields. The same will probably happen to robots one day.
I'm not in that field, so I can't say how easy it would be to get a job without knowledge of hardware skills.
Though for the programming part you can for sure do this without knowing much about hardware. I played around with the Gazebo Project once and my lack of hardware knowledge was no problem at all. There are many other robot simulators of that kind and as far as I can say, all modern robots have a very abstract interface for their functionality, that allows programming them in high languages like C++ or Python with simple commands that control their functionality.
I think the requirements for this part of programming robots are more on the line of image processing, path finding and in general search algorithms of the artificial intelligence kind that enable you to write software that lets the robot interact with a complex environment and make smart decisions.
As an example: The well known RoboCup Contest has for it's Rescue Contest a Simulation League where teams compete in the USARSim environment, so they can test their software against other teams even if they don't have robots of their own. Those tasks, exploring a simulated disaster area and finding victims need specialists in many areas. 9not sure if this league is still active, but it was for many years)