7
7
8
8
from coderbot import CoderBot
9
9
from camera import Camera
10
+ from config import Config
10
11
11
12
lk_params = dict ( winSize = (15 , 15 ),
12
13
maxLevel = 2 ,
17
18
minDistance = 7 ,
18
19
blockSize = 7 )
19
20
21
+
20
22
PI_CAM_FOV_H_DEG = 53.0
21
23
PI_CAM_FOV_V_CM = 100.0
22
24
IMAGE_WIDTH = 160.0
@@ -38,6 +40,8 @@ def __init__(self):
38
40
self .target_dist = 0.0
39
41
self .delta_angle = 0.0
40
42
self .target_angle = 0.0
43
+ cfg = Config .get ()
44
+ self .power_angles = [[15 , (int (cfg .get ("move_power_angle_1" )), - 1 )], [4 , (int (cfg .get ("move_power_angle_2" )), 0.05 )], [1 , (int (cfg .get ("move_power_angle_3" )), 0.02 )], [0 , (0 , 0 )]]
41
45
42
46
_motion = None
43
47
@@ -80,10 +84,6 @@ def loop_move(self):
80
84
self .frame_idx += 1
81
85
self .prev_gray = self .frame_gray
82
86
83
- ch = 0xFF & cv2 .waitKey (1 )
84
- if ch == 27 :
85
- self .bot .stop ()
86
- done = True
87
87
88
88
def loop_turn (self ):
89
89
done = False
@@ -104,11 +104,7 @@ def loop_turn(self):
104
104
self .frame_idx += 1
105
105
self .prev_gray = self .frame_gray
106
106
107
- ch = 0xFF & cv2 .waitKey (1 )
108
- if ch == 27 :
109
- self .bot .stop ()
110
- done = True
111
-
107
+ self .bot .stop ()
112
108
113
109
def find_keypoints (self , image_gray , tracks ):
114
110
#print "find_keypoints"
@@ -192,13 +188,12 @@ def calc_motion(self):
192
188
return self .delta_angle , self .delta_dist
193
189
194
190
def bot_turn (self , target_angle , delta_angle ):
195
- power_angles = [[15 , (40 , - 1 )], [4 , (80 , 0.05 )], [1 , (80 ,0.02 )], [0 , (0 , 0 )]]
196
191
done = False
197
192
sign = (target_angle - delta_angle ) / abs (target_angle - delta_angle )
198
- logging .info ( "abs delta: " + abs (target_angle - delta_angle ) + " sign delta: " + sign )
199
- for p_a in power_angles :
193
+ logging .info ( "abs delta: " + str ( abs (target_angle - delta_angle )) + " sign delta: " + str ( sign ) )
194
+ for p_a in self . power_angles :
200
195
if abs (target_angle - delta_angle ) > p_a [0 ]:
201
- print "pow: " , p_a [1 ][0 ], " duration: " , p_a [1 ][1 ]
196
+ # print "pow: ", p_a[1][0], " duration: ", p_a[1][1]
202
197
self .bot .motor_control (sign * p_a [1 ][0 ], - 1 * sign * p_a [1 ][0 ], p_a [1 ][1 ])
203
198
done = p_a [1 ][0 ] == 0 #stopped
204
199
break
@@ -207,9 +202,9 @@ def bot_turn(self, target_angle, delta_angle):
207
202
208
203
def bot_move (self , target_dist , delta_dist , delta_angle ):
209
204
base_power = 100 * (target_dist / abs (target_dist ))
210
- logging .info ("base power" + base_power )
205
+ logging .info ("base power" + str ( base_power ) )
211
206
self .delta_power += (delta_angle * 0.01 )
212
- logging .info ( "delta power: " + self .delta_power )
207
+ logging .info ( "delta power: " + str ( self .delta_power ) )
213
208
if abs (delta_dist ) < abs (target_dist ):
214
209
self .bot .motor_control (min (max (base_power - self .delta_power ,- 100 ),100 ), min (max (base_power + self .delta_power ,- 100 ),100 ), - 1 )
215
210
else :
0 commit comments