July 22, 2026
Grounded language in open systems
The box on the left is the human who describes the reality with natural language. The box on the right is the environment which can be perceived with sensors. Symbol grounding is the connection between both boxes.
From a system perspective the 2 box system is an open system because both boxes are connected to each other. Natural language from the left box is referencing to physical objects in the right box, while perceived reality in the right box gets described with English words in the left box.
The assumption is, that there are 2 different systems available which are working with different internal logic. The language layer consists of nouns, verbs, adjectives and grammars which is the symbolic layer. In contrast, the environment has no natural language but it consists of sensor perception, motor actions and 3d objects. The 2 box paradigm describes in a simplified format what natural language is about. Its an abstraction mechanism for the reality. Physical objects like a table or a banana are labeled with words. The ability to label objects is the key element in grounded language and allows to build intelligent robots.
January 30, 2025
Programming heuristic algorithms
Around the year 1990 the understanding of heuristic algorithms was poor. The problems are visible even in the definition what a heuristic is about. Normal algorithms are step by step instructions formulated in source code, e.g. bubble sort or a path planning algorithms. In contrast, a heuristic algorithm is based on domain specific knowledge, but it remains unclear how this knowledge is encoded in software.
It makes sense to assume, that a heuristic algorithm isn't a technology but only a wish for such a technology. Its more a question for future mopre efficient algorithms not invented yet. Nevertheless there are some attempts available to describe the situation in detail. One famous example is a cost function. Cost functions are used to encode the knowledge of experts into a simple mathematical equation. For example the distance there is a distance in a maze to the goal, or there is a cost function available for colliding with an obstacle. The idea behind a cost function is to encode a high level descripotion "Move to the goal, avoid the obstacles" into a mathematical model which can be translated into actions.
If cost functions are an entry level heuristic algorithms, there is another more advanced strategy available which are text based robot control. The idea is, to provide domain knowledge on the fly, during the runtime of the program. The human operator speaks to the robot e.g. he gives the current subgoal, and this information is converted into a mathematical equation. In contrast to the previously mentioned static cost function, a text based teleoperation is harder to implement but provides higher flexibility.
Let us analyze the workflow in detail. The human operator provides the next subgoal in natural language, this information is translated into a cost function by a parser, and the cost function is used to plan the trajectory of the robot. Even if the pipeline sounds a bit complicated it can be realized in software. The bottleneck is how to translate natural language instructions into a mathematical equation.
The similarity between cost function and text based control is, that the domain specific knowledge isn't available in the robot itself, but its provided from the environment. This redfines the robot's role from a former autonomous robot into an interactive device. The principle is similar to bottom up robotics formulated by Rodney brooks in the late 1980s. In contrast to Brooks subsumption architecture, the robot is more dependent from the environment. Instead of using a frontsensor to avoid an obstacle, the robot gets textual input from a human operator, so its entirely remote controlled.
October 05, 2019
Why cognitive architectures can't solve real world problems
It has to do with a missing understanding of environments vs agents. The connection between both of them is explained in the literature as grounding, but the definition is not precise enough. The terms agent and cognitive simulation are often used with the same purpose. For solving practical problems from robotics only the simulation part is more important, and the AI can be ignored. If the domain was converted into a simulation the problem was solved. That means, a simulation doesn't need a sophisticated Artificial intelligence.
But let us take a deeper look into the BDI framework. The Belief desire intention concept is often described as a software for creating AI-agents. But in reality, a BDI agent has at foremost the obligation to represent the problem. If the agent was designed for a robocup like game, the agent will contains of procedures and variables from the soccer domain. That means, it provides a variable ball, a function “moveto” and an event like “lost the ball”. According to strict border between agents and simulations these terms are not located in the agent but they are part of the environment. That means, the variable ball doesn't belong to a certain agent who likes to play the game, but it is provided by the game engine of the domain.
The question is not how to play a given game, but how to create a formalized game for a domain. Before a software program can be implemented which kicks the ball in Robocup, there is a need to write a simulator which allows agents to play the game. If the simulator has more features and was programmed well, it will become much easier to write an AI for it.
A typical mistakes of robotics engineers is, to leave out the step of programming a simulator. They are using a robot in hardware, for example an Arduino board and the idea is, that after pressing the on button the robot is able to play the robocup game. The beginner assumes, that the robot itself needs a certain amount of intelligence and knowledge to understand the game and determine the next action. This assumption leaves out the importance of a simulator:
Robocup domain -> agent plays the game
The robot who plays the game was programmed with an agent architecture. Such project will fail. The agent aka the AI is not able to interact with the domain in a meaningful way. The more elaborated workflow is:
Robocup domain -> simulator -> agent
To understand why the second pipleline is more efficient we assume that the agent is equal to a random generator. He can't inference anything, but the robot is producing random numbers all the time. On the first look this strategy will fail to solve the robocup game. Surprisingly it is working great if the underlying simulator was programmed already. The simulator provides meaningful motion primitives like “take ball”, “kick ball”. If the agent sends random numbers to the simulators, it's possible that the agent plays the game reasonable well.
The intelligence is not located within the robot but in the simulator. The domain simulator converts a domain into machine readable API. It's called grounding and is the most important part of an Artificial Intelligence system.
Creating complex simulations
There are some techniques available for creating complex realistic simulations for a domain. In traditional software engineering there are object oriented programming languages invented. They can be utilized for creating hierarchical object oriented models. That's an UML chart which contains lots of classes distributed in hierarchical layers. Sometimes the protege tool is recommended to design such object oriented model The idea behind Protege is, that the user can creates classes which are describing a domain.
Object oriented programming and the Protege tool is used for creating simulations. A given domain, for example a soccer game, is mapped into objects. All the allowed sensor rules, actions, and events are formalized in an object hierarchy. This is called by game programmers a game engine, or rule engine because it holds the game itself.
In a short but readable tutorial it was explained how to use object oriented programming for create videogames, https://gamedevelopment.tutsplus.com/tutorials/quick-tip-intro-to-object-oriented-programming-for-game-development--gamedev-1805 Three different domains were given: Asteroids, Tetris and Pacman. All the games can be realized by creating objects which have attributes and methods. This is equal to create a game simulator, it's a computer program which executes a certain game. After the game objects are created, it's possible to interact with the game engine. For example, in the Asteroids game it's possible to send a “turning” command to the spaceship which will modify the trust variable.
It's interesting to know, that without a simulation written in a object oriented language it's not possible to play a game. Also it doesn't make sense to discuss a possible AI which can play the game autonomously.
A convenient way for accessing lots of UML models for games is the “site:genmymodel.com pacman” website. It's possible to ask the site for a certain game, and it will result a list of UML diagrams which are used as a game engine. Easy games are containing not more than 10 classes, which are connected on the same hierarchical level. More complex games are realized by a hierarchical object model which allows to store 50 and more classes. It's interesting to know, that no object model is available for the problem of simulating an AI or a robot. Because this kind of game is to general. Instead, only concrete domains like pong, pacman, soccer and RPG games are available.
From a simulation to an AI
On the first look an existing UML Diagram for a video game or the written sourcecode for the game engine doesn't answer the question how to play this game autonomously by an AI. Because the question is not how to program a game, but how to realize the Artificial Intelligence ... It's interesting to know, that both is connected together. A well written game engine can be easily scripted. A script is short computer program which sends commands to the game API. If the Game API has more features it's much easier to write a script and vice versa.
Apart from scripts there are other options for utilizing an existing game engine API, for example neural networks, a random generator, reinforcement learning and so on. All these AI techniques become more powerful if they are not used from scratch but are producing commands for a given game API. That means, the intelligence of the resulting non player character isn't located in the neural network but in the game engine which provides the allowed actions for the neural network.
Let me explain this strange situation on a concrete example. Suppose a real time strategy game was programmed already. The game engine supports the creation of new buildings and it's possible to move units on the screen. The only missing part is the AI. Instead of programming a dedicated AI, the user writes a 10 line python scripts which is using a random generator for generating a number between 0 and 100, and then a random action from the game API is executed.
The resulting AI will produce only sense making actions. He will build first some buildings, move the units and builds more buildings, very similar to what a human user would do. The reason is, that the game API transforms the random generated numbers into semantic correct behaviors. If the strength of the AI is too low, not the AI has to be improved but the game engine.
October 03, 2019
Symbolic AI explained
Agent-based programming languages like Agentspeak are working with the belief-desire-intention model. This is an abbreviation for 1. recognize the current state, 2. define the future state, 3 create a plan. It's interesting to know, that this kind of workflow can be implemented with a STRIPS like planner. The STRIPS Solver needs as input the current world, it needs also the goal state, and then strips is able to plan the actions in between.
STRIPS and the more recent declarative AI language PDDL are examples for a cognitive architecture. They are used to simulate the behavior of a human. Unfortunately, it's not answered yet how to convert a certain domain into a STRIPS notation or into a agent-simulation language like golog. Most practical projects from within the robotics domain are not focused on simulation of human thinking but they are domain oriented. That means, converting the Mario AI game into the strips notation is done with actions and goals from within the Mario game, while converting a snake game into a agent-simulation has to be done with the typical motion primitives from snake.
So in reality, the term cognitive architecture is a bit misleading. In reality, it's a more a domain-specific simulation in which not the human is simulated but the task he is trying to solve.
Agentspeak = qualitative simulation
Agentspeak defines itself as a cognitive architecture written in Java. The idea is, that the programmer gets a tool for creating a multi agent system. It's interesting to know, that the programmer doesn't define the agent itself, but he writes down the domain in a machine readable form. Converting a domain into the agentspeak syntax is equal to program a qualitative simulation.
Let me give an example. Suppose the domain has to do with a robot in a maze. For simulating the robot a symbolic game has to be written. The game consists of a game state, and possible actions. In the game programming literature this is described as a game engine or rule engine. The robot has a position (variable pos), he can move in 4 directions (action move), and he can collide with an obstacle (event collision).
Where exactly is the difference between a cognitive architecture written in Agentspeak and a game engine? Right, there is no difference, it's the same. Agentspeak can't be utilized for creating agents, but it's a game construction kit. From an abstract point of view, an agent simulation is utilized for simulating a system. The term system isn't referencing to an Artificial Intelligence, nor a cognitive agent, but to a domain. A possible domain is the “Super Mario game”, the Snake game, or a robot in a maze. The question is how to convert these domains into a computer simulation. This process is called agent programming, or game engine programming. From an engineering perspective the correct term is forward modelling or system identification. It means to convert a given domain into a computer simulation.
The most interesting aspect is, that system identification doesn't need an intelligent agent in the loop. If a the movement of a rigid body are formalized by ordinary differential equations, it's for sure, that the rigid body isn't able to think. Instead he is following physical laws. The same is true for implementing a racing car. The game engine which calculates the current position of the car in response to the speed value isn't an agent, nor an Artificial Intelligence, but it's the normal game engine. The result of the game engine is visualized by the graphics engine of the program.
That means, in practical projects, an agent can't be identified in a given domain. If the domain was transfered into a simulation, all the work was done.

