Creating a robot with emotions is a software development problem.
Emotion is a matter of cognitive architecture.
It is part of the information system of the mind. Recreating emotions really means recreating a type of mind that uses internal mechanisms similar to our minds. Making an emotional machine requires a proper design and implementation and deployment.
The reason I added “deployment” in there is because environment is quite important.
The mind is a system that interacts with other entities—there is an information flow. Or, you might say the mind is a subset of interactions spanning all kinds of agents and objects in the local area of the world—and that we as observers are pointing to and saying “this is a mind.” User Experience and Interaction Designers are perhaps more in tune to this kind of thinking than your typical AI or robotics person.
The level of externalism required affects how situated and/or embodied an artificial agent has to be. That is where robots come in. However, a robot and its world can be simulated and that might be good enough to witness emotions happening of the same type as seen in biology.
Architecture?
The metaphor of architecture lets us think of the mind as a building. But really I mean a large building that was built from millions of interlocking parts and took months or years to design. And as with buildings, a mind is not just designed and built—it also has to survive in a world.
The metaphor breaks down a bit when you consider how natural minds emerge from ever-changing, growing (or shrinking), adaptable, flexible bags of meat.
However, in their own slow way, buildings do change via maintenance and new additions, and they are in fact flexible and movable so as to survive wind and earthquakes.
Or maybe the better architecture metaphor is mind as a city.
And it builds up and forms—while always being active—at a super fast rate compared to how an actual city forms and changes.
Of equal or greater importance, I also think of architecture here in its software engineering usage1IEEE Computer Society, IEEE Recommended Practice for Architectural Description of Software-Intensive Systems: IEEE Std 1472000. 2000. via P. Eeles, “What is a software architecture?”:
Architecture is the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution.
Why Do We Need an Entire Architecture?
One might think that a programmer could just add in some emotion—make a few calls to the emotion function, or tack on a loosely coupled Emotion module.
But based on the best theories so far from researchers, emotions are actually many things. At many levels. Not just one module.
And they are all inherent in the system and intertwined with evolutionarily old parts. In other words, if you ripped out all the stuff related to emotions, you wouldn’t have much left.