EyeTrackerでgaze dataを取得する

gaze dataの取得もProライセンスがないとできない?

サンプルプログラム

def myGetGazeData(eyetracker):
    global global_gaze_data
    
    print("Subscribing to gaze data for eye tracker with serial number {0}.".format(eyetracker.serial_number))
    eyetracker.subscribe_to(tr.EYETRACKER_GAZE_DATA, gaze_data_callback, as_dictionary=True)

    # Wait while some gaze data is collected.
    time.sleep(2)

    eyetracker.unsubscribe_from(tr.EYETRACKER_GAZE_DATA, gaze_data_callback)
    print("Unsubscribed from gaze data.")
    
    print("Last received gaze package:")
    print(global_gaze_data)
        
        
def gaze_data_callback(gaze_data):
    global global_gaze_data
    global_gaze_data = gaze_data

メモ

global_gaze_dataには以下のようなデータが格納される(ただしas_dictionary=Trueの場合)

{'right_pupil_validity': 1, 'right_gaze_point_on_display_area': (-0.03804759308695793, -0.001516682212240994), 'left_gaze_origin_validity': 1, 'system_time_stamp': 83366461989L, 'right_gaze_origin_in_user_coordinate_system': (10.435709953308105, -17.863492965698242, 490.8170471191406), 'left_gaze_point_in_user_coordinate_system': (-225.17933654785156, 239.3080596923828, 79.05516815185547), 'left_gaze_origin_in_user_coordinate_system': (-53.26900863647461, -21.059024810791016, 488.1297912597656), 'left_pupil_validity': 1, 'right_pupil_diameter': 2.851318359375, 'left_gaze_origin_in_trackbox_coordinate_system': (0.6585485339164734, 0.5946857929229736, 0.18295831978321075), 'right_gaze_point_in_user_coordinate_system': (-253.1724395751953, 272.1340637207031, 91.00283813476562), 'left_pupil_diameter': 2.85693359375, 'right_gaze_origin_validity': 1, 'left_gaze_point_validity': 1, 'right_gaze_point_validity': 1, 'left_gaze_point_on_display_area': (0.020004242658615112, 0.12727093696594238), 'right_gaze_origin_in_trackbox_coordinate_system': (0.47324785590171814, 0.5821692943572998, 0.1825057417154312), 'device_time_stamp': 5289917103L}

個々の値をとるには、

globl_gaze_data['right_gaze_point_on_display_area'] #右目のディスプレイ上の注視点

のように指定すればよい。

as_dictionary=Falseの場合は、GazeDataクラスのインスタンスが格納されるので、以下のように指定する。

global_gaze_data.right_eye.gaze_point.position_on_display_area
# GazeData, EyeData, GazePointクラスのリファレンスを参照のこと。