Cognitive Face

How to add the Cognitive Face robot skill

  1. Load the most recent release of ARC (Get ARC).
  2. Press the Project tab from the top menu bar in ARC.
  3. Press Add Robot Skill from the button ribbon bar in ARC.
  4. Choose the Camera category tab.
  5. Press the Cognitive Face icon to add the robot skill to your project.

Don't have a robot yet?

Follow the Getting Started Guide to build a robot and use the Cognitive Face robot skill.

How to use the Cognitive Face robot skill

Use the Cognitive Face cloud service to detect faces, describe emotions, guess age and get the person's name from a worldwide database. The images come from the Camera Device robot skill added to the project. This plugin requires an internet connection. Please consult the appropriate lessons in the learn section to configure your EZ-B to WiFi client mode or add a second USB WiFi adapter.

Currently Disabled

This robot skill will only return an error because Microsoft has discontinued this service for their AI ethics. Microsoft had concerns that this technology detects the sex, age, and emotions of a person who may feel violated by their personal rights. This robot skill will be maintained here if a replacement is found.

What Does It Do?

This control will use the camera to detect and learn your facial features. Once you teach it your name, your face profile is saved in a global worldwide database. Now every robot on the planet can know who everyone is! With this control, you can visit a friend, and their robot will know who you are. Detected names, ages, and emotions are stored in variables for use in EZ-Script or Blockly. Use ControlCommand() to trigger the Detect or Learn buttons. Consult the Cheat Sheet for available ControlCommands.

What Doesn't This Do?

The Camera Device Control has built-in support for trackings, such as Objects, Faces, Colors, Motion, Glyphs, and more. This control does not track a face - meaning, this control will not move servos or have your robot detect when a look is in the camera view. For moving servos and detecting faces, use the Face Tracking option of the Camera Device. This control will populate variables and execute a script with the detected Name, Age, and Emotional status of the face in the camera.

What Can I Do With It?

When your face and name have been taught to the control, the information is saved in a cloud database. Any robot that detects your face can know your name. You can create straightforward scripts that greet people or perform specific actions.

Cognitive Face In Action

In the screenshot below, you can see Dj Sures' face detected. The control displays his name, estimated age, and emotional status. Now that the Cognitive Face Cloud Database has learned DJ's face, it would know who he is if your robot were to see DJ.


Limited Daily Quota

This robot skill uses a shared license key with Microsoft, enabling ARC users to experiment and demo this robot skill. The shared license key provides a daily quota for ARC Pro users of 500 requests per day. Because this robot skill uses a 3rd party service that costs Synthiam per transaction, the daily quota is not to exceed our spending limit. If your application requires a higher daily quota, we can provide a robot skill that allows specifying your license key to pay Microsoft service directly. Contact Us for more information.


Upgrade to ARC Pro

Become a Synthiam ARC Pro subscriber to unleash the power of easy and powerful robot programming


It looks like a great thing to have in a robot, but how do I get the name of the person into a variable as well as the values for surprise, sadness, etc.


You’ll find those values in the global variables.

Unknown Country

When trying to detect a face, after having trained JD to learn mine, here is the pop up text I get at the bottom of the screen anytime the robbot detects me :

Camera: Camera Control Error: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet. à System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) à System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) à System.Windows.Forms.Control.Invoke(Delegate method) à SmartVariableWatcher.FormMain.updateVariable(String var, Object val, Int32 index) dans C:\My Documents\SVN\Developer - Controls\In Production\Smart Variable Watcher\MY_PROJECT_NAME\FormMain.cs:ligne 114 à SmartVariableWatcher.FormMain.VariableManager_OnVariableChanged(String variableName, Object value, Int32 index) dans C:\My Documents\SVN\Developer - Controls\In Production\Smart Variable Watcher\MY_PROJECT_NAME\FormMain.cs:ligne 49 à ARC.Scripting.VariableManager.CreateVariableArray[T](String variableName, T[] values) à ARC.UCForms.FormCameraDevice.HO3YzpriUPo(List`1 ) à ARC.UCForms.FormCameraDevice.w38YzLfaOgi()

Any input would be greatly appreciated! Thanks!


You are getting an error from the smart variable watcher. Remove the smart variable watcher from your project. The smart variable watcher should only be used for debugging and diagnostics.


There was an update to the smart variable robot skill, which should remove that error if you choose to use it. But the smart variable robot skill should only be used for diagnosing projects because it is CPU intensive.