May 09, 2026

Robotics technology before the year 2000

 ... was remarkable less developed. The most advanced approach available during this time period was model predictive control with the RRT algorithm. This allows a robot to follow a fixed trajectory. For example if the robot is 10 centimeter away from the floor's trajecoty, the MPC planner ensures that the robot gets back on the track. No additional features are available, but moving on a fixed trajectory for example in a warehouse was everything which can be realized with an RRT based motion planning algorithm.

In addition, it should be mentioned that the combination of rapidly exploring random tree and model predictive control was a highly advanced technique before the year 2000. RRT is more efficient than other solvers like A*, and model predictive control is based on a physical model of the robot including its movement abilities. This allows to control a wheeled robot and a UAV both.

From today's perspective its surprising, that the described mathematical optimization algorithm requies on the one hand advanced knowledge in computer science including artificial intelligence on a university phd level and at the same time, the resulting robot is a simple line following robot which can't be scaled up to more advanced problems. This my explain why AI before 2000 was seen as difficult to realize and most of the projects have failed. That means, even advanced mathematicans with 20 years of practical experiences in optimization problems were only able to program a line following robot which was able to move along a fixed line on the ground. From this dispointing reality it seems rational to assume that AI can't be realized at all.

May 07, 2026

AI after the year 2010

There was a paradigm shift available how AI researchers have discussed about the shared goal of building intelligent robots. Until the year 2010 the untold assumption was to program a closed system. The robot was seen as a machinery which consists of software, hardware and algorithm and the goal was to optimize this machinery. For example to create more advanced grippers or improve a path planning algorithm. It was assumed that this was the only way to think about robotics, because the goal was to build autonomous self sufficient systems which was seen as equal to artificial intelligence.

After the year 2010 there was a different approach available which has started with bottom up robotics invented by Rodney Brooks and has evolved into modern Vision language action models, see the right figure. The idea is to use teleoperation between a robot and an external instance which can be a computer program, a human or a large language model. Such kind of distributed AI generates a new problem. Instead of discussing how a robot is working internally, for example with an algorithm, the new question is how to design the ocmmunication between the robot and the external instance.

This simple modification has created a very different bias in Artificial intelligence. Former autonomous and closed systems are rejected in favor of a natural language communication preference. An early example for open systems in robotics was the Shrdlu project, later more complex attempts were the Poeticon++ dataset and the Rocco Robocup commentator. These early attempts were not using advanced LLMs but they have anticipated a speaker to hearer communication pipeline.

Classical AI until the year 2010 was limited by the np hard challenge. A certain motion planning algorithm needs a large amount of CPU resources. Planning the steps for a complex robot task e.g. biped walking and grasping objects was beyond the capabilities of computer hardware. Even with highly optimized programming language and advanced model predictive control algorithms, this np hard bottleneck can't be solved.

In recent AI after the year 2010 the np hard problem can be ignored because there is no need for motion planning algorithms anymore. The robot gets its instruction from an external instance. And this external instance can generate a trajectory much easier than the robot itself. What is available instead is the problem how to program a text parser. If the external instance gives the command "move to left corner in the maze" this command needs to be translated into action by the robot. For doing so, a dedicated parser is needed which can be implemented as context free grammar, as large language model or a handcoded computer program. This parser is the new limitation in robotics.

May 03, 2026

Playing a videogame with a textbox

 For arduino microcontrollers there is a standard display available with 20x4 characters. Such a small text display is a great choice for demonstrating grounded language in action. In an example jump'n'run sidesrolling game, the following text boxes were generated by the event detection engine:

Example 1
-----------
PLAYER ON GROUND
JUMP READY         
COIN +1   TOTAL 5  
ENEMY NEAR -COVER  

Example 2
-----------
DASH COOLDOWN 1.2s
PLATFORM AHEAD 3m 
SPIKE! STEP BACK   
HEALTH 4/5  POWERUP

Example 3
-----------
FELL -1LIFE       
RESPAWN AT CHECKPT 
TIME 02:14       
KEY ACQUIRED  DOOR

Example 4
-----------
SPEED BOOST ACTIVE
ENEMY HIT x2     
COMBO 3X  +50PTS 
SECRET PATH DETECTʼD

From a technical perspective such a textbox is highly efficient. The text occupies very few amount of RAM and because the repeating pattern it can be compressed further.

Even if the description is formulated on a high abstraction layer, its possible to use these information to play the game with an Artificial intelligence. All what is needed are a list of rules for determining what to do in each situation. These rules are not applied to the graphical videogame at 800x600 Pixel resolution but the rules are applied to the text box.

May 01, 2026

Hyperextension bench for low back pain treatment

 


Das Risiko von E-Mails liegt bei 99.9% ...

 Die Charaktere:

    Bernd: Sieht in jedem Datenpaket eine potenzielle Cyber-Apokalypse. Sein Aluhut ist zwar unsichtbar, aber spürbar.
    Lisa: Möchte eigentlich nur ihren Job erledigen und die Urlaubsliste abstimmen.

Lisa: (tippt genervt) „Bernd, hast du meine Mail von vorhin bekommen? Ich brauche nur kurz dein Kürzel für den Urlaubsplan.“

Bernd: (schiebt seinen Stuhl ruckartig vom Schreibtisch weg, als hätte der Monitor gebissen) „Deine E-Mail, Lisa? Du meinst diese digitale Postkarte, die du unverschlüsselt durch das offene Internet gejagt hast?“

Lisa: „Äh, ja. Die E-Mail. Mit der Tabelle im Anhang.“

Bernd: (lacht trocken) „Anhang. Du sagst das so leichtfertig. Weißt du eigentlich, was in einem .xlsx-Container alles schlummern kann? Das ist ein Trojanisches Pferd! Ein Klick, und im Hintergrund wird eine verschlüsselte Verbindung zu einem Botnet in Wladiwostok aufgebaut. Ich habe den Anhang natürlich nicht angefasst. Der liegt jetzt in der Quarantäne meines geistigen Papierkorbs.“

Lisa: „Bernd, es ist eine Excel-Liste. Ohne Makros. Ich hab sie vor fünf Minuten erstellt.“

Bernd: „Du hast sie erstellt. Oder zumindest glaubst du das. Aber wer sagt mir denn, dass dein Rechner nicht schon längst Teil einer Man-in-the-Middle-Attacke ist? Jemand könnte deine Identität übernommen haben. Der Absender sagt ‚Lisa‘, aber die Metadaten schreien ‚Cyber-Terrorismus‘. Ich kann die Integrität dieses Dokuments nicht verifizieren!“

Lisa: „Ich stehe zwei Meter von dir entfernt, Bernd. Ich habe sie abgeschickt. Jetzt gerade.“

Bernd: (senkt die Stimme und blickt sich misstrauisch um) „Das ist genau das, was ein raffinierter Algorithmus auch sagen würde. Und was ist mit TLS? Unsere Transportverschlüsselung ist doch nur ein Placebo für die Massen. Ein besserer Schülerspion fängt das Signal am Knotenpunkt ab und liest mit, wann wir in die Sommerferien gehen. Willst du wirklich, dass fremde Mächte wissen, dass wir in der ersten Augustwoche unterbesetzt sind? Das ist ein Sicherheitsrisiko für die gesamte kritische Infrastruktur dieser Abteilung!“

Lisa: (seufzt tief) „Was schlägst du also vor? Soll ich dir den Urlaubsplan vortanzen?“

Bernd: (öffnet feierlich seine Schreibtischschublade und holt ein Blatt Papier heraus) „Hier. Ein Formular. Mit Durchschlag. Du füllst es mit einem dokumentenechten Kugelschreiber aus, unterschreibst es physisch, und ich bringe es persönlich zum Faxgerät. Das Fax pfeift, die Leitung steht, und ich bekomme ein Sendeprotokoll – schwarz auf weiß. Ein analoger Handshake, Lisa. Unhackbar. Unmanipulierbar. Rein.“

Lisa: „Bernd… das Faxgerät ist seit drei Monaten kaputt. Es ist jetzt ein Pflanzkübel für die Monstera im Flur.“

Bernd: (starrt die Pflanze im Flur lange an) „…Verstehe. Ein gezielter Sabotageakt. Die Schlinge zieht sich zu.“

Lisa: „Ich leg dir den Zettel einfach auf den Tisch, okay?“

Bernd: „Nur wenn du ihn vorher mit UV-Licht auf versteckte Wasserzeichen prüfst! Man kann nie wissen...“

April 30, 2026

Detailanalyse der Typst Software

 Typst ist ein relativ junges Projekt was in Rust programmiert wurde. Ähnlich wie andere Rust Projekte wie der email server stalwart oder die ripgrep software ist das Versprechen deutlich effizienter vorzugehen als frühere Linux tools. Typst versteht sich als Alternative zu LaTeX was ein sehr ambitioniertes Ziel ist bei dem schon viele frühere Versuche wie lout und Sile gescheitert sind.

Vom Funktionsumfang her ist typst ein ausgereiftes Projekt mit dem sich sowohl wissenschaftliche Texte mit mehreren hundert Seiten als auch datanbank-Reportings erzeugen lassen. Die Kernfunktion besteht darin ein .typst dokument in ein PDF Dokument umzuwandeln. Typst funktioniert ähnlich wie ein CSS stylesheet ist allerdings für das PDF Format optimiert worden.

Standardelemente wie fließtext, Überschriften, Fußnoten, Tabellen und Bilder lassen sich problemlos erstellen. Es gibt jedoch noch einige Schwächen:

- anders als bei LaTeX ist im zweispaltensatz der untere Rand nicht bündig
- anders als bei LaTeX sieht der Blocksatz leicht schlechter aus
- die zahl der Tutorials und publizierten Bücher zu typst ist gering

