Mobile phones have been around since the 1980s, but it’s really only been since the Blackberry’s, iPhones and Androids that phones have become truly easy to program. Prior to that, the apps people created were typically restricted to particular models of phones and weren’t very portable.
Tons of work went into making sure APIs become cross-platform (at least within a company) so that developing an app would work in the future as new phones were released and so that apps worked across devices with varying capabilities.
I’ve created a few apps – the only ones I’ve actually released were for Blackberry a few years ago, but I’ve also played around with Androids development environment. Increasingly, it’s becoming possible to create apps that work across iPhone, Android and Blackberry without a ton of extra work. This is in part due to platforms which support open source frameworks. It is also due to clever design from the engineers and computer scientists at the various mobile phone companies.
The reason it is easy to program a phone is because there are a wealth of example programs that get you started quickly with something basic, but also let you use your imagination about what you could build. This is achieved with a well-documented API. The list of functions, classes and how they work together that let you use your imagination about how you can build.
This is starting in robotics with initiative such as Robot Operation System (ROS), OpenCV for vision and other similar libraries. However, these are focused at a fairly high level of abstraction, leaving much of the work at the lower levels. Unless you have a strong background in electrical or computer engineering, which I admittedly do not, it can be difficult to build a robot.
Here are three more reasons it’s difficult to program robots.
Robots Aren’t Plug-and-Play
There is a need for standard methods for connecting sensors, motors, actuators, cameras and other components to robots. The state of robotics software is somewhat like computers before “plug-and-play” was invented.
In addition to having to develop some low-level device driver type code, you must also sometimes create circuitry to connect the physical devices with the robot computer to even begin. Then you can start making use of tools like ROS, OpenCV and the rest of the libraries.