4 Reasons Programming Robots is Difficult
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.
Lack of Built-in Reliable Communications
Communications in robots are also not very well-developed. When you move around with your phone, the infrastructure (cell-phone towers, and other computer equipment from the cell providers) handles switching towers as you drive down the road in your car and move out of range of the last tower.
In robotics, most people use Wi-Fi or something simple. Cellular connectivity in robotics is expensive, due to certification requirements. Cellular connectivity is becoming more common with M2M and IoT hardware, but for very small amounts of data.
From the programming point of view, when you program a mobile phone, you can depend on the phone’s OS and hardware to manage how you are connected to the Internet. It’s not perfectly seamless, but for most applications it does the job.
The requirements for many robot applications are higher. A robot may depend on communications to prevent it from crashing, or there may be mission critical sensor information. Currently this requires skillful programming to overcome. In the future, the robot hardware and software should be able to manage this automatically so the programmer can depend on robots being able to communicate with each other and with the Internet reliably.
Robotics Platforms are Expensive
One of the biggest factors keeping robotics programming complicated is the expense of getting started. There aren’t many platforms for robotics, and the ones that exist are usually extremely expensive. There are many platforms that are good for hacking some really cool starter types of projects like Arduino and Raspberry Pi but as I mentioned - these are far from plug-and-play and are very general purpose. They are often used for a wide variety of projects and as such aren’t well suited for more complex robots.