Пример #1
0
    def run(self, args):
        '''
        Start a websocket SocketIO server to talk to a donkey simulator
        '''
        import socketio
        from donkeycar.parts.simulation import SteeringServer
        from donkeycar.parts.keras import KerasCategorical, KerasLinear

        args, parser = self.parse_args(args)

        cfg = load_config(args.config)

        if cfg is None:
            return

        #TODO: this logic should be in a pilot or modle handler part.
        if args.type == "categorical":
            kl = KerasCategorical()
        elif args.type == "linear":
            kl = KerasLinear(num_outputs=2)
        else:
            print("didn't recognice type:", args.type)
            return

        #can provide an optional image filter part
        img_stack = None

        #load keras model
        kl.load(args.model)

        #start socket server framework
        sio = socketio.Server()

        top_speed = float(args.top_speed)

        #start sim server handler
        ss = SteeringServer(sio,
                            kpart=kl,
                            top_speed=top_speed,
                            image_part=img_stack)

        #register events and pass to server handlers

        @sio.on('telemetry')
        def telemetry(sid, data):
            ss.telemetry(sid, data)

        @sio.on('connect')
        def connect(sid, environ):
            ss.connect(sid, environ)

        ss.go(('0.0.0.0', 9090))
Пример #2
0
    def run(self, args):
        '''
        Start a websocket SocketIO server to talk to a donkey simulator
        '''
        import socketio
        from donkeycar.parts.simulation import SteeringServer
        from donkeycar.parts.keras import KerasLinear
        from donkeycar.parts.keras import KerasCategorical

        args, parser = self.parse_args(args)

        cfg = load_config(args.config)

        if cfg is None:
            return

        kl = get_model_by_type(args.type, cfg=cfg)

        #can provide an optional image filter part
        img_stack = None

        #load keras model
        kl.load(args.model)

        #start socket server framework
        sio = socketio.Server()

        top_speed = float(args.top_speed)

        #start sim server handler
        ss = SteeringServer(sio,
                            kpart=kl,
                            top_speed=top_speed,
                            image_part=img_stack)

        #register events and pass to server handlers

        @sio.on('telemetry')
        def telemetry(sid, data):
            ss.telemetry(sid, data)

        @sio.on('connect')
        def connect(sid, environ):
            ss.connect(sid, environ)

        ss.go(('0.0.0.0', cfg.REMOTE_PILOT_PORT))
Пример #3
0
    def sim(self, model_path=None, top_speed=0.0):
        '''
        Donkey Simulatorへ独自モデルの結果を提供するために推論APIを提供します。
        donkey simコマンドを使用する場合、KerasCategoricalもしくはKerasLinearクラス
        の実装モデルにしか対応していないため、manage.py上に機能を追加しました。
        ポートは9090を使用します(変更不可)。
    
        引数:
            model_path      モデルファイルへのパス、指定無しの場合はロードしない
            top_speed       トップスピード値(シミュレータではスロットル推論値は使用されない)、指定しない場合は速度は0.0となる
        '''

        # このメソッドのみで使用するパッケージのインポート

        # モデルのロード
        if model_path:
            print("start loading trained model file")
            super().load(model_path)
            print("finish loading trained model file")

        # ソケットサーバフレームワークの開始
        sio = socketio.Server()

        # Sim サーバハンドラの開始
        ss = SteeringServer(sio,
                            kpart=self,
                            top_speed=top_speed,
                            image_part=None)

        # イベントおよびハンドラ関数を登録

        @sio.on('telemetry')
        def telemetry(sid, data):
            ss.telemetry(sid, data)

        @sio.on('connect')
        def connect(sid, environ):
            ss.connect(sid, environ)

        # リッスン開始
        ss.go(('0.0.0.0', 9090))