Загрузка данных


import time
import pymurapi as mur

auv = mur.mur_init()

def clamp(v, lo=-100, hi=100):
    return max(lo, min(hi, v))

def angle_diff(target, current):
    d = target - current
    while d > 180:  d -= 360
    while d < -180: d += 360
    return d

KP_DEPTH = 80
KP_YAW = 0.6

def hold(depth, yaw, forward=0, duration=3):
    t0 = time.time()
    while time.time() - t0 < duration:
        # вертикальные моторы (2, 3)
        u_z = clamp(KP_DEPTH * (depth - auv.get_depth()))
        auv.set_motor_power(2, u_z)
        auv.set_motor_power(3, u_z)
        # горизонтальные моторы (0, 1)
        u_yaw = clamp(KP_YAW * angle_diff(yaw, auv.get_yaw()))
        auv.set_motor_power(0, clamp(forward - u_yaw))
        auv.set_motor_power(1, clamp(forward + u_yaw))
        time.sleep(0.05)

yaw0 = auv.get_yaw()
hold(1.5, yaw0, duration=4)                 # погружение
hold(1.5, yaw0 + 90, duration=4)            # поворот
hold(1.5, yaw0 + 90, forward=40, duration=6)