July 05, 2021

How to solve AI problems in contrast to solve programming problems?

 Computer programming works with a certain principle in mind. This general principle can be adapted in solving a new problem unknown before. Suppose someone likes to create a hello world GUI application from scratch. For doing so, he has to write down the source code. Then the code is compiled into binary code, and the code is executed.

Creating larger projects is possible by repeating these steps and introducing object oriented features. The result is, that any sort of application can be created within this paradigm. This principle has become so successful, that many programmers are convinced that any sort of topic within computer science can be handled within this framework. But it is not. Robotics and other AI related problems doesn't follow this principle in mind. If someone tries to create a robot controller similar to creating a hello world C++ application he will fail.

A more demanding problem is, that it is not possible to repeat robotics projects from the past. Even if programmer A has successful implemented a maze solving robot, programmer B can't create the same robot. This is surprising because the source code is distributed under an open source license and it should be pretty easy to reverse engineer the former project.

The main problem in AI is, that the underlying principle is not known. There is no programming language, framework or workflow which results into working robots. And because of this reason, the engineers have struggled over decades to create robots in the reality.

The only pattern which remains relative stable in the robotics domain is, that every project has a tendency to fail. That means, the programmed robot doesn't work. There is a gap between the requirements of the robot and what the machine is doing. For example, the robot should avoid the obstacles but in the reality he will collide with them. The interesting situation is, that even after the bug was fixed, the robot won't work as expected but it will collide a second times with the obstacle.

Instead of trying to program robots, the more eloquent approach is to postpone the problem to a later period. What a programmer can do instead is to create teleoperated robots. The interesting feature of this approach is, that the robot will work as expected. Creating a teleoperation controll follows the common principle within computer programming. That means, after writing the code and improving it, the robot will work as expected.

To analyze why teleoperated robots are working great we have to define the social role of a robot. There are two sorts of robots available: autonomous ones and teleoperated robot. Teleooperation is equal to see the robot as a medium, similar to a mouse cursor on the screen. And the underlying principle is called shared control. Shared control means, that the human operator remains in the loop. This prevents that the robot fails.

With this small modification the resulting project will look different from standard robotics. Instead of programming a robot the idea is to programming a teleoperation control with a reduced workload. That means the progress is measured how much human interventon is needed to guide the robot into the goal. In the worst case, the robot is asked to use a joystick and he has to control the robot all the time. In such a case, the autonomy is low and the workload for the human operator is high. The task is to reduce the workload a bit.

The interesting point is, that it is much easier to solve such a challenge. It is up to the programmer to try out a new remote control and then he fails or not.