Пример #1
0
    def __init__(self, parent, frame):
        self.parent = parent  # we are drawing on our parent, so dc comes from this
        self.frame = frame  # the frame owns any controls we might need to update

        parent.SetDropTarget(TextDropTarget(
            self))  # calls self.OnDropText when drag and drop complete

        self.width = 800
        self.height = 200
        self.margin = min(self.height / 10, 20)
        self.font = wx.Font(self.margin / 2, wx.DEFAULT, wx.FONTSTYLE_NORMAL,
                            wx.FONTWEIGHT_NORMAL)
        self.pixmap = wx.EmptyBitmap(self.width, self.height)
        self.plot_size = self.width
        self.max = -1e32
        self.min = 1e32
        self.plot_interval = 200
        self.plots = {}
        self.auto_scale = True
        self.offset = 0.0
        self.scale = 1.0
        self.x_axis = None

        messages_xml_map.parse_messages()

        self.ivy_interface = IvyMessagesInterface(_IVY_APPNAME)

        # start the timer
        self.timer = wx.FutureCall(self.plot_interval, self.OnTimer)
Пример #2
0
    def __init__(self, parent, frame):
        self.parent = parent  # we are drawing on our parent, so dc comes from this
        self.frame = frame  # the frame owns any controls we might need to update

        parent.SetDropTarget(TextDropTarget(self))  # calls self.OnDropText when drag and drop complete
        self.InitIvy()

        self.width = 800
        self.height = 200
        self.margin = min(self.height / 10, 20)
        self.font = wx.Font(self.margin / 2, wx.DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
        self.pixmap = wx.EmptyBitmap(self.width, self.height)
        self.plot_size = self.width
        self.max = -1e32
        self.min = 1e32
        self.plot_interval = 200
        self.plots = {}
        self.auto_scale = True
        self.offset = 0.0
        self.scale = 1.0
        self.x_axis = None

        messages_xml_map.parse_messages()

        # start the timer
        self.timer = wx.FutureCall(self.plot_interval, self.OnTimer)
Пример #3
0
def test():
    '''
    run test program as a module to avoid namespace conflicts with serial module:
    
    python -p pprzlink.serial

    pprzlink should be installed in a python standard path or included to your PYTHONPATH
    '''
    import time
    import argparse
    from pprzlink import messages_xml_map

    parser = argparse.ArgumentParser()
    parser.add_argument("-f", "--file", help="path to messages.xml file")
    parser.add_argument("-c", "--class", help="message class", dest='msg_class', default='telemetry')
    parser.add_argument("-d", "--device", help="device name", dest='dev', default='/dev/ttyUSB0')
    parser.add_argument("-b", "--baudrate", help="baudrate", dest='baud', default=115200, type=int)
    parser.add_argument("-id", "--ac_id", help="aircraft id (receiver)", dest='ac_id', default=42, type=int)
    parser.add_argument("--interface_id", help="interface id (sender)", dest='id', default=0, type=int)
    args = parser.parse_args()
    messages_xml_map.parse_messages(args.file)
    serial_interface = SerialMessagesInterface(lambda s, m: print("new message from %i: %s" % (s, m)), device=args.dev,
                                               baudrate=args.baud, msg_class=args.msg_class, interface_id=args.id, verbose=True)

    print("Starting serial interface on %s at %i baud" % (args.dev, args.baud))
    try:
        serial_interface.start()

        # give the thread some time to properly start
        time.sleep(0.1)

        # send some datalink messages to aicraft for test
        ac_id = args.ac_id
        print("sending ping")
        ping = PprzMessage('datalink', 'PING')
        serial_interface.send(ping, 0)

        get_setting = PprzMessage('datalink', 'GET_SETTING')
        get_setting['index'] = 0
        get_setting['ac_id'] = ac_id
        serial_interface.send(get_setting, 0)

        # change setting with index 0 (usually the telemetry mode)
        set_setting = PprzMessage('datalink', 'SETTING')
        set_setting['index'] = 0
        set_setting['ac_id'] = ac_id
        set_setting['value'] = 1
        serial_interface.send(set_setting, 0)

        # block = PprzMessage('datalink', 'BLOCK')
        # block['block_id'] = 3
        # block['ac_id'] = ac_id
        # serial_interface.send(block, 0)

        while serial_interface.isAlive():
            serial_interface.join(1)
    except (KeyboardInterrupt, SystemExit):
        print('Shutting down...')
        serial_interface.stop()
        exit()
Пример #4
0
def test():
    import time
    import argparse
    from pprzlink import messages_xml_map

    parser = argparse.ArgumentParser()
    parser.add_argument("-f", "--file", help="path to messages.xml file")
    parser.add_argument("-c", "--class", help="message class of incoming messages", dest='msg_class', default='telemetry')
    parser.add_argument("-a", "--address", help="destination address", dest='address', default='127.0.0.1')
    parser.add_argument("-id", "--ac_id", help="aircraft id (receiver)", dest='ac_id', default=42, type=int)
    parser.add_argument("--interface_id", help="interface id (sender)", dest='id', default=0, type=int)
    parser.add_argument("-up", "--uplink_port", help="uplink port", dest='uplink', default=UPLINK_PORT, type=int)
    parser.add_argument("-dp", "--downlink_port", help="downlink port", dest='downlink', default=DOWNLINK_PORT, type=int)
    args = parser.parse_args()
    messages_xml_map.parse_messages(args.file)
    udp_interface = UdpMessagesInterface(lambda s, a, m: print("new message from %i (%s): %s" % (s, a, m)),
                                               uplink_port=args.uplink, downlink_port=args.downlink,
                                               msg_class=args.msg_class, interface_id=args.id, verbose=True)

    print("Starting UDP interface with '%s' with id '%d'" % (args.address, args.ac_id))
    address = (args.address, args.uplink)
    try:
        udp_interface.start()

        # give the thread some time to properly start
        time.sleep(0.1)

        # send some datalink messages to aicraft for test
        ac_id = args.ac_id
        print("sending ping")
        ping = PprzMessage('datalink', 'PING')
        udp_interface.send(ping, 0, address)

        print("sending get_setting")
        get_setting = PprzMessage('datalink', 'GET_SETTING')
        get_setting['index'] = 0
        get_setting['ac_id'] = ac_id
        udp_interface.send(get_setting, 0, address)

        # change setting with index 0 (usually the telemetry mode)
        print("sending setting")
        set_setting = PprzMessage('datalink', 'SETTING')
        set_setting['index'] = 0
        set_setting['ac_id'] = ac_id
        set_setting['value'] = 1
        udp_interface.send(set_setting, 0, address)

        # print("sending block")
        # block = PprzMessage('datalink', 'BLOCK')
        # block['block_id'] = 3
        # block['ac_id'] = ac_id
        # udp_interface.send(block, 0, address)

        while udp_interface.isAlive():
            udp_interface.join(1)
    except (KeyboardInterrupt, SystemExit):
        print('Shutting down...')
        udp_interface.stop()
        exit()
Пример #5
0
 def __init__(self, callback=None, init=True, verbose=False, bind_regex='(.*)', ivy_bus=IVY_BUS):
     self.callback = callback
     self.ivy_id = 0
     self.verbose = verbose
     self.ivy_bus = ivy_bus
     # make sure all messages are parsed before we start creating them in callbacks
     messages_xml_map.parse_messages()
     self.init_ivy(init, bind_regex)
Пример #6
0
def test():
    import time
    import argparse
    from pprzlink import messages_xml_map

    parser = argparse.ArgumentParser()
    parser.add_argument("-f", "--file", help="path to messages.xml file")
    parser.add_argument("-c", "--class", help="message class of incoming messages", dest='msg_class', default='telemetry')
    parser.add_argument("-a", "--address", help="destination address", dest='address', default='127.0.0.1')
    parser.add_argument("-id", "--ac_id", help="aircraft id", dest='ac_id', default=42, type=int)
    parser.add_argument("-up", "--uplink_port", help="uplink port", dest='uplink', default=UPLINK_PORT, type=int)
    parser.add_argument("-dp", "--downlink_port", help="downlink port", dest='downlink', default=DOWNLINK_PORT, type=int)
    args = parser.parse_args()
    messages_xml_map.parse_messages(args.file)
    udp_interface = UdpMessagesInterface(lambda s, a, m: print("new message from %i (%s): %s" % (s, a, m)),
                                               uplink_port=args.uplink, downlink_port=args.downlink,
                                               msg_class=args.msg_class, verbose=True)

    print("Starting UDP interface with '%s' with id '%d'" % (args.address, args.ac_id))
    address = (args.address, args.uplink)
    try:
        udp_interface.start()

        # give the thread some time to properly start
        time.sleep(0.1)

        # send some datalink messages to aicraft for test
        ac_id = args.ac_id
        print("sending ping")
        ping = PprzMessage('datalink', 'PING')
        udp_interface.send(ping, 0, address)

        print("sending get_setting")
        get_setting = PprzMessage('datalink', 'GET_SETTING')
        get_setting['index'] = 0
        get_setting['ac_id'] = ac_id
        udp_interface.send(get_setting, 0, address)

        # change setting with index 0 (usually the telemetry mode)
        print("sending setting")
        set_setting = PprzMessage('datalink', 'SETTING')
        set_setting['index'] = 0
        set_setting['ac_id'] = ac_id
        set_setting['value'] = 1
        udp_interface.send(set_setting, 0, address)

        # print("sending block")
        # block = PprzMessage('datalink', 'BLOCK')
        # block['block_id'] = 3
        # block['ac_id'] = ac_id
        # udp_interface.send(block, 0, address)

        while udp_interface.isAlive():
            udp_interface.join(1)
    except (KeyboardInterrupt, SystemExit):
        print('Shutting down...')
        udp_interface.stop()
        exit()
Пример #7
0
def test():
    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument("-f", "--file", help="path to messages.xml file")
    parser.add_argument("-c", "--class", help="message class", dest="msg_class", default="telemetry")
    args = parser.parse_args()
    messages_xml_map.parse_messages(args.file)
    messages = [PprzMessage(args.msg_class, n) for n in messages_xml_map.get_msgs(args.msg_class)]
    print("Listing %i messages in '%s' msg_class" % (len(messages), args.msg_class))
    for msg in messages:
        print(msg)
def main():
    messages_xml_map.parse_messages()


    #Command line options
    parser = argparse.ArgumentParser(description="Link_Combiner listens to the ivy messages received from multiple Link agents (set each of their -id options to a unique number), and sends a combined stream of messages to the other agents.")
    parser.add_argument("-b", "-buffer_size", "--buffer_size", help="The number of elements messages to be stored in the circular buffer for each link", default=10)
    args = parser.parse_args()

    global BUFFER_SIZE
    BUFFER_SIZE = int(args.buffer_size)            #The number of elements messages to be stored in the circular buffer for each link.

    link_combiner = Link_Combiner()
Пример #9
0
 def __init__(self,
              callback=None,
              init=True,
              verbose=False,
              bind_regex='(.*)',
              ivy_bus=IVY_BUS):
     self.callback = callback
     self.ivy_id = 0
     self.verbose = verbose
     self.ivy_bus = ivy_bus
     # make sure all messages are parsed before we start creating them in callbacks
     messages_xml_map.parse_messages()
     self.init_ivy(init, bind_regex)
Пример #10
0
 def __init__(self, opts):
     messages_xml_map.parse_messages()
     self.run_event = threading.Event()
     self.uplink_port = opts.uplink_port
     self.downlink_port = opts.downlink_port
     self.udp = pprzlink.udp.UdpMessagesInterface(
         self.proccess_downlink_msg, False, self.uplink_port,
         self.downlink_port)
     self.ivy = pprzlink.ivy.IvyMessagesInterface("UDPLink", True, False,
                                                  opts.bus)
     self.ac_downlink_status = {}
     self.rx_err = 0
     self.status_timer = threading.Timer(STATUS_PERIOD, self.sendStatus)
     self.ping_timer = threading.Timer(PING_PERIOD, self.sendPing)
     self.bcast_method = opts.broadcast_method
     self.bcast_addr = opts.broadcast_address
Пример #11
0
    def __init__(self):
        self.InitIvy()
        self.ivy_id = 0
        self.status_timer = threading.Timer(STATUS_PERIOD, self.sendStatus)
        self.ping_timer = threading.Timer(STATUS_PERIOD, self.sendPing)
        self.ac_downlink_status = {}
        self.rx_err = 0

        messages_xml_map.parse_messages()
        self.data_types = {'float': ['f', 4],
                           'uint8': ['B', 1],
                           'uint16': ['H', 2],
                           'uint32': ['L', 4],
                           'int8': ['b', 1],
                           'int16': ['h', 2],
                           'int32': ['l', 4]
                           }
Пример #12
0
    def __init__(self):
        self.InitIvy()
        self.ivy_id = 0
        self.status_timer = threading.Timer(STATUS_PERIOD, self.sendStatus)
        self.ping_timer = threading.Timer(STATUS_PERIOD, self.sendPing)
        self.ac_downlink_status = {}
        self.rx_err = 0

        messages_xml_map.parse_messages()
        self.data_types = {
            'float': ['f', 4],
            'uint8': ['B', 1],
            'uint16': ['H', 2],
            'uint32': ['L', 4],
            'int8': ['b', 1],
            'int16': ['h', 2],
            'int32': ['l', 4]
        }
Пример #13
0
    def __init__(self, agent_name=None, start_ivy=True, verbose=False, ivy_bus=IVY_BUS):
        if agent_name is None:
            agent_name = "IvyMessagesInterface %i" % os.getpid()
        self.verbose = verbose
        self._ivy_bus = ivy_bus
        self._running = False

        # make sure all messages are parsed before we start creating them in callbacks
        # the message parsing should really be redone...
        messages_xml_map.parse_messages()

        # bindings with associated callback functions
        self.bindings = {}

        IvyInit(agent_name, "READY")
        logging.getLogger('Ivy').setLevel(logging.WARN)
        if start_ivy:
            self.start()
Пример #14
0
    def __init__(self, agent_name=None, start_ivy=True, verbose=False, ivy_bus=IVY_BUS):
        if agent_name is None:
            agent_name = "IvyMessagesInterface %i" % os.getpid()
        self.verbose = verbose
        self._ivy_bus = ivy_bus
        self._running = False

        # make sure all messages are parsed before we start creating them in callbacks
        # the message parsing should really be redone...
        messages_xml_map.parse_messages()

        # bindings with associated callback functions
        self.bindings = {}

        IvyInit(agent_name, "READY")
        logging.getLogger('Ivy').setLevel(logging.WARN)
        if start_ivy:
            self.start()
Пример #15
0
def main():
    '''
    Real-time Fault prediction module:

    '''
    import time
    import argparse
    from pprzlink import messages_xml_map
    import numpy as np

    parser = argparse.ArgumentParser()
    parser.add_argument("-f",
                        "--file",
                        help="path to messages.xml file",
                        default='pprzlink/messages.xml')
    parser.add_argument("-c",
                        "--class",
                        help="message class",
                        dest='msg_class',
                        default='telemetry')
    parser.add_argument("-d",
                        "--device",
                        help="device name",
                        dest='dev',
                        default='/dev/serial0')
    parser.add_argument("-b",
                        "--baudrate",
                        help="baudrate",
                        dest='baud',
                        default=230400,
                        type=int)
    parser.add_argument("-id",
                        "--ac_id",
                        help="aircraft id (receiver)",
                        dest='ac_id',
                        default=42,
                        type=int)
    parser.add_argument("--interface_id",
                        help="interface id (sender)",
                        dest='id',
                        default=0,
                        type=int)
    args = parser.parse_args()
    messages_xml_map.parse_messages(args.file)

    #model_filename = 'svm_model_1.joblib'
    #scaler_filename = 'svm_scaler_1.joblib'

    #model_filename = 'models/svm_model_binary_r05.joblib'
    #scaler_filename = 'models/svm_scaler_binary_r05.joblib'

    #model_filename = 'models/svm_model_binary_r05_07072020_AGC_20h_10s.joblib'
    #scaler_filename = 'models/svm_scaler_binary_r05_07072020_AGC_20h_10s.joblib'

    #model_filename = 'models/svm_model_binary_r03_10072020_AGC_20h_10s.joblib'
    #scaler_filename = 'models/svm_scaler_binary_r03_10072020_AGC_20h_10s.joblib'

    #model_filename = 'models/svm_model_binary_r03_l03_13072020_AGC_20h_10s.joblib'
    #scaler_filename = 'models/svm_scaler_binary_r03_l03_13072020_AGC_20h_10s.joblib'

    model_filename = 'models/svm_model_binary_multi_21072020_AGC_20h_10s.joblib'
    scaler_filename = 'models/svm_scaler_binary_multi_21072020_AGC_20h_10s.joblib'

    model = Model(model_filename, scaler_filename)
    #collector = Data_Collector(model=model, dimension=8, history_step=20, verbose=True)
    collector = Data_Collector(model=model,
                               dimension=8,
                               history_step=20,
                               verbose=False)
    serial_interface = SerialMessagesInterface(collector.parse_msg,
                                               device=args.dev,
                                               baudrate=args.baud,
                                               msg_class=args.msg_class,
                                               interface_id=args.id,
                                               verbose=False)
    logger = Logger()
    model.set_interface(serial_interface)
    model.set_logger(logger)

    print("Starting serial interface on %s at %i baud" % (args.dev, args.baud))
    try:
        serial_interface.start()

        # give the thread some time to properly start
        time.sleep(0.1)

        while serial_interface.isAlive():
            serial_interface.join(1)
    except (KeyboardInterrupt, SystemExit):
        print('Shutting down...')
        logger.close_log()
        serial_interface.stop()
        exit()