Do computers/robots actually "think"?

Creating and Using Context

I would totally agree on the comments about context…it is such a fundamental thing to trying to simulate thinking.  So much so, that in my world, a “Context” object is about the only thing I pass around to all the software pieces that do anything analogous to thinking.

Forgive me for diving deep…as a coder, I can’t help it.  This is my appproach to creating a context:…simplified to fit here.

To me, a context starts with everything that is known about the current state of the robot (inputs).  Each item in the context needs an ID or a key of some kind, like a name.  As a given context is processed in a given moment, various agents can be activated by the presence of particular inputs or patterns of inputs (keys).  Each activated agent can then interrogate the context further and add more keyed items to the context.  Some of this could be thought of as “feature detection”.  In addition, any agent can create responses options or short and long-term memories.  This culminates in a selection of a winning response or responses (output).

I use this technique for everything like vision, speech, annotation, NLP, sonar arrays, reflexes, controlling motor control movements…as the winning output can contain a lot of data that rides along with it.    For example, Servo gestures and emotional outputs differ for each response option if present.

This technique keeps the code for one single piece relatively simple, while allowing for very complex behavioral interactions to occur.  It keeps everything loosely coupled, letting you add agents and totally change how thoughts are processed without breaking things.  People who want to optimize for performance might protest…but a set of other advantages usually come with a price.

There are probably an infinite number of ways to create a context…that’s just how I do it.

I would be fascinated to hear how others approach this.