def BORKUM_tuner(self, commands, for_send, ships_mat, thrust_constant, heading_constant, att_heading_constant, manoeuvre): if manoeuvre!=None: self.manoeuvre = manoeuvre print(manoeuvre) if self.manoeuvre: environment_variable = 'RPA3' + '_' + self.manoeuvre + '_' + datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d') if self.manoeuvre==None: self.t_reg = time.time() #MAIN STARBOARD THRUSTER for_send = self.nmea_make.TRC(2, 85, 100, int(10)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # MAIN PORT THRUSTER for_send = self.nmea_make.TRC(1, 85, 100, 10) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # BOW THRUSTER for_send = self.nmea_make.TRC(0, 0, 100, 10) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # RUDDERS for_send = self.nmea_make.ROR(int(0), int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) self.heading_difference_circle_right = ships_mat[0, 0, 7] self.heading_difference_circle_left = ships_mat[0, 0, 7] self.heading_difference_zigzag_10 = ships_mat[0, 0, 7] self.heading_difference_zigzag_20 = ships_mat[0, 0, 7] if self.manoeuvre=='manoeuvre_circle_right': self.manoeuvre_circle_right(ships_mat, environment_variable) if self.manoeuvre=='manoeuvre_circle_left': self.manoeuvre_circle_left(ships_mat, environment_variable) if self.manoeuvre=='manoeuvre_zigzag_10': self.manoeuvre_zigzag_10(ships_mat, environment_variable) if self.manoeuvre=='manoeuvre_zigzag_20': self.manoeuvre_zigzag_20(ships_mat, environment_variable) if self.manoeuvre=='manoeuvre_astern': self.manoeuvre_astern(ships_mat, environment_variable) return (for_send, ships_mat)
def RT_Evolution_azimuth_thruster_command(self, engine_num, rpm, rud_angle, ships_mat): for_send = self.nmea_make.TRC(engine_num, rpm, 100, rud_angle) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send)
def manoeuvre_zigzag_20(self, ships_mat, environment_variable): #environment_variable consists out of ship manoeuvre and data #initialize and capture current attitude if time.time() - self.t_reg >0.2: self.t_start_manoeuvre_zigzag_20 = self.t_start_manoeuvre_zigzag_20 + (time.time() - self.t_reg) self.t_reg = time.time() covered_turn = ships_mat[0,0,7] - self.heading_difference_zigzag_20 print(covered_turn) if self.t_start_manoeuvre_zigzag_20<2.0: #MAIN STARBOARD THRUSTER for_send = self.nmea_make.TRC(2, 85, 100, int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # MAIN PORT THRUSTER for_send = self.nmea_make.TRC(1, 85, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # BOW THRUSTER for_send = self.nmea_make.TRC(0, 0, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # RUDDERS for_send = self.nmea_make.ROR(int(0), int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) elif self.manoeuvre_zigzag_20_phase == 0: for_send = self.nmea_make.TRC(2, 85, 100, int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # MAIN PORT THRUSTER for_send = self.nmea_make.TRC(1, 85, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # BOW THRUSTER for_send = self.nmea_make.TRC(0, 0, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # RUDDERS for_send = self.nmea_make.ROR(int(20), int(20)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) if covered_turn>20.0 or covered_turn>-340 and covered_turn<-335: self.manoeuvre_zigzag_20_phase = 1 elif self.manoeuvre_zigzag_20_phase==1: for_send = self.nmea_make.TRC(2, 85, 100, int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # MAIN PORT THRUSTER for_send = self.nmea_make.TRC(1, 85, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # BOW THRUSTER for_send = self.nmea_make.TRC(0, 0, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # RUDDERS for_send = self.nmea_make.ROR(int(-20), int(-20)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) self.t_end_manoeuvre_zigzag_10 = time.time() if covered_turn<-20.0 or covered_turn<340 and covered_turn>335: self.manoeuvre_zigzag_20_phase = 2 elif self.manoeuvre_zigzag_20_phase == 2: for_send = self.nmea_make.TRC(2, 85, 100, int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # MAIN PORT THRUSTER for_send = self.nmea_make.TRC(1, 85, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # BOW THRUSTER for_send = self.nmea_make.TRC(0, 0, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # RUDDERS for_send = self.nmea_make.ROR(int(0), int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) if time.time() - self.t_end_manoeuvre_zigzag_20 > 5.0: self.manoeuvre = None self.write_csv([time.time(), ships_mat[0, 0, 2], ships_mat[0, 0, 3], ships_mat[0, 0, 4], ships_mat[2, 0, 2], -float(ships_mat[2, 0, 3])], environment_variable)
def manoeuvre_astern(self, ships_mat, environment_variable): #environment_variable consists out of ship manoeuvre and data #initialize and capture current attitude if time.time() - self.t_reg >0.2: self.t_start_manoeuvre_astern = self.t_start_manoeuvre_astern + (time.time() - self.t_reg) self.t_reg = time.time() if self.t_start_manoeuvre_astern<2.0: #MAIN STARBOARD THRUSTER for_send = self.nmea_make.TRC(2, 85, 100, int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # MAIN PORT THRUSTER for_send = self.nmea_make.TRC(1, 85, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # BOW THRUSTER for_send = self.nmea_make.TRC(0, 0, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # RUDDERS for_send = self.nmea_make.ROR(int(0), int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) else: # MAIN STARBOARD THRUSTER for_send = self.nmea_make.TRC(2, -85, -100, int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # MAIN PORT THRUSTER for_send = self.nmea_make.TRC(1, -85, -100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # BOW THRUSTER for_send = self.nmea_make.TRC(0, 0, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # RUDDERS for_send = self.nmea_make.ROR(int(0), int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) if ships_mat[0,0,5] <2.0: self.manoeuvre = None self.write_csv([time.time(), ships_mat[0, 0, 2], ships_mat[0, 0, 3], ships_mat[0, 0, 4], ships_mat[2, 0, 2], -float(ships_mat[2, 0, 3])], environment_variable)
def manoeuvre_circle_left(self, ships_mat, environment_variable): #environment_variable consists out of ship manoeuvre and data #initialize and capture current attitude if time.time() - self.t_reg >0.2: self.t_start_manoeuvre_circle_left = self.t_start_manoeuvre_circle_left + (time.time() - self.t_reg) # print(ships_mat[2,0,3]) self.t_reg = time.time() covered_turn = ships_mat[0,0,7] - self.heading_difference_circle_left print(covered_turn) if self.t_start_manoeuvre_circle_left<2.0: #MAIN STARBOARD THRUSTER for_send = self.nmea_make.TRC(2, 85, 100, int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # MAIN PORT THRUSTER for_send = self.nmea_make.TRC(1, 85, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # BOW THRUSTER for_send = self.nmea_make.TRC(0, 0, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # RUDDERS for_send = self.nmea_make.ROR(int(0), int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) elif covered_turn<=10 and covered_turn>=5 or abs(covered_turn)>350 or self.check_circle_manoeuvre_left==1: self.check_circle_manoeuvre_left = 1 if time.time() - self.t_end_manoeuvre_circle_left >5.0: self.manoeuvre = None else: # MAIN STARBOARD THRUSTER for_send = self.nmea_make.TRC(2, 85, 100, int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # MAIN PORT THRUSTER for_send = self.nmea_make.TRC(1, 85, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # BOW THRUSTER for_send = self.nmea_make.TRC(0, 0, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) # RUDDERS for_send = self.nmea_make.ROR(int(0), int(0)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) #start another timer add another iff statement else: #MAIN STARBOARD THRUSTER for_send = self.nmea_make.TRC(2, 85, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) #MAIN PORT THRUSTER for_send = self.nmea_make.TRC(1, 85, 100, 0) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) #BOW THRUSTER for_send = self.nmea_make.TRC(0, 0, 100, 0 ) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) #RUDDERS for_send = self.nmea_make.ROR(int(-35), int(-35)) self.SendRPA3.send_string("recieved", for_send, ships_mat) write_topic(self.topic_name, for_send) self.t_end_manoeuvre_circle_left = time.time() self.write_csv([time.time(), ships_mat[0, 0, 2], ships_mat[0, 0, 3], ships_mat[0, 0, 4], ships_mat[2, 0, 2], -float(ships_mat[2, 0, 3])], environment_variable)