Пример #1
0
    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)
Пример #2
0
 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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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)