def ctrl_z(self): print '\n< < < CTRL-Z MODE ACTIVATED! > > >' last_dir = dir_log[-1] # Forward -> Reverse if last_dir == 'Forward': car.reverse(200) car.pause(500) print '< REVERSE >' # Left -> Reverse-Left elif last_dir == 'Left': car.left(300) car.reverse_left(250) car.left(700) car.pause(500) print '< REVERSE-LEFT >' # Right -> Reverse-Right elif last_dir == 'Right': car.right(300) car.reverse_right(250) car.right(700) car.pause(500) print '< REVERSE-RIGHT >' return
def steer(self, prediction): # FORWARD if np.all(prediction == [0., 0., 1.]): car.forward(100) car.pause(300) dir_log.append('Forward') print 'Forward' # FORWARD-LEFT elif np.all(prediction == [1., 0., 0.]): car.left(300) car.forward_left(200) car.left(700) car.pause(200) dir_log.append('Left') print 'Left' # FORWARD-RIGHT elif np.all(prediction == [0., 1., 0.]): car.right(300) car.forward_right(200) car.right(700) car.pause(200) dir_log.append('Right') print 'Right'
def make_decision(self): # Calculate the percent_difference to decide whether to act on 'difference' print 'make_decision1' calc_difference = np.sum(self.difference) max_difference = np.sum(255 * self.difference.shape) percent_difference = float(calc_difference) / max_difference print 'make_decision2' # If percent_difference is below ctrlz_thresh (i.e. the two images are < 5% different), then commence ctrl-z protocol. if percent_difference <= self.ctrlz_thresh: # Activate ctrl-z mode print '< < < CTRL-Z MODE ACTIVATED! > > >' # Get the last 10 directions executed from the log (or however many you specified for self.ctrlz_iter) recent_dirs = dir_log[-self.ctrlz_iter:] recent_dirs_reversed = recent_dirs.reverse() for each in recent_dirs_reversed: # Forward -> Reverse if each == 'Forward': car.reverse(100) car.pause(300) print '< REVERSE >' # Left -> Right elif each == 'Left': car.right(300) car.reverse_right(200) car.right(700) car.pause(200) print '< REVERSE-RIGHT >' # FORWARD-RIGHT elif each == 'Right': car.left(300) car.reverse_left(200) car.left(700) car.pause(200) print '< REVERSE-LEFT >'
def steer(self): while self.send_inst: for event in pygame.event.get(): if event.type == KEYDOWN: key_input = pygame.key.get_pressed() if key_input[pygame.K_UP]: car.forward(self.duration) elif key_input[pygame.K_DOWN]: car.reverse(self.duration) elif key_input[pygame.K_RIGHT]: car.forward_right(self.duration) car.right(700) elif key_input[pygame.K_LEFT]: car.forward_left(self.duration) car.left(700) # These combination key press events don't work for some reason... elif key_input[pygame.K_DOWN] and key_input[ pygame.K_RIGHT]: car.reverse_right(self.duration) car.right(700) elif key_input[pygame.K_DOWN] and key_input[pygame.K_LEFT]: car.reverse_left(self.duration) car.left(700) # exit elif key_input[pygame.K_x] or key_input[pygame.K_q]: print 'Exit' self.send_inst = False # self.ser.write('00000000\n') # self.ser.close() break
def steer(self, prediction): # FORWARD if np.all(prediction == [0., 0., 1.]): car.forward(100) car.pause(500) print("Forward") # FORWARD-LEFT elif np.all(prediction == [1., 0., 0.]): car.left(300) car.forward_left(200) car.left(700) car.pause(500) print("Left") # FORWARD-RIGHT elif np.all(prediction == [0., 1., 0.]): car.right(300) car.forward_right(200) car.right(700) car.pause(500) print("Right")
import car car.forward_right(1000) car.pause(1000) car.forward_left(1000) car.pause(1000) car.reverse_right(1000) car.pause(1000) car.reverse_left(1000) car.pause(1000) car.left(200) car.right(200) car.left(200) car.forward(100) car.pause(100) car.forward(100) car.pause(100) car.reverse(100) car.pause(100) car.reverse(100) car.pause(100) car.forward(100) car.pause(100) car.forward(100)
def collect_image(self): total_frame = 0 # collect images for training print 'Start collecting NEGATIVE images...' e1 = cv2.getTickCount() # stream video frames one by one try: stream_bytes = ' ' frame = 1 while self.send_inst: stream_bytes += self.connection.read(1024) first = stream_bytes.find( '\xff\xd8' ) # ? What is this string and where did it come from? last = stream_bytes.find('\xff\xd9') if first != -1 and last != -1: jpg = stream_bytes[first:last + 2] stream_bytes = stream_bytes[last + 2:] # image is a np matrix. image = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.IMREAD_GRAYSCALE) image_framecount = cv2.imdecode( np.fromstring(jpg, dtype=np.uint8), cv2.IMREAD_GRAYSCALE) # overlay click counts: cv2.putText(clicks_*) cv2.putText(image_framecount, "Total frames: {}".format(total_frame), (10, 30), cv2.FONT_HERSHEY_SIMPLEX, .45, (255, 255, 0), 1) # save streamed images cv2.imwrite( 'negative_images/frame{:>05}.jpg'.format(frame), image) # Display feeds on host (laptop) cv2.imshow('image', image) cv2.imshow('image_framecount', image_framecount) frame += 1 total_frame += 1 # get input from human driver for event in pygame.event.get(): if event.type == KEYDOWN: #''' 'KEYDOWN' : Does this just indicate when a key is pressed DOWN? ''' key_input = pygame.key.get_pressed() # FORWARD if key_input[pygame.K_UP]: car.forward(300) # FORWARD_RIGHT elif key_input[pygame.K_RIGHT]: car.right(300) car.forward_right(400) car.right(700) # FORWARD_LEFT elif key_input[pygame.K_LEFT]: car.left(300) car.forward_left(400) car.left(700) # REVERSE elif key_input[pygame.K_DOWN]: car.reverse(300) # Quit elif key_input[pygame.K_x] or key_input[ pygame.K_q]: print 'exit' self.send_inst = False break elif event.type == pygame.KEYUP: #'''Key is lifted UP?''' break e2 = cv2.getTickCount() # calculate streaming duration time0 = (e2 - e1) / cv2.getTickFrequency() print 'Streaming duration:', time0 print 'Total NEGATIVE frames collected:', total_frame finally: self.connection.close() self.server_socket.close print 'Connection closed' print 'Socket closed'
import urllib.request, json import car def direction(): with urllib.request.urlopen("http://192.168.1.100:3000/") as url: data = json.loads(url.read().decode()) return data['d'] #print(data['d']) check = 0 while(True): d = direction() if d == 'Forward': car.forward() print ('F') elif d == 'Backward': car.backward() print ('B') elif d == 'Right': car.right() print ('R') elif d == 'Left': car.left() print ('L') elif d == 'Stop': car.clean() input()
import car while True: car.forward(2000) car.pause(1000) print '' car.reverse(2000) car.pause(1000) print '' car.left(3000) car.pause(1000) print '' car.right(3000) car.pause(1000) print ''
def left(on): print "left: %s" % on if on: car.left() else: car.straight()
def collect_images(self): saved_frame = 0 total_frame = 0 clicks_forward = 0 clicks_forward_left = 0 clicks_forward_right = 0 print('Start collecting images...') label_array = np.zeros((1, 3), 'float') # Stream video frames one by one. try: stream_bytes = ' ' frame = 0 while self.send_inst: stream_bytes += self.connection.read(1024) first = stream_bytes.find( '\xff\xd8' ) # ? What is this string and where did it come from? last = stream_bytes.find('\xff\xd9') if first != -1 and last != -1: jpg = stream_bytes[first:last + 2] stream_bytes = stream_bytes[last + 2:] # 'image' (original, in grayscale) image = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), cv2.IMREAD_GRAYSCALE) # Overlay click counts: cv2.putText(clicks_*) clicks_total = clicks_forward + clicks_forward_left + clicks_forward_right cv2.putText( image, "FW: {}, LT: {}, RT: {}, TOTAL: {}".format( clicks_forward, clicks_forward_left, clicks_forward_right, clicks_total), (10, 30), cv2.FONT_HERSHEY_SIMPLEX, .45, (255, 255, 0), 1) # Display feeds on host (laptop) cv2.imshow('image', image) # Get input from human driver for event in pygame.event.get(): if event.type == KEYDOWN: key_input = pygame.key.get_pressed() # FORWARD if key_input[pygame.K_UP]: # save streamed images cv2.imwrite( 'training_images/frame{:>05}.jpg'.format( frame), image) label_array = np.vstack( (label_array, self.k[2])) # self.k[2] = [ 0., 0., 1.] car.forward(200) clicks_forward += 1 frame += 1 total_frame += 1 saved_frame += 1 # FORWARD_RIGHT elif key_input[pygame.K_RIGHT]: # save streamed images cv2.imwrite( 'training_images/frame{:>05}.jpg'.format( frame), image) label_array = np.vstack( (label_array, self.k[1])) # self.k[1] = [ 0., 1., 0.] car.right(300) car.forward_right(300) car.right(700) clicks_forward_right += 1 frame += 1 total_frame += 1 saved_frame += 1 # FORWARD_LEFT elif key_input[pygame.K_LEFT]: # save streamed images cv2.imwrite( 'training_images/frame{:>05}.jpg'.format( frame), image) label_array = np.vstack( (label_array, self.k[0])) # self.k[0] = [ 1., 0., 0.] car.left(300) car.forward_left(300) car.left(700) clicks_forward_left += 1 frame += 1 total_frame += 1 saved_frame += 1 # REVERSE; not saving images for this elif key_input[pygame.K_DOWN]: car.reverse(200) elif key_input[pygame.K_x] or key_input[ pygame.K_q]: print('EXIT') self.send_inst = False break elif event.type == pygame.KEYUP: #'''Key is lifted UP?''' break train_labels = label_array[1:, :] np.savez('training_images/label_array_ORIGINALS.npz', train_labels=train_labels) with open('./logs/log_img_collect.txt', 'a') as f: f.write('Date: ' + time.strftime('%x') + '\n') f.write('Time: ' + time.strftime('%X') + '\n') f.write('Total frames: ' + str(total_frame) + '\n') f.write('Saved frames: ' + str(saved_frame) + '\n') f.write('Dropped frames: ' + str(total_frame - saved_frame) + '\n') f.write('Forward clicks: ' + str(clicks_forward) + '\n') f.write('Forward-left clicks: ' + str(clicks_forward_left) + '\n') f.write('Forward-right clicks: ' + str(clicks_forward_right) + '\n') f.write('-----------------------------\n') print('Forward clicks: '), clicks_forward print('Forward-left clicks: '), clicks_forward_left print('Forward-right clicks: '), clicks_forward_right print('Total frame:'), total_frame print('Saved frame:'), saved_frame print('Dropped frame'), total_frame - saved_frame finally: self.connection.close() self.server_socket.close print('Connection closed') print('Socket closed')