October 21, 2026

Mechanische Automaten als offene Systeme

 Durch die Erfindung des Computers in den 1950er gerieten mechanische Automaten und Zaubertricks in Vergessenheit die früher auf Theaterbühnen gezeigt wurden.

Um 1773 hat Jaques Droz mehrere mechanische Automaten entwickelt, während 1769 der Schachtürke durch Wolfgang von Kempelen gebaut wurde. Der Automat " Antonio Diavolo von Robert Houdin" ist etwas weiterentwickelt und stammt aus dem Jahr 1849. All diese Beispiele kommen ohne Computer aus und funktionieren rein mechanisch über Baudenzüge. Obwohl sie computertechnisch rückständig sind, haben sie einen großen Vorteil: es sind offene Systeme. Damit ist gemeint dass sie als Zaubertrick konzipiert sind, bei dem ein Helfer im Hintergrund an den Baudenzügen zieht um so die Puppe zu bewegen. Auf diese Weise wird keine Software und kein Algorithmus benötigt, sondern die Intelligenz kommt von einem Menschen.

Das Konzept des offenen Systeme ging ab der Erfindung des Computers in den 1950er in Vergessenheit weil der Computer ein bestimmtes Programmorientiertes Vorgehen erfordert. Ein Computer benötigt zwingend ein Programm, das in einer Assemblersprache oder in einer Hochsprache spezifiziert wird. Die komplette KI Entwicklung und Robotik-Entwicklung ab den 1950er basiert auf diesem Prinzip. Anders als bei den frühen mechanischen Automaten gibt es nicht länger einen Menschen der im Hintergrund als Intelligenz agiert, sondern diese Rolle übernimmt der Algorithmus.

Dadurch entstanden geschlsosene Systeme, ohne dass den Programmierer dieser Paradigmenwechsel bewusst war. Die Annahmen lautete, dass Algorithmen besser seien und das Roboter nur über Algorithmen gesteuert werden könnten. Dadurch hat man die Roboter von Umwelteinflüssen isoliert und komplexe Aufgaben konnten nicht mehr durchgeführt werden.

Ferngesteuerte Automaten oder ferngesteuerte RC Cars können hochkomplexe Aufgaben wahrnehmen, während Algorithmengesteuerte Roboter nur simple pick&place Aufgaben ausführen. Der Grund ist dass programmgesteuerte Roboter mühsam programmiert werden müssen was aufwendig ist, und die Frage aufwirft wie ein solches Programm aussehen muss. Im Gegensatz dazu benötigten ferngesteurte Automaten nur eine versteckte Angelsehne oder einen Baudenzug womit ein Gehilfe mit dem Automaten interagiert und fortan vermag der Automat auf menschlichem Nievau zu agieren.

Noch heute stehen die frühen Mechanischen Automaten in Museen weltweit und wenn man genau hinsieht wird man den Baudenzug oder eine andere Form der Fernsteuerung dort entdecken. Das Prinzip ist also bekannt, nur wurde es seit den 1950er Jahren verdrängt zugunsten eines mathematisch-orientierten Algorithmenbegriffs der vermeintlich besser ist, aber defakto ein Rückschritt darstellt.

October 20, 2026

Another inverse VQA game

In contrast to the previous blog post, this demo is not about answering question but about executing actions. So its an inverse instruction following. Not the AI is in charge to do something, but the human has to do actions in the game, here a sokoban clone.

the possible instructions are formalized in a BNF grammar:

<instruction>      ::= <move_instruction> | <push_instruction>

<move_instruction> ::= "move to " <destination>
<push_instruction> ::= "push box #" <box_id> " to " <destination>

<destination>      ::= <section> | <position>

<section>          ::= "top left" | "top right" | "bottom left" | "bottom right"
<position>         ::= "position " <digit_1_to_10> "/" <digit_1_to_10>

<box_id>           ::= <digit_0_to_9>

<digit_0_to_9>     ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<digit_1_to_10>    ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10"


After the human operator has pushed a box to the target location or moved the robot to a certain location, he gets rewarded with +1 and the next quest is shown. The interaction has much in common with NPC quests (non player character quests) in classic role playing games. The challenge for the player is to translate a certain textual quest into the correct action.

