One of the most distinctive features of Embrio is that it uses “activations” as the main data type. An activation is simply a floating point number between 0.0 and 1.0. Sometimes an activation can also extend down to -1.0 as its minimum value. This post will further discuss the concept of an activation and why it is so powerful in embodied software.
As mentioned previously, Embrio was designed primarily as a tool for created embodied software. In nature bodies are controlled by brains, so understandably Embrio is based loosely on the brain. The brain is made out of neurons. Very basically a neuron is made up of a cell body with inputs and outputs that connect to other neurons. Neurons communicate with electro-chemical signals called “action potentials”. In reality these communications are very complicated, but when modeled in a computer the signal is either very much simplified to an on or off value, or slightly less simply as a floating point value between 0 and 1, which is what Embrio uses. A neuron sums together its input values, and if this value is over the neuron’s threshold, the neurons output turns on passing that signal onto other neurons, otherwise it stays off. The brain is a ridiculously complicated network of billions of neurons with trillions of connections between them, organized into staggering structures and layers designed by evolution over a billion or so years. An Embrio program is a simple network of interconnected nodes designed by a human with moderate intelligence in hours or days. There are more differences than similarities, but Embrio takes a lot of inspiration from the brain.
The power of an activation is that it can represent anything happening in a physical system. Imagine neurons all over the brain that turn on when the specific state that they detect occurs. For example in the parts of the brain that do vision one neuron would turn on when it detects an edge or line, another neuron turns on when it detects a nose, and another turns on when it detects Joe’s face. Elsewhere in the brain a neuron turns on when its body is hungry, or scared, or tired. A neuron can turn on when it detects that its body is about to walk into a wall, or that the road ahead is icy. In a real brain, these detections are represented by the firing of hundreds or thousands or millions of neurons, but in an Embrio program they are represented by one activation. In a robot an activation can turn on when there is a wall to the left, or when the measured velocity is less than the desired velocity, or when the battery is low. The important point is that any state can be represented by an activation as a common simple data type. An activation is a universal currency that all parts of a program can exchange.
Another powerful aspect of an activation is how they are multiplied together. Multiplying any number by 0 results in 0, and multiplying any number by 1 results in the same number. In Embrio, activations flow in from external sources like sensors, through the program to outputs like motors or lights. This flow can be squeezed shut by multiplying an activation by another activation with a 0 value, or let through by multiplying it with an activation of 1. A lot of what an agent in Embrio does is turn on or turn off other agents. Most agents have an input activation that other agents can connect to and pass a 1 activation to turn on that agent. More about this will be discussed elsewhere.
Almost all sensor or other input data in an Embrio program should be converted from whatever data type and range they come in as into an activation. These activations flow through the program, turning agents on or off, until they come to outputs to the program at which point the activations are transformed back to whatever range the target hardware requires. There are some cases where it doesn’t make sense to represent a value as an activation, like if you are making a clock and want to represent seconds, minutes and hours. In these cases you can use the other data types, but generally all of your logic and as much data as makes sense should be done with activations.