Wenn man mit diesen SChwächen leben kann und sich von der Uralt LaTeX software verabschiedne möchte ist Typst eine gute Empfehlung. Nach etwas Eingewöhnung stellt man fest, dass eigentlich alles einfacher geht. Der große Vorteil besteht darin dass man anders als bei LaTeX nicht 5 GB auf der Festplatte benötigt sondern nur eine einzige 50 MB große Binardatei die problemlos in allen Betriebssystemen ausgeführt wird.




April 28, 2026

Gespräch über die Geschichte des Faxgerätes

 Ort: Ein staubiges, aber gemütliches Archiv voller grauer Plastikgehäuse und alter Bedienungsanleitungen.

Personen: Lukas, ein Technikjournalist mit Hang zur Nostalgie, und Dr. Arndt, ein Technikhistoriker mit Spezialisierung auf Bürokommunikation.

Lukas: Dr. Arndt, wenn ich heute jungen Volontären erzähle, dass wir früher wichtige Dokumente durch eine Glasplatte eingelesen haben, damit sie am anderen Ende der Republik auf einer Rolle Thermopapier wieder herauskommen, schauen die mich an, als käme ich aus dem Pleistozän. Warum war das Fax in Deutschland zwischen 1990 und 2010 so unantastbar?

Dr. Arndt: (lacht) Weil es die perfekte deutsche Lösung war: rechtssicher, haptisch und wunderbar bürokratisch. 1990 standen wir am Gipfel der Standalone-Geräte. Erinnern Sie sich an die klobigen Kisten von Siemens oder Canon? Das waren dedizierte Maschinen. Sie taten nichts anderes, als Telefonleitungen mit Pieptönen zu quälen. Dass sie so lange überlebten – bis weit in die 2000er hinein –, lag am „Schriftformerfordernis“. Ein Fax galt vor Gericht lange Zeit als sicherer als eine E-Mail.

Lukas: Stimmt, die E-Mail war damals der „wilde Westen“. Aber blicken wir mal auf die Technik. Anfang der 90er war das Thermopapier der Standard. Das Zeug, das sich in der Sonne einrollte und nach zwei Jahren komplett verblasste. War das aus technikhistorischer Sicht nicht ein totaler Fehlschlag?

Dr. Arndt: Technisch gesehen war es minimalistisch und wartungsarm. Kein Toner, keine Tinte, nur Hitze. Aber für die Archivierung war es der Albtraum jedes Aktenverwalters. Deshalb sahen wir Mitte der 90er den ersten großen Umbruch: Das Normalpapier-Fax zog in die Büros ein. Zuerst über Thermotransferrollen – dieses schwarze „Kohlepapier“, das man nach dem Benutzen gegen das Licht halten konnte, um die vertraulichen Nachrichten der Kollegen zu lesen. Ein Datenschutz-Gau, wenn man so will.

Lukas: Oh ja, das war der Klassiker im Gemeinschaftsbüro. Aber dann kam die Zeit, in der das Faxgerät seine Identität verlor. Ende der 90er, Anfang der 2000er, standen plötzlich diese riesigen Kartons bei MediaMarkt oder Saturn: „4-in-1 Multifunktionsgeräte“. Der Fax-Standalone wurde zum Feature degradiert, das in einem Tintenstrahldrucker mitschwang.

Dr. Arndt: Das ist ein entscheidender Punkt. Das Fax wurde „demokratisiert“. Plötzlich hatte jede kleine Schreinerei und jeder Privathaushalt ein Fax, weil es eben im HP OfficeJet oder im Epson-Drucker eingebaut war. Diese Geräte nutzten die Tintenstrahltechnologie. Das war qualitativ ein Quantensprung zum Thermopapier, brachte aber ganz neue Probleme: Eingetrocknete Druckköpfe, wenn man nur alle drei Wochen ein Fax bekam.

Lukas: Ich erinnere mich an das typische Szenario um das Jahr 2005: Man wollte schnell einen unterschriebenen Vertrag senden. Der Drucker startete erst mal eine zehnminütige Reinigungsprozedur, während die Telefonleitung schon die Wählgeräusche machte. Dieses „Handshake“-Geräusch des Modems – für mich der Sound der 90er.

Dr. Arndt: Dieses Geräusch war das Protokoll T.30 in Aktion. Es war faszinierend: Zwei Geräte handelten aus, wie schnell sie Informationen austauschen konnten. In den 90ern waren das oft nur 9,6 oder 14,4 kbit/s. Später, mit den Super-G3-Faxen in den Multifunktionsgeräten, ging es auf 33,6 kbit/s hoch. Aber im Vergleich zum aufkommenden DSL war das natürlich Schneckentempo.

Lukas: Warum hat sich das Fax in Deutschland eigentlich hartnäckiger gehalten als in anderen Ländern? Um 2010 herum war in den USA das Fax fast schon ein Museumsstück, während wir hier noch fleißig Bestätigungen faxten.

Dr. Arndt: Deutschland ist ein Land der „dokumentierten Sicherheit“. Das Fax bot das Sendeprotokoll. Dieser kleine Ausdruck – „Übertragung OK“ – war für den deutschen Angestellten das ultimative Beruhigungsmittel. Es war die Verbindung aus analoger Unterschrift und digitaler Übermittlung. Die Multifunktionsgeräte der 2000er haben dieses Bedürfnis bedient. Man konnte scannen, kopieren, drucken und eben „rechtssicher“ faxen, alles mit einer Patrone.

Lukas: Aber die Technik fraß sich selbst auf, oder? Mit dem Aufkommen von PDF-Anhängen und dem Scannen direkt in die E-Mail wurde das Faxmodem im Drucker doch eigentlich zum Blinddarm der Technikgeschichte.

Dr. Arndt: Absolut. Zwischen 2005 und 2010 sahen wir den Übergang zum „PC-Fax“. Die Multifunktionsgeräte konnten das Fax zwar noch empfangen, leiteten es aber oft direkt als Bilddatei an den Computer weiter, statt es auszudrucken. Das war der Anfang vom Ende der haptischen Fax-Kultur. Die Hardware war zwar noch da – oft als grauer Kasten in der Ecke des Home-Office –, aber sie wurde immer seltener mit der Telefonbuchse verbunden.

Lukas: Wenn Sie heute ein Multifunktionsgerät aus dem Jahr 2002 sehen, diesen typischen Mix aus hellem Plastik und kleinen LCD-Anzeigen: Was geht Ihnen da durch den Kopf?

Dr. Arndt: Ich sehe eine Übergangstechnologie. Es war die Brücke von der rein analogen Welt der 80er in die voll vernetzte Welt von heute. Diese Geräte waren Schweizer Taschenmesser für eine Generation, die der Cloud noch nicht traute, aber den Komfort des Digitalen wollte. Standalone-Faxgeräte von 1990 wirken heute wie Skulpturen einer vergangenen Epoche. Die Kombigeräte von 2010 hingegen wirken wie die Vorboten unserer heutigen „Alles-in-einem“-Welt, nur eben mit viel mehr mechanischem Klappern.

Lukas: Ein schönes Schlusswort. Das Fax ist vielleicht fast tot, aber das Sendeprotokoll lebt in unseren Lesebestätigungen weiter. Danke für diese Zeitreise, Herr Doktor.

Dr. Arndt: Gerne. Und falls Sie das Interview als Kopie brauchen... ich könnte es Ihnen rüberfaxen! (beide lachen)

April 27, 2026

Robot control system with grounded language

There is no single AI algorithm available but its a pipeline with many substeps until a robot can do something usefull. Each single step is well understood by computer science in the past and the only thing missing is to combine all the steps into a single pipeline.

The staarting point is usually a teleoperated robot. The movements are converted into numerical sensor information called a mocap recording.  Then the motion capture information are converted into a text adventure. This translation step is perhaps the core element in artificial intelligence and has to do with grounded language. After a text adventure is available, the game is solved by a computer program which decides which step is executed next.

None of these substeps can be called advenced computer science. Even the automatical gameplay of text adentures like Zork can be mastered with mainstream software for example with a reinforcement learning algorithm. Also the translation from motion capture recording into a text adventure can't be called a demanding project. Nevertheless the entire pipeline is something new not realized before. A modern term for the entire system is "vision language action model" which is state of the art in robotics in the year 2026.

In general the described pipeline is an abstraction mechanism. It converts a large state space into a small state space. This small state space can be solved with a computer. In the past it was unclear how to do so, and therefor the assumption was the robotics problems are np hard. 

April 26, 2026

Enabling technology for Artificial intelligence

 AI is available in mainstream computing since 2023 with the advent of large language models. The decades before it was assumed that AI is not possible or it will be realized in a far future, perhaps in the year 2200. At the same time, the technology which lead to AI was available even before the year 2023 and it should be explored next.

There are two key components which are not AI itself but may lead to AI: a) Teleoperation and b) motion capture. From a technical standpoint both things are easy to realize and even amateur computer programmers in the 1980s were able to do so. What was not available in the past was the awareness that these things are important to create Artfificial intelligence.

The reason why is because teleoperation and motion capture are both examples for an open system. Open means, that there is a communication available. For example the human operator is pressing a button and the robot arm is moving. In case of a mocap suit. a human demonstrates an action and the computer records the marker's positions. The communication between both instances is artificial intelligence in the core sense. The attempt to record and compress the communication results into powerful computer models. THese models are able to control robots and enabling man to machine communication.

