About the Evoke API

Evoke includes an extensive Application Programming Interface (API) for remote control, system monitoring and third-party application integration.

The API has two parts:



For information on running entirely via the API, without the Graphical User Interface (GUI), see Headless operation.

Vicon Core API

The Vicon Core API provides the core functionality for client/server communication, and schemas that define the types, functions and callbacks supported by the Vicon application. It is a generic JSON-based protocol operating over TCP.

Evoke opens the server socket on port 52800 by default. To specify the port number, launch Evoke with a command-line argument:

C:\Program Files\Vicon\Evoke1.#\Evoke.exe --terminal-port=52800

A sample exchange may look like this (debug logging has been turned on for the ViconCoreAPI category, so all messages sent and received are logged):

2019.09.13 13:42:38.123 +1	Default	ViconCoreAPI	Starting Vicon Core API server on port 52800...
2019.09.13 13:42:38.456 +1	Default	ViconCoreAPI	Opened connection to 127.0.0.1:53926
2019.09.13 13:42:38.629 +1	Debug	ViconCoreAPI	Sending to 127.0.0.1:53926 [4,0][]
2019.09.13 13:42:38.631 +1	Debug	ViconCoreAPI	Received from 127.0.0.1:53926 [Terminal.AppInfo,5] []
2019.09.13 13:42:38.632 +1	Debug	ViconCoreAPI	Sending to 127.0.0.1:53926 [5,0]["Evoke","1.6.0.0","0"]
2019.09.13 13:42:38.645 +1	Debug	ViconCoreAPI	Received from 127.0.0.1:53926 [ApplicationServices.Shutdown,6] []
2019.09.13 13:42:38.730 +1	Debug	ViconCoreAPI	Sending to 127.0.0.1:53926 [6,0][""]

This trace shows two commands sent to the server as JSON-encoded strings, in the format [SchemaName,CommandId] [Data]:

Each command is assigned a unique number by the client, and this number is sent back by the server with the reply, with the format [CommandId,ResultCode][Data]. This enables the client to match replies to the correct command.

Evoke API

The Evoke API is a client library that facilitates access to the services provided by Evoke. It includes all the schemas supported by the application, and classes for the data types exchanged via API. It is also responsible for serializing user data into JSON for transmission to the Vicon Core API server, and deserializing the replies back into user data.

Evoke API is compatible with Python 2.7 and Python 3.7 and later.

The following services are currently provided:

Client libraries are supplied for C# and Python, located by default at:

C:\Program Files\Vicon\Evoke1.#\SDK

Instructions for use and full documentation are included in the packages. A limited dashboard application is provided for C#, together with a number of sample Python scripts.

Install the Evoke API

To use the Evoke API with Python, you must make sure that you have both installed.

The Evoke API provides support for Python 2.7 and Python 3. Vicon recommends that you use the latest full release of Python 3, unless your project requires you to use a specific version of Python.

These procedures guide you through the installation process:

Check Python version

If you are not sure if you have Python installed or which version of Python you are using, you can open a command prompt and run the py command. For example:

