top of page

Script for my video "Unveiling Project Hermes":

​

"Hi there. My name is Christopher Allum and welcome to Project Hermes.

​

My objective with this project is to combine state-of-the art and developing AI algorithms with my own heuristic emotional model to create an extremely robust controller for a companion robot. Physically, the bot will look like a cross between the Star Wars BB-8 and a Starcraft 2 Probe but with the addition of conductive thread mixed into some fur.

​

​

​

​

​

​

​

​

​

​

​

​

​

​

 

 

 

 

First I will introduce the project as a whole, then I’ll talk more in detail about the emotional heuristic model.

The main algorithm I will be using is called HTM, which stands for hierarchical temporal memory. This open-source algorithm is being developed primarily by the company Numenta in California; they currently use the algorithm commercially for anomaly detection on live data streams. The algorithm as a whole has some incredibly unique characteristics that really distinguish it from other algorithms. Firstly, it uses unsupervised learning, meaning it does not require any training before use. Secondly, since it can do anomaly detection very well, it can be used to create an ontology based on its view of the world. Lastly, the algorithm makes heavy use of what the HTM developers call ‘encoders’ which can be used to interpret any type of sensor input I may like to use. In other words, it will be relatively easy to interface a large array of different types of sensors into the system because each will be associated with its own unique encoder.

 

When completed, the HTM algorithm will include techniques for complex planning. Until that is complete I intend to use an evolutionary algorithm to help the system plan its actions. It will take into account parameters such as battery level, emotional model health, and physical safety when planning its actions. The evolutionary algorithm is well documented and commonly used in research and military applications.

​

Alright, so now I’ll talk about the meat and potatoes of this video – the emotional model. First, a quick but important side-note. This emotional model is completely heuristic. With that said, this particular part of the project should be viewed as an art project more so than a calculated engineering design. However, I find this justified because I’m not aware of any accurate models or representations that encompass the peculiarities of the complex emotional spectrum. I do however, know that I want a system which:

​

  1. Decays emotional intensity over time

  2. Avoids being stuck in a certain state (avoid local max/min)

  3. Is based on cognitive psychology research

  4. Output a score for all defined emotional states

  5. Has some 'inertia' which prevents instantaneous change between emotional states

​

Those are the primary goals, now I’ll describe how I hope to achieve them and I’ll show you what I have so far.

​

The system can be visualized as a mesh which contains blue particles which are both moving somewhat randomly but always seeking the lowest point on the mesh. The density of the particles in a specific location contribute to the score of a certain emotion. The number of particles on the mesh is constant, if one falls outside the bounds of the field it is replaced by a new particle at a random location.

 

Here is the mesh I have chosen to use. It consists of a circular mesh grid with tapered corners. The mesh is slightly dome shaped so that the particles tend to fall away from the center.

 

​

​

​

​

​

​

​

​

​

​

​

​

In addition to the slight bubble shape of the mesh, I have added a wave function which emanates outwards from the center. The wave pushes out particles away from the center at a constant rate.

​

​

​

​

​

​

​

​

​

​

​

​

​

​

To achieve my goal of decaying emotional intensity over time, I will now define emotional intensity as both the sum of the particles within that emotion’s region and as a function of its proximity to the center. There is another heuristic worth noting here. The particles oscillate between a state of being on the mesh and being above the mesh. When above, they do not seek the lowest point and only move randomly. This allows them to escape valleys within the mesh and to either leave the field and respawn, or to find another valley. Cloud particles highlighted in red can be seen hovering above this valley:

​

​

​

​

​

​

​

​

​

​

​

​

 

At this point I’ll represent the model using a colored height map, hiding the corners, and showing areas of high particle density as green. Red is low elevation and blue is high elevation.

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

 

There is a crucial part of this terrain which I haven’t yet mentioned. Over time, the mesh smooths itself out – meaning hills and valleys will decrease in size over time. This contributes towards always having a decaying emotional intensity by removing all potential particle sinks. One last heuristic I’d like to cover is that of random noise within the system. To encourage particles to spread out and as a catalyst for the smoothing, randomly placed very small hills and valleys are constantly created around the mesh. In essence this adds noise to the system which increases both variability and stability.

​

​

​

​

​

​

​

​

 

 

The next piece of this puzzle is adding meaning to the particle density locations. To accomplish this I am resorting to an emotion color wheel which contains a variety of emotions. Before implementing this aspect of the project I am planning to make contact with some cognitive psychology specialists but I will only do so after I have completed my completely unrelated MSc thesis which takes priority at the moment. I am hoping to create a wheel similar to the ‘feeling wheels’ developed by Christopher Cobb and Gloria Wilcox – but adapted for my own purposes.

​

​

​

​

​

​

​

​

​

​

​

​

 

 

 

Lastly, some notes about the interactions between this emotional model and the AI algorithms. Stimuli, as interpreted by the HTM algorithm, will create hills and valleys in particular regions on the model. For now, I am creating them by pressing keys on the keyboard, simply to demonstrate the particle interaction with the terrain. To close the loop, or provide feedback, the emotional model will output its current emotion levels into both the HTM model and into the evolutionary planning algorithm. I would very much like for the HTM model to help determine where each emotional region is defined, but how I will accomplish this in a meaningful way is still unknown.

To finish up, I’ll create some hills and valleys that simulate a stimulus and then I’ll leave it running until it stabilizes for you to see the behavior of the system over time. Thanks for watching and please leave me a comment or question below."

​

​

​

​

​

​

​

​

​

​

​

​

​

​

​

bottom of page