Source code for mphy0026.factory.tracker_factory

# -*- coding: utf-8 -*-

""" Module for tracker factory methods. """

import sksurgeryarucotracker.arucotracker as at
import sksurgerynditracker.nditracker as nt


[docs] def create_tracker(tracker_type, pointer, reference): """ Logic for creating a tracker. This logic is rather specific to these tutorials. So, currently, pointer is mandatory, reference is optional. :param tracker_type: string, must be one of [vega|aurora|aruco] :param pointer: .rom file, port number or ArUco tag number for pointer :param reference: .rom file, port number or ArUco tag number for reference :return: tracker object """ if not tracker_type: raise ValueError("Tracker type must be specified") if tracker_type not in ('vega', 'aurora', 'aruco'): raise ValueError("Tracker type must be [vega|aurora|aruco]") if not pointer: raise ValueError("Pointer must be specified") tracker = None if tracker_type == 'aruco': tracker = at.ArUcoTracker({}) tracker.start_tracking() else: tracker_config = {} tracker_config['tracker type'] = tracker_type tracker_config['use quaternions'] = False if tracker_type == 'vega': tracker_config['ip address'] = '169.254.59.34' tracker_config['port'] = 8765 config_name = 'romfiles' if tracker_type == 'aurora': config_name = 'ports to use' things_to_track = [] things_to_track.append(pointer) if reference is not None: things_to_track.append(reference) tracker_config[config_name] = things_to_track print("Initialising NDI Tracker with:" + str(tracker_config)) tracker = nt.NDITracker(tracker_config) tracker.start_tracking() if tracker is None: raise ValueError("Failed to instantiate tracker") return tracker