Let us investigate why teleoperation in the past was often recognized as the opposite of AI. During teleoperation, the robot doesn't decide something but it gets controlled by a human. So there is no algorithm needed but only a cable which transmits the signal. The untold assumption until 2010 was that AI works different from man to machine interaction. AI was often described as autonomous robotics, similar to a turing machine, while man to machine interaction was seen as intactive computing which can't be executed by algorithms.

The shared similarity between teleoperation and motion capture is a signal transmission. The signal of the mocap markers is send to the computer, while the signal from the remote control device is send to the robot. A signal send over a wire is able to connect two different systems, this creates an open system. Open means that signal transmission is available. 

The working thesis is, that artificial intelligence isn't located in a computer algorithm, but in signal transmission. In this networking understanding, a signal is intelligence. The signal is encoded in bits and bytes and is formaized with a language. This language improves the man to machine communication.

Of course this understanding is very different from the mainstream understanding of AI which was common until 2010. Even signal transmission was available within computer science, for example in internet protocols, it was ignored that the principle can be adapted to robotics too. Even some early examples like the SHDRLU project or the M.I.T. Ripley robot were available before 2010, the common understanding of AI was directed towards a mathematical understanding but not a linguistic one.



Robot arm with grounded language

 

Warehouse robot with grounded language:


 

April 24, 2026

Textbausteine für einen Warehouse roboter

 Ein text buffer für eine Game engine kann über Textbausteine realisiert werden die in einer Datenbank gespeichert sind. Ein simples Beispiel für einen Lagerroboter liegt im json format vor:

