Hello everyone, I am having an issue with my code for processing gaze data using Pupil Labs. I am using gaze_mapper.process_frame(frame, gaze), but result is empty. Here is the relevant section of my code: import numpy as np import array import json import asyncio import nest_asyncio from pylsl import StreamInfo, StreamOutlet from pupil_labs.real_time_screen_gaze import marker_generator from pupil_labs.realtime_api.simple import discover_one_device from pupil_labs.real_time_screen_gaze.gaze_mapper import GazeMapper # Define markers #marker_pixels = marker_generator.generate_marker(marker_id=np.arange(15)) # Marker coordinates marker_verts = { 0: [(66, 66), (130, 66), (130, 130), (66, 130)], 1: [(66, 303), (130, 303), (130, 367), (66, 367)], 2: [(66, 540), (130, 540), (130, 604), (66, 604)], 3: [(66, 777), (130, 777), (130, 841), (66, 841)], 4: [(66, 1014), (130, 1014), (130, 1078), (66, 1078)], 5: [(513, 66), (577, 66), (577, 130), (513, 130)], 6: [(960, 66), (1024, 66), (1024, 130), (960, 130)], 7: [(1407, 66), (1471, 66), (1471, 130), (1407, 130)], 8: [(513, 1014), (577, 1014), (577, 1078), (513, 1078)], 9: [(960, 1014), (1024, 1014), (1024, 1078), (960, 1078)], 10: [(1407, 1014), (1471, 1014), (1471, 1078), (1407, 1078)], 11: [(1858, 66), (1922, 66), (1922, 130), (1858, 130)], 12: [(1858, 303), (1922, 303), (1922, 367), (1858, 367)], 13: [(1858, 540), (1922, 540), (1922, 604), (1858, 604)], 14: [(1858, 777), (1922, 777), (1922, 841), (1858, 841)], 15: [(1858, 1014), (1922, 1014), (1922, 1078), (1858, 1078)], } # Screen size screen_size = (1920, 1080) def run_in_executor(loop, func, *args): return loop.run_in_executor(None, func, *args) async def discover_device(): loop = asyncio.get_running_loop() device = await run_in_executor(loop, discover_one_device) return device async def main(): # Discover and calibrate device device = discover_one_device(max_search_duration_seconds=12) # instead of await discover_device() calibration = device.get_calibration() gaze_mapper = GazeMapper(calibration) # Add screen surface screen_surface = gaze_mapper.add_surface(marker_verts, screen_size) # Set up LSL stream info = StreamInfo('Gaze', 'Gaze', 2, 100, 'float32', 'myuid34234') outlet = StreamOutlet(info) print('outlet') print(outlet) # Main loop while True: frame, gaze = device.receive_matched_scene_video_frame_and_gaze() print('frame') print(frame) print('gaze') print(gaze) result = gaze_mapper.process_frame(frame, gaze) # Error: result is empty print('result') print(result) for surface_gaze in result.mapped_gaze[screen_surface.uid]: print('GAZE COORDINATES') gaze_coordinates = [surface_gaze.x, surface_gaze.y] outlet.push_sample(gaze_coordinates) print(f"Gaze at {surface_gaze.x}, {surface_gaze.y}") # Adjust and run event loop nest_asyncio.apply() asyncio.get_event_loop().run_until_complete(main()) Thank you in advance!