"""TODO: Add docstring.""" import json import os import time import numpy as np import pyarrow as pa from dora import Node node = Node() IMAGE_RESIZE_RATIO = float(os.getenv("IMAGE_RESIZE_RATIO", "1.0")) arrive_time = time.time() for event in node: if event["type"] == "INPUT": text = event["value"][0].as_py() width = event["metadata"]["width"] height = event["metadata"]["height"] values = event["value"].to_numpy().reshape((-1, 2)) values = values * int(1 / IMAGE_RESIZE_RATIO) # Do point 0 first if len(values) == 0: continue elif len(values) > 1: point = values[-1] rz = int((width / 2) - point[0]) / (width / 2) x_distance = min(height, height - point[1]) y = 0 if abs(rz) > 0.75: rz = np.deg2rad(45) * np.sign(rz) elif abs(rz) > 0.5: rz = np.deg2rad(30) * np.sign(rz) elif abs(rz) > 0.3: rz = np.deg2rad(20) * np.sign(rz) elif abs(rz) > 0.1: rz = np.deg2rad(10) * np.sign(rz) else: x = 0 if x_distance > (height * 0.7): x = 0.7 elif x_distance > (height * 0.5): x = 0.6 elif x_distance > (height * 0.25): x = 0.5 else: x = 0 if x_distance < (height * 0.25): print("ARRIVED!") time.sleep(1.0) if time.time() - arrive_time > 4.0: node.send_output("arrived", pa.array([])) arrive_time = time.time() # Action action = pa.array([x, y, 0, 0, 0, rz]) node.send_output("action", action)