Inverse VQA

Classic visual question answering is played by a human who asks the question and an artificial intelligence who answers them. Implementing a full blown VQA Model as neural network is a complex task which goes beyond of a single blog post. What is shown instead is inverse VQA in which the game engine asks the questions and the human has to answer them.

The world in the python prototype consists of 10x10 grid with geometric shapes. If the human answers a question correct he gets a +1 reward. So its a test if the human is able to map the shown situation to the questions.


October 16, 2026

Line following Roboter mit externer Intelligenz

 Ein Line following Roboter fährt auf einer schwarzen Linie im Oval. An der Seite der Strecke sind Schilder aufgestellt, welche die erlaubte Geshwindigkeit anzeigen. Der Roboter hält sich an die Empfehlungen der Schilder.

Obwohl dieses Beispiel technisch einfach zu realisieren ist wirft es aus Sicht der klassischen Robotikprogrammierung Fragen auf. Die Intelligenz ist nicht vollständig im Roboter verortet sondern liegt sowohl im Roboter der die Geschwindkeit anpasst als auch in der Umwelt. Ein Mensch hat die Schilder aufgestellt also entschieden dass in der Kurve die erlaubte Geschwindigkeit geringer ist.

Ein solches System lässt sich nicht allein über einen Algorithmus erklären der auf dem Roboter läuft, sondern es handelt sich um ein offenes System bei dem große Teile der Entscheidungen an die Umwelt ausgelagert wurden. Die Funktion des Roboters verschiebt sich, anstatt Entscheidungen zu treffen ist seine Aufgabe die Schilder zu erkennen und die erlaubte Geschwindigkeit einzuhalten. Der Roboter wird folglich ferngesteuert, wenn auch indirekt.

Es gibt noch weitere Beispiele für ausgelagerte Intelligenz, besipielsweise zählt ein Light seeking roboter dazu der einer Taschenlampe folgt, oder ein voice controlled robot welcher Sprachkommandos folgt. In all diesen Fällen gibt es eine Mischung aus Eigenintelligenz des Roboters plus externer Intelligenz.


October 15, 2026

How to externalize intelligence

The classical understanding of artificial intelligence was that the intelligence is always located inside a robot. Inside the robot there is a microcontroller, on this microcontroller is running a software, the software is based on algorithms and intelligence is located in the algorithm.

With the advent of embodied AI since 1990, this strict philosophy was modified. A more recent understanding is, that intelligence can be located on multiple locations like inside the robot, in the environment of the robot or in both locations. A typical example for externalizing intelligence is a line following robot. The robot does not decide about the path but the decision was given by the line on the ground. The robot follows only the line.

A more advanced version of externalizing intelligence is corridor with qr codes. The robot navigates along the qr codes until he reaches the goal. Its possible to guide the robot to a different goal by changing the position of the qr codes. The software on the robot remains the same.

A teleoperated robot has no internal algorithm at all but its decision making process is determined entirely by the environment. In other words, the intelligence is located outside of the robot. Such sort of machinery is very easy to program, because intelligence offloading means that there is no need to code intelligence in software, but intelligence is already available in the environment.

Intelligence offloading generates a new problem which is how to communicate with a robot. In case of a line following robot, the robot needs a sensor to detect the black line, a robot who follows qr codes needs a camera, and a speech enabled robot will need a microphone plus a language parser. None of these technical artifacts have its root in artificial intelligence but they are standard components used for signal transmission. This makes it easy to build such robots.

Instead of designing advanced algorithms and increasing the onboard intelligence of a robot, the new goal is to invent advanced human to robot communication interfaces which makes it easier to submit commands to the robot. The most advanced interface available is based on natural language. Its more advanced than a light seeking robot because natural language works on a high abstraction level. A short sentence triggers a complex reaction of the robot.

Let me give a practical example for human to robot interaction. 
a) the human operator asks the robot to move to a certain position in a maze
b) the human operator asks the robot to follow a sequence of waypoints in a maze
c) the robot should solve a complex pick& place problem like "transport all the boxes in room A"

These examples are sorted by its difficulty. Programming the language interface for case a) is easy. The robot needs only a list with possible locations in the maze and simple path planning algorithm to reach the goals. In contrast, the cases b) and c) are harder to implement. Parsing and executing the commands is a demanding task for a robot.