{
  "warehouse_robot_lang": {
    "navigation": {
      "moving": "Proceeding to waypoint {target_id}.",
      "path_blocked": "Obstacle detected at {coords}. Recalculating path.",
      "arrived": "Reached destination: {location_name}.",
      "waiting": "Waiting for traffic clearance in zone {zone_id}."
    },
    "manipulation": {
      "picking": "Engaging grippers for item {sku_id}.",
      "placing": "Depositing unit onto rack {rack_level}.",
      "scanning": "Verifying barcode for shelf {shelf_id}.",
      "load_secured": "Weight sensor triggered. Payload is stable."
    },
    "diagnostics": {
      "battery_low": "Warning: Battery at {percent}%. Searching for charging station.",
      "charging": "Power coupling established. Current state: {percent}%.",
      "system_ok": "All internal sensors reporting nominal values.",
      "error": "Actuator malfunction in {component}. Human intervention required."
    },
    "interaction": {
      "safety_stop": "EMERGENCY STOP: Human detected in safety perimeter!",
      "greeting": "Unit {robot_id} active and awaiting tasking."
    }
}


Darin gibt es 4 semantische Kategorien mit möglichen Unterpunkten. Obwohl es relativ viel Text ist, ist mathematisch gesehen die zahl möglicher Zustände des Roboters gering. Aufgabe des Text buffers ist es, die richtigen Textbausteine aus der Datenbank auszuwählen, um damit die Sensordaten als grouned language auf dem Bildschirm darzustellen. Es handelt sich also weniger um einen KI Algorithmus, sondern um eine KI GUI Oberfläche, die zur Mensch Maschine Interaktion verwendet wird. Vergleichbar mit den Menüpunkte in einer Desktop Software.

Game engines with grounded language

Most video games are programmed with a game engine. The game engine stores the objects on the screen and renders them to the monitor. Such a setup ensures that the game can be implemented in Python with the constraint that a human player interacts with the game engine.

To make sure, that the game can also be played with artificial intelligence and additional module is needed which is a textual buffer. The buffer converts the output of the game egine into textual sentences e.g. "player is left, red obstacle ahead". The assumption of the textual buffer is, that the game should be rendered to a mini text terminal which has only 16x2 characters. The challenge is that a complex game gets compressed into such a small text buffer. This is only possible with a vocabulary of words. Converting the normal videoscreen of 800x600 pixels into a list of words can be realized with a computer program in realtime.

April 20, 2026

Chinesische Spionin besucht ein deutsches Motion Capture Labor

 

Prolog 

Das Treffen fand in einem fensterlosen Raum im elften Stock eines unscheinbaren Gebäudes im Pekinger Stadtbezirk Haidian statt. Draußen flimmerte die Hitze über dem Asphalt, doch hier drin war die Luft so kalt und trocken, dass Mei Lins Haut leicht spannte.

Ihr gegenüber saß Direktor Zhang. Er trug keinen Anzug, sondern eine schlichte, dunkle Windjacke. Vor ihm lag eine dünne Mappe aus braunem Papier – keine digitalen Bildschirme, keine Spuren im Netz.

„Setzen Sie sich, Mei Lin“, sagte Zhang, ohne aufzusehen. „Sie haben Ihre Vorbereitungen für Heidelberg abgeschlossen?“

„Mein Deutsch ist fließend, meine medizinischen Zeugnisse sind im System der Universität hinterlegt. Ich bin bereit für die Infiltration“, antwortete sie ruhig. Sie war eine der besten „Sea Turtles“ des Dienstes – hochintelligent, unauffällig, perfekt angepasst.

Zhang schob die Mappe über den Tisch. Mei Lin öffnete sie und starrte auf ein unscharfes Foto, das durch ein Teleobjektiv aufgenommen worden war. Es zeigte ein unauffälliges Institutsgebäude hinter alten Bäumen.

„Das Institut für Biomechanik“, murmelte Mei Lin. „Ich dachte, mein Ziel seien die Patente für die neuen MRT-Kontrastmittel?“

Zhang schüttelte langsam den Kopf. „Das dachten wir auch. Aber unsere Quellen in der deutschen Industrie berichten von einer seltsamen Anomalie. Große Medizintechnik-Konzerne ziehen sich plötzlich aus der Entwicklung neuer Wirbelsäulen-Implantate zurück. Die Forschungsbudgets für künstliche Bandscheiben in Europa schrumpfen massiv.“

Mei Lin runzelte die Stirn. „Das ergibt keinen Sinn. Rückenprobleme sind die größte Volkskrankheit im Westen. Das ist ein Milliardenmarkt. Warum sollten sie das aufgeben?“

„Genau das ist Ihre Aufgabe herauszufinden“, sagte Zhang und lehnte sich vor. „Es gibt Gerüchte über ein Projekt in Heidelberg. Es läuft unter dem Radar der großen Publikationen. Keine Paper, keine öffentlichen Kongresse. Nur eine kleine Arbeitsgruppe unter einem gewissen Dr. Kämmerer. Unsere Aufklärung deutet darauf hin, dass sie dort etwas gefunden haben, das die gesamte Chirurgie überflüssig machen könnte.“

„Ein neues Medikament? Regenerative Stammzelltherapie?“

„Wir wissen es nicht“, gab Zhang offen zu. „Die Signale, die wir abgefangen haben, sind kryptisch. Sie sprechen von ‚dynamischer Architektur‘ und ‚binärer Stabilität‘. Es hat etwas mit Motion Capture zu tun – jener Technik, mit der sie in Hollywood diese Animationsfilme machen. Aber was haben Kameras und Sensoren mit der Heilung eines Bandscheibenvorfalls zu tun?“

Mei Lin betrachtete das Foto von Dr. Kämmerer. Ein Mann mit wirrem Haar und einer zerbeulten Kaffeetasse in der Hand. „Vielleicht geht es um Robotik? Assistenzsysteme für Chirurgen?“

„Möglich“, sagte Zhang. „Aber Kämmerer ist kein Chirurg. Er ist Biomechaniker. Das ist der blinde Fleck, Mei Lin. Die Deutschen scheinen das Problem aus einer Richtung anzugehen, die wir bisher ignoriert haben. In China operieren wir jedes Jahr Millionen von Wirbelsäulen. Wenn Kämmerer einen Weg gefunden hat, diese Schäden ohne Skalpell zu beheben – nur durch Daten und eine neue Form der Mechanik –, dann brauchen wir diese Technologie. Sie würde unser Gesundheitssystem um Jahrzehnte entlasten.“

„Was ist meine Priorität?“, fragte Mei Lin.

„Der Algorithmus“, antwortete Zhang präzise. „Die Hardware ist Standard – Kameras, Marker, Rechner. Das kann jeder kaufen. Aber die Software, die diese Bewegungen in Echtzeit analysiert und daraus eine medizinische Diagnose ableitet, die ein MRT schlägt... das ist der heilige Gral. Sie müssen tief in das Labor eindringen. Werden Sie Kämmerers Schatten. Lassen Sie ihn glauben, dass Sie die begabteste Studentin sind, die er je hatte.“

Mei Lin nickte. Sie spürte den Druck. Bisher waren ihre Aufträge klar definiert gewesen: Baupläne, chemische Formeln, Passwörter. Dieses Mal suchte sie nach einem Phantom – einer neuen Denkweise in der Medizin, die so radikal war, dass sie geheim gehalten wurde.

„Noch etwas“, fügte Zhang hinzu, während Mei Lin die Mappe schloss. „Seien Sie vorsichtig mit dem Begriff ‚Physiotherapie‘. Kämmerer hasst ihn anscheinend. Er nennt es ‚rekonstruktive Biomechanik‘. Wenn Sie dort sind, vergessen Sie alles, was Sie über klassische Medizin gelernt haben. Denken Sie wie eine Ingenieurin, die eine Maschine repariert.“

Mei Lin stand auf. Sie verbeugte sich leicht. „Ich werde die Quelle finden, Direktor. Wenn es eine Sprache gibt, die diese Maschinen sprechen, werde ich sie lernen.“

Zhang sah ihr nach, wie sie den Raum verließ. Er wusste, dass die Deutschen einen Vorsprung hatten, den sie nicht mit Geld, sondern mit jahrzehntelanger, stiller Forschung erkauft hatten. Er hoffte nur, dass Mei Lin rechtzeitig begreifen würde, was sie dort eigentlich sah – bevor die Deutschen beschlossen, ihr Wissen doch noch zu veröffentlichen und die Welt der Orthopädie für immer zu verändern.

Drei Tage später saß Mei Lin im Flugzeug nach Frankfurt. In ihrer Tasche lag ein Lehrbuch über menschliche Anatomie, aber in ihrem Kopf liefen bereits die Simulationen für die Platzierung von Infrarot-Markern ab. Sie wusste noch nicht, dass sie bald Zeugin einer medizinischen Revolution werden würde, die im Verborgenen eines Heidelberger Kellers stattfand. 

 

Im Labor 

Die Luft im Kellerlabor des Instituts für Biomechanik war kühl und roch nach Desinfektionsmittel und Elektrizität. An den Wänden hingen hochauflösende Infrarotkameras, deren rote Linsen wie die Augen kleiner Insekten im Halbdunkel leuchteten.

Mei Lin rückte ihre Brille zurecht. Sie trug einen schlichten weißen Kittel, das Haar streng zum Knoten gebunden. In den Akten der Universität Heidelberg wurde sie als „Gaststudentin im 4. klinischen Semester“ geführt – eine fleißige „Sea Turtle“, eine Rückkehrerin, die im Ausland Wissen sammeln sollte. Doch Mei Lins eigentlicher Auftraggeber saß in einem schmucklosen Bürogebäude in Peking. Ihr Ziel: Die „Operation Wirbelwind“.

„Bereit für den nächsten Probanden, Mei?“ Dr. Kämmerer, ein zerzauster Typ Mitte fünfzig, tippte auf seinem Tablet.

„Natürlich, Herr Doktor“, antwortete Mei in perfektem, leicht akzentuiertem Deutsch.

Ein Patient betrat den Raum. Er war übersät mit reflektierenden Markern, die auf seine Wirbelsäule, sein Becken und seine Oberschenkel geklebt waren. Mei half ihm auf das Laufband, das von Kraftmessplatten umgeben war.

„Achten Sie auf das Display“, flüsterte Kämmerer. „Das ist das Herzstück. Wir nennen es das ‚Digitale Myo-Skelett-Modell‘. Es gibt weltweit keine Publikation dazu, weil die Algorithmen zur Echtzeit-Kompensation noch unter Verschluss stehen.“

Mei Lin blickte auf den Monitor. Während der Patient sich bewegte, sah sie kein Video, sondern ein hochkomplexes Drahtgittermodell seiner Wirbelsäule. Kleine rote Wolken um die Wirbelkörper L4 und L5 zeigten die Scherkräfte an. Aber das Sensationelle war die Muskeldarstellung: Die tiefen Multifidi wurden als transparente Fasern angezeigt, die bei jeder Bewegung ihre Farbe änderten.

„Sehen Sie das?“, fragte Kämmerer begeistert. „Das MRT zeigte einen massiven Vorfall. Jeder normale Chirurg würde sofort operieren. Aber unsere Motion-Capture-Analyse zeigt: Die Bandscheibe ist gar nicht das Problem. Die neuronale Ansteuerung des linken Multifidus setzt 200 Millisekunden zu spät ein. Das Segment ist instabil. Die Bandscheibe wird nur gequetscht, weil die Muskulatur schläft.“

Mei Lin schluckte. Sie begriff sofort die Tragweite. Wenn man diese Daten hatte, konnte man Operationen im Wert von Milliarden Euro durch gezieltes Training ersetzen. Ein gewaltiger ökonomischer Vorteil für jedes Gesundheitssystem.

„Und die Lösung ist... einfach nur Sport?“, fragte sie unschuldig.

„Nicht irgendein Sport, Mei. Wir nutzen die Daten, um den Patienten in eine computergesteuerte Back Extension zu setzen. Die Maschine leistet nur Widerstand, wenn die KI erkennt, dass genau diese tiefen Fasern rekrutiert werden. Wir kehren die fatty infiltration in sechs Wochen um. Wir heilen den Rücken durch reine Biomechanik.“

Kämmerer wandte sich kurz ab, um ein Kabel zu richten. Mei Lin nutzte die Sekunde. Ihre Brille war mehr als eine Sehhilfe; in den Bügel war eine Mikrokamera integriert. Mit einem fast unmerkbaren Druck auf den Bügel scannte sie die Quellcodes, die über den Monitor liefen, und die Live-Diagramme der Muskelaktivität.

Später am Abend saß Mei in ihrem kleinen Wohnheimzimmer. Das Fenster war gekippt, der Lärm der Stadt drang nur gedämpft herein. Sie öffnete ihr Laptop und startete eine scheinbar harmlose Musik-Software. Im Hintergrund öffnete sich jedoch ein Terminal.

Sie schloss ihre Brille per USB-C an. Die Daten flossen in den Puffer.

„Statusbericht S-7. Projekt Bravo-9/Biomechanik“, tippte sie in das verschlüsselte Chatfenster. „Durchbruch bestätigt. Die Deutschen haben die Lücke zwischen statischem MRT und dynamischer Funktion geschlossen. Algorithmus zur Erfassung der tiefen Rückenmuskulatur extrahiert. Heilungsrate ohne chirurgischen Eingriff bei fast 90 Prozent. Sende Paket 1 von 4.“

Der Ladebalken bewegte sich langsam. Mei Lin starrte auf den Bildschirm. Sie dachte an Dr. Kämmerer, der ihr heute Mittag stolz die Technik erklärt hatte. Er vertraute ihr. Er sah in ihr die Zukunft der Medizin.

Ein kurzes Signal ertönte. Übertragung abgeschlossen.

„Hervorragende Arbeit, Mei Lin“, erschien auf dem Schirm. „Das Ministerium wird die Daten sofort in die Pilotklinik nach Shenzhen übermitteln. Bleiben Sie am Projekt dran. Wir brauchen die Spezifikationen der Kraftmessplatten.“

Mei schloss das Programm und löschte die temporären Dateien mit einem sicheren Überschreib-Algorithmus. Sie trat ans Fenster und sah hinunter auf den Neckar. Sie war keine Medizinstudentin, die Leben rettete, zumindest nicht hier. Sie war ein Rädchen in einer globalen Maschinerie des Wissensdiebstahls.

Doch als sie sich am nächsten Morgen wieder ihren weißen Kittel überzog und die Universität betrat, war ihr Gesicht die perfekte Maske der Unschuld. Sie war Mei Lin, die fleißige Studentin, bereit, den nächsten blinden Fleck der westlichen Medizin für ihre Heimat zu beleuchten.

In Heidelberg ahnte niemand, dass die Zukunft der Rückentherapie bereits auf einem Server in Peking gelandet war, noch bevor das erste deutsche Paper dazu überhaupt geschrieben war.


April 19, 2026

Rethinking Artificial intelligence with buffers

In the past it was assumed that Artificial Intelligence is an algorithm, for example a recursive genetic algorithm which improves itself, or a mathematical optimization algorithm for model predictive control. Such a bias organizes the research into a certain direction and ignores possible alternatives.

The opposite bias is shown in the picture which consists of a buffer who connects two systems. There is no Turing machine anymore needed which executes an algorithm, but they are separate systems who are communicating with each other. The buffer is some sort of traffic router in a computer network and is the source of artificial intelligence. The router ensures that both systems are using the same protocol, namely grounded language.

Even if this definition is vague and nothing but a picture, it allows to treat artificial intelligence with a new perspective. Classical algorithm theory can be ignored and signal processing and linguistics becomes a greater importance. The goal is to use the buffer pattern as a starting point for all the future AI research, including robotics, computer vision and planning.

Artificial intelligence with oracle turing machines

 Classical turing machines are executing algorithms, therefor the artifical intelligence must be located within an algorithm. There is an extensive list available of all possible algorithm but none of them is providing AI.[1]

There are some algorithms available which are mentioned in the context of AI like automated planning, Mathematical optimization and neural networks, but its not possible to take one algorithm from the list and use it for robot control.

What is needed instead is an opposite computional model different from a turing machine called an oracle turing machine. Even if the mathematical background of such a Super Turing machine is very complex, the principle can be explained as a Turing machine which communicates with an external system. This ability to communicates allows to offloadwing Artificial intelligence.

For robotics application, an oracle turing machine is usally implemented as a teleoperated robot. The robot stops in front of an obstacle and asks the oracle what to do next. The oracle is the human operator who decides that the robot needs to move around the obstacle on the left pathway. This command is executed by the robot.

In contrast to a normal turing machine, an oracle turing machine doesn't process an algorithm but it communicates. Communication means to solve problem by asking someone else outside of the own system. The higher instance is better informated about the situation, a human operator is equipped with a powerful vision system and has a lot of knowledge to solve most robotics problems. Such kind of knowledge is hard to program into an algorithm, so the robot needs to ask the operator for help.

There is a detail problem available in oracle turing machines which is the communication protocol. The turing machine and the oracle need to established a shared communication protocol which allows them to receive and submit messages in a language. This language needs to be invented first.

[1] https://en.wikipedia.org/wiki/List_of_algorithms

Offloading of Artificial intelligence

 AI research in the past was mostly a failure. All the programming languages, projects, neural networks, expert systems and algorithms didn't work. Even if handbooks available like "Russel/norvig: AIMA" these books doesn't contain valuable information but they are collected wrongt theories.

To overcome all the chaos a new paradigm needed, which can be coined as Offloading of Artificial intelligence. The idea is to reduce the robot's control software to the minimum so that its only a receiver for external commands. And the intelligence, the vision system, the algorithms and so on are offloaded to an external entity which is a human operator. The human perceives the scene with its eyes, uses its domain knowledge, takes a decision and then presses a joystick. The signal is send to the robot who is moving the servo motor.

The main advantage of such a minimal robot is its simplicity. There is no need to implement advanced AI algorithms, or write complex software systems but the robot is no longer responsible for the task.

Such kind of teleoperated robot works with two important principles: a) existing theories from mathematics, computer science and psychology are no longer valid b) the only open question is how to design the human to robot communication interface.  For example the signals can be transmitted with a cable, wireless, with a joystick, with speech or with a text interface.

