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):
This trace shows two commands sent to the server as JSON-encoded strings, in the format
Terminal.AppInfoThis is a built-in Vicon Core API command that returns the current application information.
ApplicationServices.ShutdownThis is an Evoke API command that safely closes down the application, releasing all resources and writing settings files as required.
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.
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:
- Application services – System file management, license information and application shutdown
- Basic object services – Management of basic objects
- Camera calibration services – Camera calibration operations and file management
- Camera device services – Camera information, monitoring and control
- Capture services – Data capture and control
- Character from clusters services – Management of characters from clusters
- Cluster device services – Smart cluster device information, monitoring and control
- Log services – Logging control
- Object evaluation services – Control of object evaluation (for basic and smart objects)
- Playback services – Data review and playback control
- Radio device services – Radio device information, monitoring and control
- Selection services – Selection and deselection of all device types
- Smart object services – Management of smart objects
- Subject services – Import and export of basic objects and overall tracking configuration
- System health services – Monitoring of system and camera calibration health
View services – View file management
Client libraries are supplied for C# and Python, located by default at:
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
- Installing Python
- Installing the Evoke Python module
- Check that the Python module installed correctly
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:
If you do not have Python installed, see Install Python.
To install Python 2 or 3:
- Go to https://www.python.org/downloads/
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:
Locate the installation files. If you installed Evoke in the default location, they are found in this folder:
These folders and files are displayed:
- Install the Evoke Python module in either of the following ways, depending on your particular installation:
The simplest way is to run the batch file (install_evoke_api.bat) that is included in the Evoke installation (as shown in the previous image). This usually works well if:
Python was installed to the PATH variable; or
Multiple versions of Python are installed, but you want to install the API to the latest version that you installed; or
Only a single version of Python is installed.
If any of these conditions apply, see Install the python module by running the batch file.
In all other cases, install the Python module by using pip. This usually applies if:
Multiple versions of Python are installed, but you want to install to a specific version; or
Multiple different versions of Python are installed and you want to install to all of them (in this case, you must install the module for each version); or
- Only a single version of Python is installed, but you didn't install to PATH.
If any of these conditions apply, see Install the Python module by running pip.
Install the Python module by running the batch file
To do this:
Navigate to the Python install folder:
The installation process initializes automatically.
Install the Python module by running pip
- Navigate to the Scripts folder for the Python that you want to use:
- For Python 3, the default installation folder is:
- For Python 2.7, the default installation folder is:
- For Python 3, the default installation folder is:
- Open a command window or powershell in that folder.
Run the following command to install the Vicon Core API:
Run the following command to install the Evoke API:
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:
- vicon_core_api: This is the core remote control API and includes a client for communication with the terminal server.
- evoke_api: Services API for accessing evoke specific application functionality.
To test that the Evoke Python module installed correctly, try importing one of the modules in Python:
If the above process fails to recognize the module, try the following:
- Check the site-packages folder in the Python installation for the evoke_api or vicon_core_api folder. For Python 3.11, the location of the default installation folder is:
- Check your system environment variables and ensure that the scripts folder for the Python installation you want to use is the highest in the list. For Python 3.11, the default location of the installation folder is:
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:
Next, create a client. This automatically tries to connect to the specific host address on the default port (52800)
Check that the client successfully connected to the server:
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:
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:
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:
To display a list of all available functions and documentation:
You can find example scripts showing the use of common API functions at:
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:
Open the command prompt and change your directory to the scripts folder:
c:\> cd C:\Program Files\Vicon\Evoke1.#\SDK\Python\sample_scripts
- SHIFT+right-click in the scripts folder and select Open command window here or Open Powershell window here.
From here you can run the example script of your choice.
The following examples use the command window.
This script demonstrates how to use API functions to control the calibration process of starting and stopping the wand wave.
If successful, calibration controls are displayed.
This script shows how to capture live data.
The Capture name is listed before the controls. To change the capture name, use
For questions on using the Evoke API, contact Vicon Support.
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:
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.