Strictly spoken a remote controlled robot doesn't need onboard intelligence but the intelligence is located outside of the robot. There is no algorithm which provides intelligence, but the decision is made by the environment and the robot responds to the decision.

A light seeking robot is a good example for an external controlled robot. The robot follows the light, but do not solves motion planning problems. Such a robot works only if a light source is available in the environment. If the light source is at north, the robot will move towards this direction. According to the strict definition of a robot, such a light seeking automaton is not a robot but its an automaton. It doesn't has a program and its doesn't execute an algorithms. A light seeking robot can be realized with out a microcontroller but as an analog circuit. So its not a computer.

Interaktion von Maschine und Umgebung

Peter Wegner hat in seinen Aufsätzen die Grenzen von Turing Maschinen dargelegt und schlägt als Ergänzung vor, die Interaktion zwischen Turing Maschine und Umgebung zu nutzen. Es geht darum, aus einem Closed system ein open System zu gestalten.

Doch betrachten wir die Thematik von Anfang an. In der Informatik wird zuerst eine Software geschrieben, diese wird auf einem Computer ausgeführt. Auch Robotikprogrammierung funktioniert nach diesem Prinzip. Das Erstellen einer Software für Robotikaufgaben gilt jedoch als anspruchsvoll, einige behaupten sogar es ist nicht durchführbar weil die Realität zu komplex ist um sie in Software abzubilden. Man kann das am praktischen Beispiel sehen wo in den 2000er Jahren die ersten selbstfahrenden Autos programmiert wurden, und die Software einen umfang von 200k Lines of code hatte und das Auto trotzdem nicht im Stande war wie ein Mensch zu fahren.

Bei klassischer Software legt der Fokus der Programmierer auf der Software, deren Programmiersprache, deren interne Datenstruktur und deren interne Algorithmen. Während die Kommunikation der Software mit der Umgebung nur eine geringe Priorität erhält. Das selbstgesteckte Ziel ist häufig einen autonomen Roboter zu programmieren und der soll definitionsgemäß nicht mit der Umwelt interagieren.

Durch diesen Bias hin zu closed systems steigt die Komplexität der Software massiv an. Im Grunde gilt es, die Umgebung in Software nachzubilden, also mittels realistischer physics engine, Trajektoriemodellen bis hin zu Model predictive control. Ein solches System zu entwickeln ist anspruchsvoll und sehr fehleranfällig. An diesem Punkt iind in der vergangenheit zahlreiche projekte gescheitert. Selbst überschaubare Aufgaben wie das navigieren in einem Micromouse Labyrinth ist über ein closed system was Algorithmen folgt sehr schwierig.

Die Antwort liegt nicht in besseren Programiersprachen, oder effienteren Algorithmen wie Rapidly exploring random tree zur Wegplanung sondern die Antwort liegt in den Augen von Stevan Harnad und Peter Wegner in der Kommunikation mit der Umwelt. Damit wird die Künstliche Intelligenz nicht mehr im Roboter implementiert sondern sie wird in der Umwelt verortet und der Roboter greift nur noch darauf zu.

Genauer gesagt besteht die künstliche Intelligenz um einen Roboter zu steuern in menschlichen Bediener der sich außerhalb des Roboters befindet und von dort Kommandos erteilt wie "langsam fahren, anhalten". Durch braucht die Künstliche Intelligenz nicht mehr in Software implementiert werden sondern der Roboter muss lediglich die Steuersignale aus der Umwelt auswerten.

Auf den ersten Blilck klingt dieser ansatz wie eine Sackgasse. Dort wo ein menschlicher Bediener  benötigt wird, agiert der Roboter nicht mehr autonom und folglich ist seine Effizienz gering. Dies ist aber nur bei Low level fernsteurung der Fall, wo also über einen Joystick die Steuerstgnale erzeugt werden. Bei einer high level Fernsteuerung über natürliche Sprache steigt die Effizienz. 