In classical robotics in the past, the bias was that the intelligence inside the robot. The robot consists of a microcntroller, the microcntroller runs a software, the software executes an algorithm and the algorithm consists of artificial inteliigence. In the new paradigm "offloading AI" the robot is reduced to a non thinking device similar to a RC car which receives commands from an external source, similar to a Super turing machine which recieves commands from the oracle. Such a mental short cut allows to explain what intelligence is: intelligence is a signal from the environment. Innstead of generating intelligence inside the robot, the robot needs to receive and interpret the signal.

Offloading intelligence means, that there is a physical distance between the source and the target. The source of intelligence is the human in one location, while the receiver is the robot in the other location. Between them there is a cable. Such a distributed robot system will create a new problem which is how to submit the signal from the source to the target. By answering this question its possible to get a better understanding of intelligence. It transforms a closed system into an open system. The attention gets moved away from the robot itself towards the cable between human and robot.



April 15, 2026

The failure of AI related programming language

The promise of 5th generation programming language was to formulate AI related problems on a higher abstraction level. Examples like Prolog, Domain specific language and robot control APIs were invented to simplify the programming. Unfurtunately the concept was never accepted in the reality. The reason is, that a programming language is targetted towards the internal behavior of a robot or a computer, and the internal system has no knowledge about the external world.

Let me give an example. Suppose a domain specific language for robot control is invented which consists of statements like:

robot.move()
robot.stop()
robot.chargebattery()
robot.robotpickup()

In theory this DSL sounds logical the problem is to parse such a language with a computer program. A statement like robot.move() can't be converted into low level actions. Its only a mock up without executable programming code. The reason has to do with the difference between internal structure of a system and external environment. The statement "robot.move()" makes only sense if there is a simulation in which the robot can move, rotate and stop. In a normal robot program written from scratch there is no such simulation available, but the memory aka the RAM of a computer program is empty.

Programming language for high level robot control doesn't work, because a programming language is the wrong tool for such a purpose. Programming language like C, Java, Rust or Python are great for technical implementation of ideas but they can't generate artificial intelligence. What is needed is not a programming language but a communication protocol similar to GUI interface. Typical examples for such an interface are the Maniac Mansion verbs shown on the bottom or the vocabulary of a text adventure. These interfaces are not realized as programming language but they are widgets on the screen created for human to machine interaction.

Of course, there is a need to write a computer program which checks if the user is moving the mouse over a verb and presses the button. But such kind of program can be formulated in classical programming language like C/C++ or Python, Because the task for the program is very low level and has to do with recognizing the mouse position and display text on the screen. These tasks have to do with computer programming the core sense because the program defines how to blit pixels to the screen and which sort of game loop is reacting to the user input.

Closed systems without symbol grounding

Before the advent of human to machine communication there was a different paradigm avaialble which is a closed sytem. A robot was imagined as a self-sufficient system which never receives or submits information to the environment but operates by its own logic realized in software and hardware. Typical questions for such a closed system are:

- how fast is the microcontroller in terms of RAM and Mhz
- which programming languages was used, e.g. Lisp, C/C++
- Is the microcntroller running with 5 Volt or 12 Volt
- how many lines of code has the robot control system
- which mathematical algorithm was implemented in the software
- what is the CPU consumption and the runtime of the algorithm
- is the robot using an inverse kinematics solver
- was a genetic algorithm used

These questions are asked from a classical computer science perspective which includes a mathematical, physical and computer based understanding of robotics. Its about the internal structure of a robot and ignores the environment of the system. Instead of analyzing the task e.g. a warehouse logistics problem or a kitchen cooking problem, the focus is put on the machine itself and their hard- and software.

The main property of a closed system is its inability to communicate with the environment. Its assumed that no information, energy or matter can pass between the robot and the outside world. Possible interaction like teleoperation are ignored or reframed as anti-pattern. For example a typical assumption was, that teleoperation is the opposite of automation and therefor its not needed in robotics.

Even if the robot is working by technical meaning the robot can't solve a certain complex problem because closed systems are only able to manage repeating tasks but fail in more complex applications. Artificial intelligence problems like robot control are exclusively complex task which requires a huge amount of communication from a system with its environment.

April 14, 2026

The success of Artificial Intelligence since 2020

 The acceptance of new technology is measured with the user count. In the 1980s expert systems and robotics was available but nobody was using it. These software and hardware was only known in dedicated AI labs.

In contrast large language models available since 2020 are used by large amount of users world wide. Here is a timeline with the estimated number of users:

2020, <1 million
2021, 5 million
2022, 120 million
2023, 500 million
2024, 1200 million
2025, 2100 million
2026, 3500 million

Symbol grounding and the art of communication

For decades from 1950 until 2010 it was an untold bias that Artificial Intelligence gets realized as a closed system. This bias was formulated in an explicit fashion by the artificial life community in the 1990s. A simulated ecosystem gets populated with cellular automata which are evolving by itself into more advanced creates. The goal was, that with more processing power and genetic algorithm it would be possible to create intelligent computer code.

It should be mentioned that all the projects like cellular automaton, self evolving robots and computer simulation have failed. Its not possible to create intelligent structures this way. The reason for this failure wasn't recognized because it has to do with the untold bias of a closed system.

Cellular automaton are imagined as algorithm driven non communicative systems. They are not exchange matter, energy or information with the environment but they exist in a sandbox which acts as a impenetrable wall.

In contrast open system are able to exchange information, energy and matter with the environment. In case of robots this is equal to teleoperation. The robot receives a command from the operator and submits back status information. Such kind of information exchange was missing in artificial life projects and its the reason why the projects are a dead end.

in 1990 the Canadian cognitive scientist Stevan Harnad published a paper in which he introduces the grounding problem. Grounded language is important for communication systems, and such systems are always open systems. Instead of constructing a sandbox in which the AI can evolve by itself, there are communication layers between a robot and the environment which are described by symbols in a mini language.

Computer systems can be categorized into algorithm driven closed system, so called Turing machines, and communication driven open systems which are Choice Machines or interactive machines. The internet is a typical example for an open system based on the TCP/IP layered protocol. The same principle allows to create intelligent robots.

With this longer introduction its possible to explain why AI has failed in the past. The assumption was that intelligence is an algorithm which is running in a closed sytem. The improved understanding formulated by Harnad et. al. is that intelligence is communication needed for human to machine interaction.

Let us go back to cellular automaton and closed system because it allows to recognize a dead end in academic research. Cellular automaton were introduced by John von Neumann as demonstration for a self replicating system. A cellular automaton is a computer algorithm which is running on a 2d grid. The algorithm never communicates with the environment, its not a "Karel the robot" playground but a cellular automaton follows its own rule. The hope was that with the correct starting condition plus an evolutionary algorithm it would be possible to generate life within a computer, similar how biological life has evolved.

Stephen Wolfram has improved the idea into 1d cellular automaton which are working the same way like a Turing machine. His contribution was that such 1d automaton are described from a strict mathematical perspective. Such a rigid mathematical closed system is unable to communicate with the environment, therefor its the opposite of artificial intelligence in a modern understanding.

The good news is, that the Artificial life community has shown that their approach is a dead end. There is no need to explore the approach with more effort but the assumption itself of algorithms running inside a closed system can't generate intelligence. 


April 12, 2026

From turing machines to artificial intelligence

 A turing machine is a closed system which executes an internal algorithm but doesn't receives sensory data. This restriction allows to describe turing machines in an elegant mathematical fashion and makes it easy to implement turing machines in hardware. Unfurtunately, the inability of turing machines to receives external input for example from a human or an oracle, will prevent artificial intelligence because closed systems can only solve well definied routine problems but fail in advanced creative subjects.

Oracle turing machines or choice machines have the ability to process external information. Realizing such an advanced turing machine in software is surprisingly easy. A robot may stop on a junction and ask the human operator with a multiple choice drop down field what the robot should do next. The human operator can select "move left" or "move right". The selection of the human is submitted to the robot as external guidance and the robot can continoue his mission.

Such kind of robots are sometimes called an open system because the robot communicates with the environment. Instead of executing a predefined program the robot interacts with a higher instance. Such kind of interactive computing can't be described in classical algorithm terms anymore but the man to machine communication is at foremost a communication process from a sender to a receiver.

Modern artificial intelligence is dealing exclusively with open system which are able to communiate but not with closed system which can execute only a predefined algorithm. Open systems are more powerful but also harder to describe because of the mentioned communication language with the external world.




April 10, 2026

AI powered by natural language

An often asked question in the last 70 years of robotics research was: where is the AI located in a robot? It took around the year 2010 until researchers have answered this important question. The AI brain is located in natural language. A state of the art robot converts natural language into servo motor movements and has a access to large database with natural language commands. This allows the machine to think, take decisions and act.

The principle of realizing artificial intelligence with natural language was imagined before the year 2010 in projects like Televox robot (1929), SHRDLU (1968), Maniac Mansion game (1987) and Vitra visual translator (1987). The innovation which takes place after the year 2010 was, that AI was located only in English sentence but not in other potential sources like path planning algorithms, genetic algorithms, neural networks or expert systems.