c:\>py
Python 3.11.3 (tags/v3.11.3:f3909b8, Apr 4 2023, 23:49:59) [MSC v.1934 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>>


If you do not have Python installed, see Install Python.

Install Python

To install Python 2 or 3:

  1. Go to https://www.python.org/downloads/
  2. Locate the required version and install Python, ensuring that Add python.exe to PATH is selected:

    In the above image, ABC is replaced with your username for the installation folder.

Install the Evoke Python module

To install the Evoke Python module:

  1. Locate the installation files. If you installed Evoke in the default location, they are found in this folder:

    C:\Program Files\Vicon\Evoke1.#\SDK\Python

    These folders and files are displayed:

  2. Install the Evoke Python module in either of the following ways, depending on your particular installation:

Install the Python module by running the batch file

To do this:

  1. Navigate to the Python install folder:

    C:\Program Files\Vicon\Evoke1.#\SDK\Python

  2. Double-click install_evoke_api.bat.

    The installation process initializes automatically.

Install the Python module by running pip

  1. Navigate to the Scripts folder for the Python that you want to use:

  2. Open a command window or powershell in that folder.
  3. Run the following command to install the Vicon Core API:

    C:\Users\<username>\AppData\Local\Programs\Python\Python311\Scripts> .\pip.exe install "C:\Program Files\Vicon\Evoke 1.6\SDK\Python\vicon_core_api"



    C:\Users\<username>\AppData\Local\Programs\Python\Python311\Scripts> .\pip.exe install "C:\Program Files\Vicon\Evoke 1.6\SDK\Python\vicon_core_api"



  4. Run the following command to install the Evoke API:

    C:\Users\<username>\AppData\Local\Programs\Python\Python311\Scripts> .\pip.exe install "C:\Program Files\Vicon\Evoke 1.6\SDK\Python\evoke_api"



    C:\Users\<username>\AppData\Local\Programs\Python\Python311\Scripts> .\pip.exe install "C:\Program Files\Vicon\Evoke 1.6\SDK\Python\evoke_api"



Note
The above examples use a Python 3.11 installation with Evoke 1.6. Your path and commands may differ slightly.

Check that the Python module installed correctly

Check that the following modules have been installed:

To test that the Evoke Python module installed correctly, try importing one of the modules in Python:

>>> import vicon_core_api

If the above process fails to recognize the module, try the following:

If either of the modules folders is missing, and you have verified the path, re-run through the installation process described in Installing the evoke Python module.

Connect to the terminal server

To connect to the terminal server, first import the Vicon Core API module:

>>> import vicon_core_api
>>> from vicon_core_api import *

Next, create a client. This automatically tries to connect to the specific host address on the default port (52800)

>>> c = Client('localhost')

Check that the client successfully connected to the server:

>>> print(c.connected)
True


If the response is False, ensure that you have an instance of Evoke running at the specified host address and your firewall is not blocking traffic on port 52800, before creating a new client.

When you have successfully connected, you can access the services provided by the Evoke terminal server.

This example uses basic object services:

>>> import evoke_api
>>> from evoke_api import BasicObjectServices
>>> services = BasicObjectServices(c)


When it is connected, you can call methods on the Evoke instance.

For example, to get a list of objects in the Tracking panel, use:

>>> result, object_list = services.basic_object_list()
>>> print(result)
Ok: the function succeeded
>>> print(object_list)
['Object1', 'Object2'...]

All API calls return a result code, which are described in vicon_core_api/result.py. One possible failure code is Result.RPCNotConnected, which is received if the connection to the terminal server is lost. For example:

>>> result, object_list = services.basic_object_list() 
...
vicon_core_api.client.RPCError: RPCNotConnected: The connection to the remote function or callback is not open


To display a list of all available functions and documentation:

>>> help( evoke_api)

Example scripts

You can find example scripts showing the use of common API functions at:

C:\Program Files\Vicon\Evoke1.#\SDK\Python\sample_scripts

All the scripts have documentation and take a --help option that gives details of the relevant arguments.

To run a sample script, open a command window or power shell in the scripts folder above. You can do this in one of these ways:

or

From here you can run the example script of your choice.

The following examples use the command window.

camera_calibration_wave.py

This script demonstrates how to use API functions to control the calibration process of starting and stopping the wand wave.

C:\Program Files\Vicon\Evoke1.#\SDK\Python\sample_scripts> py camera_calibration_wave.py

If successful, calibration controls are displayed.

capture_control.py

This script shows how to capture live data.

C:\Program Files\Vicon\Evoke1.#\SDK\Python\sample_scripts> py capture_control.py

The Capture name is listed before the controls. To change the capture name, use capture_services and SetCaptureName.

For questions on using the Evoke API, contact Vicon Support.

Headless operation

Evoke may be operated entirely via API, in which case it may be advantageous to run without the Graphical User Interface (GUI). A separate executable is provided for this purpose:

C:\Program Files\Vicon\Evoke1.#\EvokeHeadless.exe

Headless operation may be more suitable for running Evoke as a service, and additionally benefits from slightly lower CPU usage without the overhead of running a GUI.

System and tracking setup must normally be completed with the GUI, as some setup functionality is not yet available via the API.

For more information, see Evoke Headless in the Vicon Evoke Reference Guide.