Eine high level Fernsteuerung über Textkommandos hat Ähnlichkeit mit einem Textadventure. Dort erzeugt das Computerprogram eine Umgegungsbeschreibung und der menschliche Spieler gibt ein Kommando ein wie "öffne Kiste". Derartige Textadventure lassen sich erstaunlich simpel mittels Algorithmen automatisch durchspielen weil ihr Zustndsraum klein ist. Es gibt nur eine geringe Anzahl von Befehlen, die zu einer überschaubaren Anzahl neuer Spielzustände führen. Fogllich kann man die Nutzereingaben und die Reaktion der Game engine gut als vollständigen Game tree traversieren, also so wie auch ein Schachcomputer funktioniert.

Doch zurück zur Interaktion einer Maschine mit der Umgebung. Anders als ein Algorithmus der intern von einer Maschine ausgeführt wird, erfolgt die Interaktion der Maschine mit ihrer Umwelt als Kommunikativer Prozess vergleich mit einem TCP/IP Request im Internet. Eine solche Kommunikation kann man über ein mehrschicht protokoll formalisieren. Speziell zur Interaktion von Robotern mit deren Umwelt eignet sich eine dialog Grammatik für diese Aufgabe. Eine Dialoggrammatik ist eine BNF Grammar welche mögliche Verben, Substantive und Adjektive enthält. Darin wird spezifiziert dass der Robotter folgende aktionen ausführen kann:
- move, stop, rotate, grasp, ungrasp

Und dass der Roboter folgende Orte kennt:
- roomA, roomB, Door, chargingstation

Eine solche BNF Grammar ist also eine symbolische Abstraktion der Wirklichkeit beschrieben in natürlicher Sprache. Über diese Abstraktion kommuniziert der Roboter mit der Umwelt. Der Roboter kann z.B. seinen Status mitteilen "my location is RoomA". und er kann Befehle ausführen wie "move to RoomB".

October 14, 2026

Frühe ferngesteuerte Automaten

 Es gibt eine Reihe von Zaubertricks und technischen Vorführungen vor Beginn des Computerzeitalters die auf das damalige Publikum erstaunlich gewirkt haben. Streng genommen waren diese Maschinen keinen Roboter, weil sie keine Microcontroller enthielten, also eine CPU. Dennoch zeigten sie ein Verhalten was roboterähnlich aussah. Hier die Zeitleiste:

1770    Schachtürke von Wolfgang von Kempelen
1849    Antonio Diavolo von Robert-Houdin
1904  Telekino von Leonardo Torres Quevedo
1939    Elektro auf der New Yorker Weltausstellung

Die Funktionsweise dieser Darbietungen basierte auf mechanischer oder elektromechanischer Fernsteuerung. Vom Schachtürken ist bekannt dass ein erfahrener Menschlicher Schachspieler in der Kiste saß, von der Trapez-Marionette Antonio Diavolo ist bekannt dass sie über Baudenzüge gesteuert wurde, die in der Halterung versteckt waren, während das Telekino Boot von Quevedo mittels Funksignale aus der Distanz gesteuert wurde.

Die Erfinder hatten folglich die Aufgabe, diese Fernsteuerung zu realisieren. Entweder über mechanische angelsehnen wie es bei vielen Zaubertricks üblich ist, oder über das Übertragen von Funksignalen was seit 1895 möglich ist.

All die aufgeführten Automaten waren nicht autonom, sondern es gab einen menschlichen Bediener der heimlich Knöpfe gedrückt hat wodurch der Automat sich bewegt hat und das Publikum zum Staunen animiert hat.

Mit Aufkommen der ersten Computer ab den 1950er schien diese Technik des ferngesteuerten Automaten in Vergessenheit geraten zu sein. Stattdessen versuchten Robotik-Ingineure ein Programm zu schreiben was auf dem Computer ausgeführt wird, und darüber den Roboter zu steuern. Dies wurde speziell in der universitären Robotik als Goldstandard definiert. Gleichzeitig wurden ferngesteuerte Roboter oder mechanisch ferngesteuerte Automaten als unwissenschaftliche Zauberillusion belächelt.

Die Abkehr von ferngesteuerten Bühnentricks hinzu programmierten Robotern führte in eine Sackgasse welche zuerst nicht wahrgenommen wurde. Die Sackgassen entsteht dadurch dass ein computerprogram niemals so leistungsfähig sein kann wie ein menschlicher Bediener. Gleichzeitig sind ferngesteuerte Automaten einfacher zu konstruieren. Technisch gesehen sind es lediglich empfangseinrichtungen welche Befehle aus der Ferne in Bewegung umsetzen.