The claim is that without natural language interface, its impossible to program a robot. Natural language is the only needed and most powerful tool to realize intelligent machines. There is no need to focus only on the English language because other human languages like German or French works also well. The only precondition is, that its a natural language with a large vocabulary to describe the reality in nouns, adjectives and verbs. Its not possible to use a programming language like Java or C++ for this purpose, but only natural language are powerful enough to grasp the environment of a robot.

Modern robotics after the year 2010 can be described as a semiotic interpretation engine which is able to use grounded language to convert high level symbols into low level motor actions. In other words, modern robotics doesn't work with algorithms or computer programs but the AI was realized with an advanced user interface similar to what is known from Maniac Mansion adventure game. The user interface on the bottom of the screen allows a human to machine interaction and this translation process can generate artificial intelligence.


April 09, 2026

Dataset for grounded language

 A DIKW pyramid consists of 4 layers for describing multiple abstraction level for a game state. In the context of a warehouse robot the following dataset is available.  The task for the neural network is to translate between the layers, this allows a human to machine communication. Human are expressing in full english sentences, while machines are measuring the environment in numerical sensor values.

[
  {
    "id": 1,
    "data": {"pos": [40, 10], "rgb_color": [255, 0, 0], "dist": 2.0, "trajectory": "traj3", "battery": 0.7},
    "information": ["box", "red", "kitchen", "entrance"],
    "knowledge": "Pick up the red box in kitchen room"
  },
  {
    "id": 2,
    "data": {"pos": [15, 5], "rgb_color": [0, 0, 255], "dist": 1.5, "trajectory": "traj1", "battery": 0.65},
    "information": ["box", "blue", "corridor", "obstacle"],
    "knowledge": "Move the blue box out of the corridor to clear the obstacle"
  },
  {
    "id": 3,
    "data": {"pos": [60, 30], "rgb_color": [255, 255, 0], "dist": 5.0, "trajectory": "traj_return", "battery": 0.15},
    "information": ["charging_station", "yellow", "dining_room", "low_battery"],
    "knowledge": "Aborting task: Return to dining room for immediate charging"
  },
  {
    "id": 4,
    "data": {"pos": [45, 12], "rgb_color": [100, 70, 20], "dist": 0.5, "trajectory": "none", "battery": 0.58},
    "information": ["obstacle", "brown", "kitchen", "entrance", "blocked"],
    "knowledge": "Wait for 10 seconds: Entrance is blocked by a moving obstacle"
  },
  {
    "id": 5,
    "data": {"pos": [10, 80], "rgb_color": [200, 200, 200], "dist": 10.0, "trajectory": "traj_search", "battery": 0.9},
    "information": ["room", "corridor", "empty", "pickup_zone"],
    "knowledge": "Scanning corridor: No items found in designated pickup zone"
  },
  {
    "id": 6,
    "data": {"pos": [33, 44], "rgb_color": [0, 255, 0], "dist": 0.1, "trajectory": "traj_dock", "battery": 0.5},
    "information": ["box", "green", "dining_room", "drop"],
    "knowledge": "Drop the green box at the delivery point in the dining room"
  },
  {
    "id": 7,
    "data": {"pos": [5, 5], "rgb_color": [255, 0, 0], "dist": 2.2, "trajectory": "traj_safety", "battery": 0.45},
    "information": ["hazard", "red", "corridor", "liquid_spill"],
    "knowledge": "External command: Avoid red marked area due to a spill in the corridor"
  },
  {
    "id": 8,
    "data": {"pos": [50, 50], "rgb_color": [255, 255, 255], "dist": 0.0, "trajectory": "none", "battery": 0.4},
    "information": ["inventory_list", "mismatch", "kitchen", "room"],
    "knowledge": "Import external data: Re-scan kitchen room to update missing inventory"
  }
]

Warum Python in der Spieleentwicklung Rust überlegen ist

 Die Rust Community behauptet eine Allzweck programmiersprache geschaffen zu haben die für alle Aufgaben von low level bis high level empfohlen wird. Und folglich ist es nur eine Frage der Zeit bis veraltete Programmiersprachen wie C++, Java oder Javascript durch Rust ersetzt werden.

Es gibt jedoch berechtigte Kritik an der Rust Sprache die kurz erläutert werden soll. Moderne Softwareentwicklung basiert zwingend auf der zuhilfenahme eines Large language models, und sei es nur um Fehler im Code zu finden. Der Nutzer postet ein Codesnippet in das LLM seiner Wahl und erhält anders als bei Stackoverflow unmittelbar die korrekte Antwort und muss nicht erst 2 Tage warten.

Large Language modelle sind zwar technisch in der Lage in jeder Programmiersprache den Code zu erstellen, aber ihre Datenbasis wurde mit einer unterschiedlichen Menge an Beispielcode gefüttert. Mainstreamsprache wie Python oder C# werden von LLMs am besten verstanden weil die Menge an Beispielcode von github und die Menge an Tutorials am größten ist. Die These lautet dass jene Programmiersprache die beste ist, die die größte Verbreitung hat, so ähnlich wie English die beste Weltsprache ist, weil es von den meisten Sprechern verwendet wird.

Rust fristet zahlenmäßig ein Nischendasein, es gibt zwar durchaus beispielcode bei github worin gezeigt wird, wie man ein Tetris spiel inkl. grafischer Oberfläche programmiert, für das selbe Problem gibt es in der Sprache jedoch hunderte oder sogar noch mehr Respositorien. Ein weiteres Problem bei Rust ist dass wegen der Neuheit sich die Syntax laufend ändert und die Sprache selber Gefahr läuft durch modernene Forks wie Rue ersetzt zu werden. Das mag hilfreich sein bei der Weiterentwicklung einer modernen Allzwecksprache die über einen eingebauten Memory checker verfügt, macht aber über Nacht den vorhandenen Sourcecode bedeutungslos und fragmentiert das Ökosystem weiter. Das kann bei Python und C# nicht passieren. Die Menge an Beispielcode ist riesig und wächst konstant.

Hier mal einige Zahlen.

- Anzahl Stackoverflow Fragen für Rust: 45k
- Anzahl Stackoverflow Fragen für Python: 2.2 Million

Automatisierung von Teleoperation in der Robotik

 Es gibt einen rationalen Grund warum ferngesteuerte Robotik über Jahrzehnte ein Schattendasein führte. Und zwar benötigt teleoperation einen menschlichen Bediener und lässt sich nicht automatisieren. Robotik versucht jedoch explizit Prozesse zu automatisieren ohne dass dafür menschliche Bediener nötig sind. Ergo wurde Teleoperation als Sackgasse definiert.

Seit ca. 2010 erlebten Ferngesteuerte Roboter ein Revival was auf ein besseres Verständnis für teilautonome Systeme zurückzuführen sind. Frühere Bedenken gegenüber ferngesteuerten Systemen konnten entkräftet werden. Teleoperation kann sehr wohl automatisiert werden und das soll kurz erläutert werden.

Angenommen ein ferngesteuerte Lagerroboter versteht einen Befehl wie "fahre in Raum B und bring mir die Box #4". Streng genommen handelt es sich nicht um einen autonomen roboter sondern wegen des Befehls ist es nur ein ferngesteuerter Roboter. Die Interaktion lässt sich aber mittels Script leit automatisieren. Im SCript steht folgende Sequenz:

1. "fahre in Raum B und bring mir die Box #4"
2. "fahre in Raum A und bring mir die Box #2"
3. "fahre in Raum B und bring mir die Box #8"
4. "fahre in Raum D und bring mir die Box #12"
5. "fahre in Raum C und bring mir die Box #1"

Nach Ausführung dieser Sequenz hat der Roboter ohne weitere Interaktion immerhin 5 unterschiedliche Boxen von verschiedenen Standorten geholt. Er war dazu mehrere Minuten im Einsatz und verhielt sich fast wie ein autonomes System. Wenn die Kopmmandos auf einer hohen Abstraktionsebene formuliert werden, wie im obigen Beispiel zu sehen, ist es keine klassische Joystick Teleoperation mehr sondern solche Systeme haben starke Ähnlichkeit mit autonomer Roboter.

Zwar erhält der Roboter technisch gesehen Befehle von einem menschlichen Bediener, denkt also nicht selber, nur kann die o.g. Befehlssystsem auch in einem SCript oder Makro gespeichert sein, es wird also gar kein menschlicher Bediener benötigt sondern der mensch erstellt einmalig ein Script und damit wird der Roboter autonom.

Die Frage ist weniger ob ein System autonom, teilautonom oder ferngesteuert funktioniort sondern die eigentliche Frage ist auf welchem Abstraktionslevel die Fernsteuerung erfolgt. Wenn über einen joystick lowlevel steuersignale gesendet werden sind diese tatsächlich nur schwer zu scripten. Man kann die Joystick kommandos nicht aufzeichnen und erneut abspielen weil der Roboter in einer anderen Ausgangsposition startet. Wenn jedoch die fernsteuerung mittels text interface erfolgt lassen sich die kommandos leicht aufnehmen und erneut einsetzen. Es lassen sich sogar Programme schreiben, um die Scripte automatisiert zu erzeugen.

Moderne Ferngesteuerte Robotik ab ca. 2010 versucht primär über Text interfaces ein hohes Abstraktionsniveau zu erreichen bei der Mensch maschine Kommunikation. Damit kommt man dem Ziel einer künstlichen Intelligenz sehr nahe.

April 08, 2026

Twelve-tone music on a student party


 

The need for human to robot communication

Layered communication with a DIKW pyramid solves a simple problem: how human can submit commands to a robot. For example the human operator submits "bring me the red box" to the robot and the robot will fetch the box.

