-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTest.test
More file actions
138 lines (135 loc) · 4.05 KB
/
Test.test
File metadata and controls
138 lines (135 loc) · 4.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import pymurapi as mur
import time
from time import sleep
auv=mur.mur_init()
prev_time_depth=1
prev_error_depth=1
prev_error_yaw=1
prev_time_yaw=1
target_yaw=1
target_depth = 3
ierror_yaw = 0
ik_yaw=0
#def check_yaw(yaw):
def modernizing_yaw(yaw):
if yaw<0:
yaw = 180-yaw
return yaw
def sr_skol():
global target_yaw
now_yaw=0
counter=0
for counter in range(7):
now_yaw = now_yaw+auv.get_yaw()
return abs(now_yaw/7-target_yaw)<2
def start_move():
start_depth()
start_yaw()
def start_depth():
curent_time = int(round(time.time()*1000))
global target_depth
global prev_time_depth
global prev_error_depth
error = auv.get_depth()-target_depth
dif = 0
if(curent_time-prev_time_depth!=0 and error - prev_error_depth!=0 ):
dif = 5/((curent_time-prev_time_depth)*(error - prev_error_depth))
power_value = error*50+dif*60
power_1 =int(power_value)
power_2 =int(power_value)
if(power_value > 100):
power_value =100
if(power_value <0):
power_value =0
auv.set_motor_power(2,(power_1))
auv.set_motor_power(3,(power_2))
prev_time_depth = curent_time
prev_error_depth = error
def start_yaw():
global ierror_yaw
ik_yaw=0.00001
global spd_yaw
global prev_error_yaw
global target_yaw
global prev_time_yaw
curent_time = int(round(time.time()*1000))
error = auv.get_yaw()-target_yaw
if(error>0):
ierror_yaw=ierror_yaw+1
if(error<0):
ierror_yaw=ierror_yaw-1
dif=0
print(error)
if(error<-200):
error = 1
if((curent_time-prev_time_yaw)*(error - prev_error_yaw)!=0):
dif = 3/(curent_time-prev_time_yaw)*(error - prev_error_yaw)
# if(dif!=0):
#print(dif)
#print(prev_error_yaw)
power_value = error*0.3+dif*60+ierror_yaw*ik_yaw
power_1 =int(power_value)
power_2 =int(power_value)
if(power_value > 20):
power_value =20
if(power_value <0):
power_value =0
auv.set_motor_power(0,(spd_yaw-power_1))
auv.set_motor_power(1,(spd_yaw+power_2))
prev_time_yaw = curent_time
prev_error_yaw = error
def set_course(yaw,depth,spd_yaw_target):
global spd_yaw
spd_yaw = spd_yaw_target
global target_depth
target_depth = depth
global target_yaw
target_yaw = yaw
def Akustic_angle(number):
buff = auv.get_pinger_data(number)
return buff[0]
def Akustic_range(number):
buff = auv.get_pinger_data(number)
return buff[1]
mission=0
counter = 0
class Akustic(object):
def __init__(self,angle,range):
self.angle=angle
self.range=range
while True:
#print(-Akustic_1.angle+old_yaw)
auv.set_on_delay(1000)
auv.set_rgb_color(0, 0, 255)
global target_yaw
#sleep(01)
global mission
global counter
#print(mission)
if(Akustic_angle(1)+Akustic_angle(0)+Akustic_angle(2)+Akustic_angle(3)!=0 and mission ==0):
Akustik_0=Akustic(Akustic_angle(0),Akustic_range(0))
Akustik_1=Akustic(Akustic_angle(1),Akustic_range(1))
Akustik_2=Akustic(Akustic_angle(2),Akustic_range(2))
Akustik_3=Akustic(Akustic_angle(3),Akustic_range(3))
mission=1
if(mission==1):
#print(Akustik_1.angle)
#print(1)
set_course(Akustik_0.angle,1.7,20*sr_skol())
start_move()
old_angle = auv.get_yaw()
#print(Akustic_angle(1))
if((Akustic_range(0)-2.1)<0 and mission ==1):
mission = 2
#print(mission)
#auv.drop()
old_yaw = auv.get_yaw()
#print(Akustik_1.angle)
Akustik_0=Akustic(Akustic_angle(0),Akustic_range(0))
Akustik_1=Akustic(Akustic_angle(1),Akustic_range(1))
Akustik_2=Akustic(Akustic_angle(2),Akustic_range(2))
Akustik_3=Akustic(Akustic_angle(3),Akustic_range(3))
if(mission == 2):
#print(modernizing_yaw(old_yaw)+Akustik_1.angle)
set_course(modernizing_yaw(old_yaw)+Akustik_1.angle,1.7,20*sr_skol())
start_move()