BNF Grammar for speaker to hearer interaction for a warehouse robot

A bnf grammar is a good starting point to specify a language game. The grammar provides possible action verbs, nouns and adjectives. Possible requests send to the robot are formulated in the syntax of the grammar.

For the example of a warehouse robot, possible utterances are:

Visual Question Answering (VQA)

Interaction 1: Count Query
    Speaker (Human): "How many boxs are on Conveyor 1?"
    Hearer (Robot): "Answer: 4."

Interaction 2: Attribute Query
    Speaker (Human): "What color is the parcel at Rack A Level 2?"
    Hearer (Robot): "Answer: blue."

Interaction 3: Location Query
    Speaker (Human): "Where is the container?"
    Hearer (Robot): "Answer: Pallet 3."

Interaction 4: Presence Query
    Speaker (Human): "Is there a item inside Bin 5?"
    Hearer (Robot): "Answer: Yes."

Instruction Following (IF)

Interaction 5: Pick & Place Action
    Speaker (Human): "Pick up the red parcel from Conveyor 2"
    Hearer (Robot): "Executing: Picked up red parcel."

Interaction 6: Movement Action
    Speaker (Human): "Move the damaged box to Bin 8"
    Hearer (Robot): "Task completed: Moved damaged box."

Interaction 7: Inspection Action
    Speaker (Human): "Inspect the barcode at Rack B Level 1"
    Hearer (Robot): "Task completed: Inspected barcode."

Interaction 8: Placement Action with Error
    Speaker (Human): "Place the blue container to Pallet 9"
    Hearer (Robot): "Error: Path obstructed."

These speech acts were not created by a large language model, but are possible vectors from a BNF Grammar, given next. A bnf grammar is a vocabulary list plus grammar rule system and defines what each side can say.

BNF Grammar    

<interaction>         ::= <speaker_turn> " -> " <hearer_turn>

<speaker_turn>        ::= <command> | <query>
<hearer_turn>         ::= <acknowledgment> | <answer> | <error_response>

;; Command & Query Structure
<command>             ::= <action_verb> " " <target_object> <location_clause>
<query>               ::= <vqa_question>

<vqa_question>        ::= <count_query> | <attribute_query> | <location_query> | <presence_query>

<count_query>         ::= "How many " <object_type> "s are on " <surface> "?"
<attribute_query>     ::= "What color is the " <object_type> " at " <location_spec> "?"
<location_query>      ::= "Where is the " <object_type> "?"
<presence_query>      ::= "Is there a " <object_type> " inside " <container> "?"

<action_verb>         ::= "Pick up the" | "Move the" | "Inspect the" | "Place the" | "Scan the"
<target_object>       ::= <color> " " <object_type> | <object_type>
<location_clause>     ::= " from " <location_spec> | " to " <location_spec> | ""

<location_spec>       ::= <surface> | <container> | <shelf_location>
<surface>             ::= "Conveyor " <digit> | "Pallet " <digit>
<container>           ::= "Bin " <digit> | "Crate " <alpha_code>
<shelf_location>      ::= "Rack " <alpha_code> " Level " <digit>

;; Robot Responses
<acknowledgment>      ::= "Executing: " <action_description> "." | "Task completed: " <action_description> "."
<action_description>  ::= <action_verb_past> " " <target_object>
<action_verb_past>    ::= "Picked up" | "Moved" | "Inspected" | "Placed" | "Scanned"

<answer>              ::= "Answer: " <answer_content> "."
<answer_content>      ::= <digit_string> | <color> | <location_spec> | <boolean>

<error_response>      ::= "Error: Object not found." | "Error: Path obstructed."

;; Lexical Elements
<object_type>         ::= "box" | "parcel" | "barcode" | "container" | "item"
<color>               ::= "red" | "blue" | "green" | "yellow" | "damaged"
<boolean>             ::= "Yes" | "No"
<digit_string>        ::= <digit> | <digit> <digit_string>
<digit>               ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<alpha_code>          ::= "A" | "B" | "C" | "D"