The unsolved question is why such a human to robot interaction is needed? In the classical understanding of AI until the 2000s, such kind of pattern was interpreted as a dead end. Artificial intelligence was described as autonomous system which doesn't need to communicate with humans. If a robot doesn't communicates with humans the robot is described as a closed system which is able to run a computer program written in C or runs a neural network algorithm but the robot isn't using human language because there is no need for doing so.

Grounded language realized in AI systems like SHRDLU (1968), Vitra (1987) and M.I.T. Ripley robot (2003) is only needed if human to machine interaction is intended. A possible explanation for this paradigm shift has to do with the weakness of closed AI systems. Existing attempts to build autonomous robots have failed because closed systems are overwhelmed by a complex environment. Even if the robot's software consists of 100k lines of code in the C/C++ language this code won't match to a warehouse robot task because ambiguity and vague goals. Classical computer programming language are working only in a predicted environment like sorting an array or showing pixels on a monitor. Computer programs are the internal language of machines but the code can't store the knowledge for robots task.

Before the advent of human to machine interaction there was another available to build more powerful software for robots based on ontologies. Instead of storing the world knowledge in computer code the goal was to capture knowledge in a Cyc like mental map. Unfortunately, this concept has failed too. Even OWL ontologies are not powerful enough to store domain knowledge. Only teleoperation matches to high complexity. A teleoperated robot arm can do any demanding task including dexterous grasping and novel trajectories never seen before.

During teleoperation the AI problem gets outsourced from the robot itself towards an external source which is the human operator. The teleoperation interface allows a man to machine interaction which translates the external knowledge into robot movements.

April 07, 2026

Introduction to the Rust Programming Language: Safety, Speed, and Sovereignty

 The landscape of systems programming is undergoing a generational shift. For decades, C and C++ were the undisputed kings of performance, but they carried a heavy burden: memory unsafety. Most Common Vulnerabilities and Exposures (CVEs) in modern software are caused by memory leaks and "use-after-free" errors in legacy C/C++ code. Enter Rust, a language designed to provide the performance of C with the safety guarantees of a managed language.
Origins and Philosophy

Rust was created by Graydon Hoare (who also contributed significantly to the development of Apple’s Swift). Because of this shared lineage, developers often notice a familiar, modern syntax between the two languages. Unlike languages that rely on a Garbage Collector (GC)—a process that periodically scans and removes unused memory—Rust introduces a revolutionary Ownership Model.

In C, developers must manually manage memory using malloc and free, often relying on external tools like Valgrind to hunt down leaks. C++ improved this with smart pointers, but Rust takes it a step further at the compiler level.
The Power of Ownership

The heart of Rust is its ownership system, governed by three strict rules:

    Each value in memory has a variable that’s called its owner.

    There can only be one owner at a time.

    When the owner goes out of scope, the value is automatically dropped (cleared from memory).

This prevents memory leaks and ensures that a "use-after-free" error is physically impossible to compile. This level of safety is why giants like Microsoft are planning to transition significantly to Rust by 2030, and why even the Linux Kernel has begun integrating Rust code (currently sitting at roughly 0.3%).
Ecosystem and Tooling

