API 接口目录
Xvisio SDK 文档主页

Eye Calibrate眼动校准接口


1. 设置眼动配置文件路径

public static extern void xslam_gaze_set_config_path(string coe_path);

Input:

coe_path 配置文件路径,支持自定义,默认路径为"/data/misc/xr/"

2. 开启眼动

public static extern bool xslam_start_gaze();
返回值:
true-成功
false-失败

3. 设置眼动曝光增益

public static extern bool xslam_set_exposure(int leftGain, float leftTimeMs, int rightGain, float rightTimeMs);
返回值:
true-成功
false-失败

Input:

leftGain 左眼增益,建议为10
leftTimeMs 左眼曝光时间,建议为6
rightGain 右眼增益,建议为10
rightTimeMs 右眼曝光时间,建议为6

4. 设置眼动led亮度

public static extern bool xslam_set_bright(int eye, int led, int brightness);
返回值:
true-成功
false-失败

注意:停用眼动功能时,需要关闭led,即设置brightness为0:
xslam_set_bright(2, 8, 0);

Input:

eye 0-左眼,1-右眼,2-both左右眼
led led灯
brightness 亮度

5. 设置眼动回调

public static extern int xslam_set_gaze_callback(fn_gaze_callback cb);
返回值:
0-成功
-1-失败

fn_gaze_callback定义:
public delegate void fn_gaze_callback(XV_ET_EYE_DATA_EX gazedata);

Output:
XV_ET_EYE_DATA_EX gazedata;

XV_ET_EYE_DATA_EX结构体:

public struct XV_ET_EYE_DATA_EX
{
    public ulong timestamp;   //时间戳
    public int recommend;    //是否存在推荐的注视点 0-无推荐注视点, 1-使用左眼作为推荐注视点, 2-使用右眼作为推荐注视点
    public XV_ET_GAZE_POINT recomGaze; //推荐注视点的数据
    public XV_ET_GAZE_POINT leftGaze;  //左眼注视点的数据
    public XV_ET_GAZE_POINT rightGaze; //右眼注视点的数据

    public XV_ET_PUPIL_INFO leftPupil;  //左眼瞳孔数据
    public XV_ET_PUPIL_INFO rightPupil; //右眼瞳孔数据

    public int leftEyeMove;//0-没有检测到左眼移动. 1-左眼状态为眨眼. 2-左眼状态正常    
    public int rightEyeMove;//0-没有检测到右眼移动. 1-右眼状态为眨眼. 2-右眼状态正常
    public float ipd; //瞳距数据,在眼动校准后数据才会更新
};

XV_ET_GAZE_POINT结构体:
public struct XV_ET_GAZE_POINT
{
    public XV_ETPoint3D gazePoint;     //注视点坐标
    public XV_ETPoint3D gazeOrigin;    //注视点中心
    public XV_ETPoint3D gazeDirection; //注视点方向
    public float re;                   //注视点置信度
    
};

XV_ET_PUPIL_INFO结构体:
public struct XV_ET_PUPIL_INFO
{
    public xv_ETPoint2D pupilCenter; //瞳孔数值(0-1),归一化数据!
};

XV_ETPoint3D结构体:
public struct XV_ETPoint3D
{
    public float x;
    public float y;
    public float z;
}

6. 进入校准模式

public static extern void xslam_gaze_calibration_enter();

7. 收集校准数据

public static extern int xslam_gaze_calibration_collect(float x, float y, float z, int index);
返回值:
0-成功
-1-失败

注意:校准平面上预设5个校准点位(中心、左下角、右下角、右上角、左上角)
调用此接口的最佳实践为每帧调用该接口,依次将5个校准点坐标作为参数传入接口
每个校准点需要调用该接口100次 或 接口返回值为0的情况达到5次,即可切换下一个校准点

Input:

x 校准点坐标的x值
y 校准点坐标的y值
z 校准点坐标的z值
index 校准点位的索引号

8. 校准流程设置

public static extern int xslam_gaze_calibration_setup();
返回值:
0-成功
-1-失败

9. 计算校准参数

public static extern int xslam_gaze_calibration_compute_apply();
返回值:
0-成功
-1-失败

10. 离开校准模式,校准流程完成

public static extern int xslam_gaze_calibration_leave();

11. 获取校准结果数据并存储为自定义文件

public static extern int xslam_gaze_calibration_retrieve(string file);
返回值:
0-成功
-1-失败

可以通过该接口返回值来判断是否校准成功

Input:

file 自定义校准文件地址,举例:"/data/misc/xr/XVETcaliData.dat"

12. 反注册眼动回调

public static extern bool xslam_unset_gaze_callback();
返回值:
true-成功
false-失败

13. 停止眼动

public static extern bool xslam_stop_gaze();
返回值:
true-成功
false-失败

API 接口目录
Xvisio SDK 文档主页