def __init__(self): """ :param host: локальный хост севера Telnet :param telnet_username: имя пользователя на сервере :param telnet_password: пароль пользователя :param moving_speed: начальная скорость перемещения по всем осям. """ self.tx = 0 self.ty = 0 self.tz = 0 self.current_position = Point(0, 0, 0) self.program_zero = Point(0, 0, 0) print("Manipulator initialisation") self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.connect(("127.0.0.1", 9105)) sleep(1) t = self.socket.recv(4096) sleep(1) self.socket.sendall(b"as\n") sleep(1) t = self.socket.recv(4096) sleep(1) print("logged: " + t.decode("utf-8")) sleep(1) self.socket.sendall(b"ZPOW ON\n") sleep(1) t = self.socket.recv(4096) sleep(1)
def __init__(self, host: str, telnet_username: str, telnet_password: str): """ :param host: локальный хост севера Telnet :param telnet_username: имя пользователя на сервере :param telnet_password: пароль пользователя :param moving_speed: начальная скорость перемещения по всем осям. """ self.__host = host self.__user_name = telnet_username self.__password = telnet_password self.current_position = Point(0, 0, 0) self.program_zero = Point(0, 0, 0) print("Manipulator initialisation")
def set_zero(self): """ Аппаратная установка точки начала отсчета """ # something to set zero position on manipulator self.current_position = Point(0, 0, 0) print("Set zero.")
def set_length(self, new_len: float or int) -> None: """ Устанавливает новую длинну вектора, сохраняя направление вектора. Не изменяет положение начальной точки!!! :param new_len: новая длина вектора. """ rad = self.radius_vector() cof = new_len / self.length() rad *= cof if (rad.z is not None): vec = Vector(Point(0, 0, 0), rad) else: vec = Vector(Point(0, 0), rad) vec.move_to_point(self.start_point) # self.start_point *= cof self.end_point = vec.end_point
def __init__(self, point1: Point or Iterable, point2: Point or Iterable = None): """ Создает вектор плоскости. Если дана только одна точка, то вектор счетается радиус-вектором(начало в (0,0)). :param point1: Точка начала вектора относительно С.О. :param point2: Точка конца вектора относительно С.О. """ point1 = Point.check_Point(point1) if type(point2) is None: if point1.z is None: self.start_point: Point = Point(0, 0) else: self.start_point: Point = Point(0, 0, 0) self.end_point: Point = point1 else: point2 = Point.check_Point(point2) if (point1.z is None and point2.z is None) or (point1.z is not None and point2.z is not None): self.start_point: Point = point1 self.end_point: Point = point2 else: raise TypeError("Flat and 3D points used in one Vector obj.")
def get_current_position(self): """ получить текущую позицию """ self.socket.sendall(b"point a = here\n") sleep(1) t = self.socket.recv(4096) input_data = (t.decode().split()) x = input_data[10] y = input_data[11] z = input_data[12] self.x = x self.y = y self.z = z self.tx = input_data[13] self.ty = input_data[14] self.tz = input_data[15] print(self.x, self.y, self.z, self.tx, self.ty, self.tz) return Point(x, y, z)
summ_y = 0 for p in points: summ_x += int(p[0]) summ_y += int(p[1]) return summ_x / len(points), summ_y / len(points) # Find zero and constants while not find_zero_flag: ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) corners, ids, rejectedImgPoints = aruco.detectMarkers(gray, aruco_dict, parameters=parameters) x_vector = None y_vector = None move_vector = None frame_center = Point(frame.shape[1] / 2, frame.shape[0] / 2) if ids is not None: ids_dict = {} ids_middle = {} for i in range(ids.size): ids_dict[int(ids[i][0])] = corners[i][0] ids_middle[int(ids[i][0])] = find_middle(corners[i][0]) strg = '' for i in range(0, ids.size): strg += str(ids[i][0]) + ', ' _id = ids[i][0] if _id in zero_ids: if _id == 0: mid_zero = ids_middle[ids[i][0]] ADAPTIVE_CONSTANT = Zero_marker0.size / \
for p in points: summ_x += int(p[0]) summ_y += int(p[1]) return summ_x / len(points), summ_y / len(points) # Find zero and constants while not find_zero_flag: ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) corners, ids, rejectedImgPoints = aruco.detectMarkers( gray, aruco_dict, parameters=parameters) x_vector = None y_vector = None move_vector = None frame_center = Point(frame.shape[1] / 2, frame.shape[0] / 2) if ids is not None: ids_dict = {} ids_middle = {} for i in range(ids.size): ids_dict[int(ids[i][0])] = corners[i][0] ids_middle[int(ids[i][0])] = find_middle(corners[i][0]) strg = '' for i in range(0, ids.size): strg += str(ids[i][0]) + ', ' _id = ids[i][0] if _id in zero_ids: if _id == 0: mid_zero = ids_middle[ids[i][0]] ADAPTIVE_CONSTANT = Zero_marker0.size / \