The developer experience in Rust is centered around Cargo, its highly praised build system and package manager.

    Project Initialization: Use cargo init --bin to start a new project.

    Dependency Management: Simply edit the Cargo.toml file to add a "crate" (Rust's term for a library).

    Execution: Run cargo run to compile and launch your application.

Rust is also being used to build entire operating systems, such as Redox OS. Redox is a Unix-like OS written entirely in Rust, featuring its own display server called Orbital and supporting the NetSurf browser.
Learning Through Graphics and Games

Many developers find that the best way to master Rust's strict compiler is through visual projects. The Piston engine is a long-standing choice for game development, but for those seeking simplicity, Macroquad is an excellent library for 2D/3D graphics.

Developer Note: If you encounter errors like "floating point arithmetic is not allowed in constant functions" while using Macroquad on Linux Mint, ensure your compiler is up to date by running rustup update stable.
References and Further Reading

- From C# to Rust: A 42-Day Challenge https://woodruff.dev/from-c-to-rust-a-42-day-developer-challenge/
- Microsoft: Rust to Replace C/C++ by 2030 https://www.martinsfeld.de/blog/microsoft-rust-ersetzt-c-cpp-2030/
- Game Development in Rust with Macroquad https://mq.agical.se/
- The Rust Programming Language (Official Book) https://doc.rust-lang.org/book/
    
  

Grounded language in robotics

The symbol grounding problem and especially the detail of grounded language is a very new subject in computer science. It needs to be explained because its the key element of artificial intelligence. As an introductory example a warehouse robot has stored a json file:

{
  "knowledge": "pick up the red box in kitchen room",
  "information": [box, obstacle, entrance, room, pickup, drop, red, blue, yellow, kitchen, corridor, dining room],
  "data": [pos=(40,10), rgb_color=(100,70,20), dist=20, trajectory=traj3, direction=(40,10), battery=0.7],
}


This json file shows 3 of 4 layers from a DIKW pyramid. It is the current situation of the robot also known as the game state. According to the DIKW pyramid, this current situation is stored in different layers which have a different abstraction. The lowest data layer stores numerical information gathered from hardware sensors. While the information layer stores the vocabulary and the knowledge layer stores a concrete instruction.

The main task of the robots artificial intelligence is to translate between these layers. The human enters a command and the robot understands the command because its translated into the low level data layer. This translation process is called grounded language.

In contrast to former natural language processing (NLP) the goal is not to check the grammar of the input instruction e.g. to verify that the word "room" is a noun or that "red" is an adjective. So the question is not what language is by itself, but the problem has to do with converting from high level abstraction towards low level abstraction in the DIKW layers.

April 05, 2026

Annotating a warehouse robot

The table shows a simple warehouse game played in a 1d corridor. The robot R has to reach the target T and charge its battery at the Start S. Implementing such a mini game is usually realized with an array for storing the position of the objects.

What makes the simulation more demanding is the introduction of grounded language in the form of [tags]. These tags are used to describe the situation on a semantic level. In a DIKW pyramid, the 1d ascii corridor might be the data level, while the tags are the information level. 

1D ASCII CorridorAnnotation with [Tags]
[S R . . . . . T][at_start] [near_station] [status_idle] [path_clear]
[. S . R . . . T][moving_east] [leaving_station] [battery_optimal]
[. S . . R . . T][moving_east] [mid_corridor] [calculating_distance]
[. S . . . R . T][near_target] [decelerating] [scanning_area]
[. S . . . . R T][at_target] [loading_process] [task_active]
[. S . . . . T R][target_passed] [reversing] [adjusting_position]
[. S . . . R . T][moving_west] [returning_to_base] [low_battery_warning]
[R S . . . . . T][docking] [at_station] [recharging] [task_complete]

April 04, 2026

A closer look into the Rust programming language

 Rust is a very new programming language available since 2015. The main problem with Rust is, that its harder to learn than C/C++. Let us describe the situation in detail.

Before the invention of the Rust language, the programming world was divided into beginners languages like Python and Java on the one hand and expert languages like C++, Haskel and Assembly.

A programming language like Python is called a beginner language because its interpreted but not compiled, because there are no datatypes and because the code is easy to read. The disadvantege of Python is well known but for creating prototypes Python is perhaps the best programming language ever invented.

Creating production ready code was mostly done in C++ which is a very efficient language but is hard to write. Rust can be seen as twice as complicated as C++ because it introduces many new concepts and is very different from existing languages like go, java or C#.

The main reason why Rust has become popular is because its newer than the C++ standard. It doesn't provide endless amount of outdated principles but was designed from scratch for productive tasks. So its soem sort of rewrite of the D Language which was also started as a C++ replacement.

In contrast to former C++ replacements like nim, golang and objective c, the Rust language has become more popular. It seems that the demanding learning curve results into efficient software projects which can compete and outperform C++.

The main reason why Rust hasn't replaced C++ yet is because its very new and different, Programmers have to unlearn former knowledge and start from scratch which is a huge obstacle. 


April 03, 2026

The long history of artificial intelligence

Historians are introducing Artificial intelligence with the fact that the subject was researched for over 50 years without much effort. This makes AI research to the most unsuccesful sciences. In contrast to other disciplines like mathematics, physics or psychology its completely unclear what AI is about and how to make computer smart. A closer look into the facts will show that the situation is more dramatic, because AI was researched since 70 years because the Dartmouth conference on AI was held in 1956.

Despite lots of robotics project and a huge amount of published papers there is little or no progress available. Before the advent of chatgpt in Nov 2022, the subject was nearly unknown in public awareness. What was available instead was classical computer science in the form of PCs, the internet and modern gadgets like the iphone. In contrast, the goal of building intelligent machinery was perceived as impossible to realize.

One possible explanation why AI research from the last 70 years is perceived as a dead end is because there are no logic bricks available which are building on each other. Of course many dedicated robotics software frameworks and AI programming languages were created but none of them are perceived as important. There is no such thing available like the x86 hardware standard for AI or the Unix specification which allows other programmers to build on top of the standard new application. Instead the common AI project in the past was started by a few researchers who have written some code and discussed the results in a conference paper and other researchers have read the paper and decided that the outcome makes no sense so they started their own project from scratch.

There is one exception from this rule available which is responsible to the emergence of Artificial intelligence since the year 2010. So called deep learning datasets have become the standard in AI research. A dataset is a table with annotated information, like motion capture data, picture database and more recently multimodal dataset with question answer pairs. These datasets have evolved from simple table with 2000 entries up to larger table created by different researchers in a multi year effort. A certain dataset formulates a puzzle which has to be solved by a neural network. The network has the obligation to interpolate missing data and reproduce existing question answer pairs. For example the neural network is feed with a walking sequence of a human and the neural network recognizes that the left foot is in front of the right foot.

In contrast to the mentioned endless amount of AI libraries and AI algorithm, the dataset principle is surprisingly stable. Dataset were used in the year 2000, in 2010, in 2020 and are also relevant for the future. The assumption is, that datasets are a fundamental building blocks in creating intelligent machines.

In modern understanding an AI dataset acts as a benchmark to score a machine learning algorithm. The ability to score an algorithm transforms AI research from alchemy into a scientific disciplines. Instead of arguing from a philosophical standpoint if machines can think, the question is what the numerical score in a benchmark is. Such a fact can be compared against each other and allows to determine a direction for future research. 



April 02, 2026

Rückblick auf das Vitra Projekt SFB 314

Deutschland gilt in der KI Szene als rückständig, innovationsfeindlich und dominiert von philosophischen Debatten anstatt technischer Projekte. Es gibt jedoch davon durchaus Ausnahmen wie das Vitra Projekt was im Jahr 1987 von Wolfgang Wahlster durchgeführt wurde. Vitra steht für "visual translator" und war ein Großforschungsprojekt im Umfang von 50 Mio DM was erstmalig Bilderkennung und Sprache kombinierte. Technisch wurde es auf VAX Minicomputern und Symbolics Workstations realisiert.

Aus heutiger Sicht würde man Vitra als "Vision language model (VLM)" definieren, nur das es damals nicht mit neuronalen Netzen arbeitete, sondern mit händisch erstelltem Lisp Sourcecode. Ähnlich wie die Zuse Z3 aus dem Jahr 1941 war das Vitra Projekt konkurrenzfähig oder sogar leicht überlegen der US amerikanischen Spitzenforschung.

Die Hauptkritikpunkt an Vitra war, dass es zu teuer war. Man verwendete Großrechner um in Echtzeit Videobilder zu analysieren. Auch die Lisp Programmiersprache war ein Kostenfaktor, weil man Spezialisten benötigte, die Lisp programmieren können. Dieses Konzept, bestehend aus VAX Rechnern, Lisp und Livekameras, kann man nicht hochskalieren zu noch mehr Komplexität, sondern Vitra war eine Art von Dinosaurier, der eine Sackgasse darstellte.

Aus heutiger Sicht würde man viel kleinere Forschungsprojekte durchführen. Man würde nicht Lisp sondern Python wählen und man würde keine Videobilder von Kameras parsen sondern lediglich Screenshots von Videospielen analysieren. Damit könnte der Aufwand zur Realisierung auf ein Bruchteil gesenkt werden.


April 01, 2026

Mülltrennung als Computerspiel

Hier ist ein Lernspiel für Jung und Alt bei dem es um Mülltrennung geht. Der Spieler muss mittels drag&drop mögliche Items in die korrekte Tonne werfen. Viel Vergnügen.

import pygame
import random

# Initialisierung
pygame.init()

# Fenster-Einstellungen
WIDTH, HEIGHT = 900, 650 # Etwas breiter für die 5. Tonne
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Müll-Profi: Jetzt auch mit Glas!")

# Farben
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
BLUE = (0, 102, 204)    # Papier
YELLOW = (255, 204, 0)  # Verpackung
BROWN = (102, 51, 0)    # Bio
GRAY = (50, 50, 50)     # Restmüll
DARK_GREEN = (0, 100, 0) # Glas
LIGHT_GREEN = (0, 255, 0) # Feedback Richtig
RED = (255, 0, 0)       # Feedback Falsch

# Schriftarten
font = pygame.font.SysFont("Arial", 22, bold=True)
title_font = pygame.font.SysFont("Arial", 36, bold=True)

# Erweiterte Müll-Daten (Insgesamt 22 Items)
# Erweiterte Müll-Daten (Jetzt insgesamt 42 Items!)
WASTE_ITEMS = {
    # PAPIER (Blau) - Nur sauberes Papier!
    "Zeitungen": BLUE, "Karton": BLUE, "Schulheft": BLUE, "Prospekte": BLUE,
    "Briefumschlag": BLUE, "Eierkarton": BLUE, "Mehltüte (leer)": BLUE, "Geschenkpapier": BLUE,
    
    # GELBER SACK / TONNE (Gelb) - Verpackungen aus Plastik, Metall, Verbundstoff
    "Getränkedose": YELLOW, "Plastetüte": YELLOW, "Joghurtbecher": YELLOW, 
    "Milchtüte": YELLOW, "Alufolie": YELLOW, "Shampooflasche": YELLOW,
    "Konservendose": YELLOW, "Butterfolie": YELLOW, "Kronkorken": YELLOW,
    "Styropor": YELLOW, "Chipsdose": YELLOW,
    
    # BIO (Braun) - Organisches
    "Apfelrest": BROWN, "Bananenschale": BROWN, "Kaffeesatz": BROWN, 
    "Eierschalen": BROWN, "Rasenschnitt": BROWN, "Teebeutel": BROWN,
    "Orangenschale": BROWN, "Kartoffelschalen": BROWN, "Welke Blumen": BROWN,
    
    # RESTMÜLL (Grau) - Alles Verschmutzte oder Nicht-Verwertbare
    "Zahnbürste": GRAY, "Windel": GRAY, "Staubsaugerbeutel": GRAY, 
    "Asche": GRAY, "Zigarette": GRAY, "Pizzakarton (fettig)": GRAY,
    "Backpapier": GRAY, "Kaugummi": GRAY, "Putzlappen": GRAY,
    "Katzenstreu": GRAY, "Alte Fotos": GRAY,
    
    # GLAS (Grün) - Behälterglas (kein Trinkglas/Fensterglas!)
    "Weinflasche": DARK_GREEN, "Marmeladenglas": DARK_GREEN, "Senfglas": DARK_GREEN,
    "Ölflasche (Glas)": DARK_GREEN, "Parfümflakon": DARK_GREEN
}

class Bin:
    def __init__(self, color, x, label):
        self.rect = pygame.Rect(x, HEIGHT - 160, 140, 140)
        self.color = color
        self.label = label

class DraggableItem:
    def __init__(self, text, target_color):
        self.text = text
        self.target_color = target_color
        self.reset_position()
        self.dragging = False
        
    def reset_position(self):
        self.rect = pygame.Rect(WIDTH // 2 - 75, 180, 150, 45)

# 5 Tonnen erstellen
bins = [
    Bin(BLUE, 30, "Papier"),
    Bin(YELLOW, 200, "Gelber Sack"),
    Bin(BROWN, 375, "Bio"),
    Bin(DARK_GREEN, 550, "Glas"),
    Bin(GRAY, 725, "Restmüll")
]

# Spiel-Variablen
score = 0
feedback_text = "Zieh das Wort in die richtige Tonne!"
feedback_color = BLACK

def get_new_item():
    name = random.choice(list(WASTE_ITEMS.keys()))
    return DraggableItem(name, WASTE_ITEMS[name])

current_item = get_new_item()

running = True
while running:
    screen.fill((240, 240, 240)) # Hellgrauer Hintergrund
    
    # UI Zeichnen
    title = title_font.render("Müll-Sortier-Station", True, BLACK)
    screen.blit(title, (WIDTH//2 - title.get_width()//2, 30))
    
    score_display = font.render(f"Punkte: {score}", True, BLACK)
    screen.blit(score_display, (30, 30))

    # Tonnen zeichnen
    for b in bins:
        pygame.draw.rect(screen, b.color, b.rect, border_radius=8)
        # Beschriftung der Tonne
        txt_color = WHITE if b.color != YELLOW else BLACK
        txt = font.render(b.label, True, txt_color)
        screen.blit(txt, (b.rect.centerx - txt.get_width()//2, b.rect.y + 55))

    # Aktuelles Item zeichnen
    if not current_item.dragging: # Schatten-Effekt wenn nicht gezogen
        pygame.draw.rect(screen, (200, 200, 200), current_item.rect.move(3, 3), border_radius=10)
    
    pygame.draw.rect(screen, WHITE, current_item.rect, border_radius=10)
    pygame.draw.rect(screen, BLACK, current_item.rect, 3, border_radius=10)
    item_txt = font.render(current_item.text, True, BLACK)
    screen.blit(item_txt, (current_item.rect.centerx - item_txt.get_width()//2, current_item.rect.y + 10))

    # Feedback
    f_txt = font.render(feedback_text, True, feedback_color)
    screen.blit(f_txt, (WIDTH//2 - f_txt.get_width()//2, 120))

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if current_item.rect.collidepoint(event.pos):
                current_item.dragging = True
                mouse_x, mouse_y = event.pos
                offset_x = current_item.rect.x - mouse_x
                offset_y = current_item.rect.y - mouse_y

        elif event.type == pygame.MOUSEBUTTONUP:
            if current_item.dragging:
                current_item.dragging = False
                hit_bin = False
                for b in bins:
                    if current_item.rect.colliderect(b.rect):
                        if b.color == current_item.target_color:
                            score += 10
                            feedback_text = f"Richtig! {current_item.text} gehört in {b.label}."
                            feedback_color = LIGHT_GREEN
                        else:
                            score -= 5
                            feedback_text = f"Falsch! {current_item.text} ist kein {b.label}!"
                            feedback_color = RED
                        
                        current_item = get_new_item()
                        hit_bin = True
                        break
                
                if not hit_bin:
                    current_item.reset_position()

        elif event.type == pygame.MOUSEMOTION:
            if current_item.dragging:
                mouse_x, mouse_y = event.pos
                current_item.rect.x = mouse_x + offset_x
                current_item.rect.y = mouse_y + offset_y

    pygame.display.flip()

pygame.quit()