예제 #1
0
    logger.addHandler(file)

try:
    config = Config()
    secret_key = config.read("secret_key")
    if not secret_key:
        secret_key = "".join(
            random.choice(string.ascii_uppercase + string.digits)
            for _ in range(16))
        config.write("secret_key", secret_key)
    app.secret_key = secret_key

    Storage().init()

    sockets = socketio.Server()
    app.wsgi_app = socketio.Middleware(sockets, app.wsgi_app)
    sockets.register_namespace(Backend())

    if __name__ == "__main__":
        if not app.debug:

            def open_in_browser():
                logging.info("Application is starting...")
                url = "http://127.0.0.1:" + str(port)

                while True:
                    try:
                        request.urlopen(url=url)
                        break
                    except Exception:
                        time.sleep(0.5)
        
        if(speed > MAX_SPEED):
            limit = MIN_SPEED
        else:
            limit = MAX_SPEED

        steering_angle = float(model.predict(image, batch_size=1))
        throttle = 1.0 - steering_angle**2 - (speed/limit)**2
        
        #------------------ only for track 2 ------------------
        steering_angle *= 1.5
        throttle = np.clip(1.0 - abs(steering_angle) - (speed/limit)**2, -1.0, 1.0)

        if(speed < 0.4):
            throttle = - throttle 
        elif(speed < 4):
            print('ENTROU')
            throttle = min(throttle + 0.3, 0.9)
        #------------------

        print('{} {} {}'.format(steering_angle, throttle, speed))
        
        send_control(steering_angle, throttle)
    else:
        server.emit("manual", data={}, skip_sid=True)

if __name__ == '__main__':
    model = load_model("models/track2_30_epochs_BN.h5")
    app = socketio.Middleware(server, app)
    eventlet.wsgi.server(eventlet.listen(('', 4567)), app)
예제 #3
0
@SIO.on('connect')
def on_connect(sid, data):
    print('user connected ' + sid)


@SIO.on('handleLatLng')
def on_handleLatLng(sid, data):
    coordinates = (data.get('lat'), data.get('lng')),
    location_info = reverse_geocode.search(coordinates)[0]
    country = location_info.get('country')
    try:
        country_info = CountryInfo(country).info()
    except:
        country_info = 'Unknow Country'
    SIO.emit('country_info', {
        'country_info': country_info,
        'location_info': location_info
    },
             room=sid)


@SIO.on('disconnect')
def on_disconnect(sid):
    print('disconnect ' + sid)


if __name__ == '__main__':
    APP = socketio.Middleware(SIO, APP)
    eventlet.wsgi.server(
        eventlet.listen((SERVER.get('host'), SERVER.get('port'))), APP)
예제 #4
0
    if not args.nginx:
        nginx = RemoteComponent(config['NGINX']['address'],
                                config['NGINX']['port'], [Nginx])

    manager = Manager(server, nginx, monitor)
    modules.append(manager)

# Create our flask application
application = create_app()

if args.web:
    application.register_blueprint(user_bp)
    application.register_blueprint(admin_bp, url_prefix='/admin')

    sockio = create_sio()
    wrap = socketio.Middleware(sockio, application)

    counts = gevent.spawn(sio_counts, sockio)

try:
    l.info("+------------------------------------------------------+")
    l.info("| Service running. Use Ctrl-C to terminate gracefully. |")
    l.info("+------------------------------------------------------+")

    if args.web:
        service = wsgi.WSGIServer(
            (config['REMU']['address'], int(config['REMU']['port'])),
            wrap,
            log=None)
    else:
        service = wsgi.WSGIServer(
def drive_sim_car(model, path_images_save, set_speed):
    """
    Function wrapper to make script callable.
    
    Inputs
    ----------
    model: Keras sequential model
        Keras model object
    path_images_save: str
        Path specifying where recorded images should be saved.
    set_speed: int
        Initial speed value for the simulator.
       
    Outputs
    -------
        N/A
        
    """

    sio = socketio.Server()

    class SimplePIController:
        def __init__(self, Kp, Ki):
            self.Kp = Kp
            self.Ki = Ki
            self.set_point = 0.
            self.error = 0.
            self.integral = 0.

        def set_desired(self, desired):
            self.set_point = desired

        def update(self, measurement):
            # proportional error
            self.error = self.set_point - measurement

            # integral error
            self.integral += self.error

            return self.Kp * self.error + self.Ki * self.integral

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

        if data:
            # The current steering angle of the car
            steering_angle = data["steering_angle"]
            # The current throttle of the car
            throttle = data["throttle"]
            # The current speed of the car
            speed = data["speed"]
            # The current image from the center camera of the car
            imgString = data["image"]
            image = Image.open(BytesIO(base64.b64decode(imgString)))
            image_array = np.asarray(image)

            # Prepare image for use by a model
            image_array = prepare_image(image_array)

            steering_angle = float(
                model.predict(image_array[None, :, :, :], batch_size=1))

            throttle = controller.update(float(speed))

            # Slow down on hard turns.
            if abs(steering_angle) >= 0.55:
                throttle = 0.1

            print(steering_angle, throttle)
            send_control(steering_angle, throttle)

            # save frame
            if path_images_save != '':
                timestamp = datetime.utcnow().strftime(
                    '%Y_%m_%d_%H_%M_%S_%f')[:-3]
                image_filename = path_join(path_images_save, timestamp)
                image.save('{}.jpg'.format(image_filename))
        else:
            # NOTE: DON'T EDIT THIS.
            sio.emit('manual', data={}, skip_sid=True)

    @sio.on('connect')
    def connect(sid, environ):
        print("connect ", sid)
        send_control(0, 0)

    def send_control(steering_angle, throttle):
        sio.emit("steer",
                 data={
                     'steering_angle': steering_angle.__str__(),
                     'throttle': throttle.__str__()
                 },
                 skip_sid=True)

    app = Flask(__name__)

    controller = SimplePIController(0.1, 0.002)
    controller.set_desired(set_speed)

    # Wrap Flask application with engineio's middleware
    app = socketio.Middleware(sio, app)

    # Deploy as an eventlet WSGI server
    eventlet.wsgi.server(eventlet.listen(('', 4567)), app)
    def send_control(steering_angle, throttle, cmd=None):
        if cmd is None:
            sio.emit("steer",
                     data={
                         'steering_angle': str(steering_angle),
                         'throttle': str(throttle)
                     },
                     skip_sid=True)
        else:
            sio.emit("restart", data={}, skip_sid=True)
            print('restart')

    car = Car(control_function=send_control)
    drive = AutoDrive(car, car_training_data_collector, args.record)

    @sio.on('telemetry')
    def telemetry(sid, dashboard):
        if dashboard:
            car.on_dashboard(dashboard)
        else:
            sio.emit('manual', data={}, skip_sid=True)

    @sio.on('connect')
    def connect(sid, environ):  # First time connect to car and environment
        car.control(0, 0)

    app = socketio.Middleware(sio, Flask(__name__))
    eventlet.wsgi.server(eventlet.listen(('', 4567)), app)

# vim: set sw=4 ts=4 et :
예제 #7
0
 def run(self):
     app = Flask(__name__)
     app.wsgi_app = socketio.Middleware(self._socket, app.wsgi_app)
     app.run(threaded=True,
             host=os.environ.get('SOCKET_SERVER_HOST'),
             port=int(os.environ.get('SOCKET_SERVER_PORT')))
예제 #8
0
def __setup_app():
    """
    Setup the flask application handler
    """
    global __app
    __app = socketio.Middleware(__socketio_app, __flask_app)
예제 #9
0
    SIO.emit("pickup", pickup, skip_sid=True)


def exit_handle():
    global GAME_ENV
    ROVER_REPLAY.flush()


atexit.register(exit_handle)

if __name__ == '__main__':

    assert len(sys.argv) >= 3, \
      'usage: python drive_rover.py experiment_dir save_replay=[True or False]'

    EXPERIMENT_DIR = sys.argv[1]

    if sys.argv[2].lower() == 'true':
        ROVER_REPLAY = RoverReplay(os.path.join(EXPERIMENT_DIR, 'replay'))

    config = os.path.join(EXPERIMENT_DIR, 'agent_spec.cfg')
    config = RoverConfig(config_path=config)

    WITH_SAMPLE_LOCATION, WITH_MAP = config.with_sample_location, config.with_map

    ROVER_AGENT = RoverAgent(config, debug=False)

    FLASK_APP = socketio.Middleware(SIO, FLASK_APP)

    eventlet.wsgi.server(eventlet.listen(('', 4567)), FLASK_APP)
예제 #10
0
    def __init__(self, config, mongo):
        self.app = Flask(__name__)
        self.app.config['yada_config'] = config
        self.app.config['yada_mongo'] = mongo
        self.app.debug = True
        self.app.secret_key = '23ljk2l9a08sd7f09as87df09as87df3k4j'
        CORS(self.app, supports_credentials=True)
        endpoints.BaseGraphView.get_base_graph = self.get_base_graph
        self.app.add_url_rule(
            '/transaction',
            view_func=endpoints.TransactionView.as_view('transaction'),
            methods=['GET', 'POST'])
        self.app.add_url_rule('/get-graph-info',
                              view_func=endpoints.GraphView.as_view('graph'),
                              methods=['GET', 'POST'])
        self.app.add_url_rule(
            '/get-graph-sent-friend-requests',
            view_func=endpoints.GraphSentFriendRequestsView.as_view(
                'graphsentfriendrequests'),
            methods=['GET', 'POST'])
        self.app.add_url_rule(
            '/get-graph-friend-requests',
            view_func=endpoints.GraphFriendRequestsView.as_view(
                'graphfriendrequests'),
            methods=['GET', 'POST'])
        self.app.add_url_rule(
            '/get-graph-friends',
            view_func=endpoints.GraphFriendsView.as_view('graphfriends'),
            methods=['GET', 'POST'])
        self.app.add_url_rule(
            '/get-graph-posts',
            view_func=endpoints.GraphPostsView.as_view('graphposts'),
            methods=['GET', 'POST'])
        self.app.add_url_rule(
            '/get-graph-messages',
            view_func=endpoints.GraphMessagesView.as_view('graphmessages'),
            methods=['GET', 'POST'])
        self.app.add_url_rule('/get-graph-new-messages',
                              view_func=endpoints.GraphNewMessagesView.as_view(
                                  'graphnewmessages'),
                              methods=['GET', 'POST'])
        self.app.add_url_rule(
            '/get-graph-comments',
            view_func=endpoints.GraphCommentsView.as_view('get-comments'),
            methods=['POST'])
        self.app.add_url_rule(
            '/get-graph-reacts',
            view_func=endpoints.GraphReactsView.as_view('get-reacts'),
            methods=['POST'])
        self.app.add_url_rule(
            '/get-graph-wallet',
            view_func=endpoints.RidWalletView.as_view('get-wallet'))
        self.app.add_url_rule('/wallet',
                              view_func=endpoints.WalletView.as_view('wallet'))
        self.app.add_url_rule('/faucet',
                              view_func=endpoints.FaucetView.as_view('faucet'))
        self.app.add_url_rule(
            '/pool', view_func=endpoints.MiningPoolView.as_view('pool'))
        self.app.add_url_rule(
            '/pool-submit',
            view_func=endpoints.MiningPoolSubmitView.as_view('poolsubmit'),
            methods=['GET', 'POST'])
        self.app.add_url_rule(
            '/pool-explorer',
            view_func=endpoints.MiningPoolExplorerView.as_view(
                'pool-explorer'))
        self.app.add_url_rule(
            '/get-block',
            view_func=endpoints.GetBlockByHashView.as_view('get-block'),
            methods=['GET'])
        self.app.add_url_rule(
            '/getblockheight',
            view_func=endpoints.GetBlockHeightView.as_view('get-block-height'))
        self.app.add_url_rule(
            '/newtransaction',
            view_func=endpoints.NewTransactionView.as_view('new-transaction'),
            methods=['POST'])
        self.app.add_url_rule(
            '/newblock',
            view_func=endpoints.NewBlockView.as_view('new-block'),
            methods=['POST'])
        self.app.add_url_rule(
            '/get-blocks',
            view_func=endpoints.GetBlocksView.as_view('get-blocks-range'))
        self.app.add_url_rule(
            '/create-raw-transaction',
            view_func=endpoints.CreateRawTransactionView.as_view(
                'create-raw-transaction'),
            methods=['POST'])
        self.app.add_url_rule(
            '/sign-raw-transaction',
            view_func=endpoints.SignRawTransactionView.as_view(
                'sign-raw-transaction'),
            methods=['POST'])
        self.app.add_url_rule(
            '/generate-wallet',
            view_func=endpoints.GenerateWalletView.as_view('generate-wallet'))
        self.app.add_url_rule(
            '/generate-child-wallet',
            view_func=endpoints.GenerateChildWalletView.as_view(
                'generate-child-wallet'),
            methods=['POST'])
        self.app.add_url_rule(
            '/explorer-search',
            view_func=endpoints.ExplorerSearchView.as_view('explorer-search'))
        self.app.add_url_rule(
            '/get-latest-block',
            view_func=endpoints.GetLatestBlockView.as_view('get-latest-block'))
        self.app.add_url_rule(
            '/register', view_func=endpoints.RegisterView.as_view('register'))
        self.app.add_url_rule(
            '/create-relationship',
            view_func=endpoints.CreateRelationshipView.as_view(
                'create-relationship'),
            methods=['POST'])
        self.app.add_url_rule('/post-fastgraph-transaction',
                              view_func=endpoints.PostFastGraphView.as_view(
                                  'post-fastgraph-transaction'),
                              methods=['POST'])
        self.app.add_url_rule(
            '/yada_config.json',
            view_func=endpoints.GetYadaConfigView.as_view('yada-config'))
        self.app.add_url_rule(
            '/login', view_func=endpoints.GetSiginCodeView.as_view('login'))
        self.app.add_url_rule('/',
                              view_func=endpoints.HomeView.as_view('home'))
        self.app.add_url_rule('/search',
                              view_func=endpoints.SearchView.as_view('search'))
        self.app.add_url_rule('/react',
                              view_func=endpoints.ReactView.as_view('react'),
                              methods=['POST'])
        self.app.add_url_rule(
            '/comment-react',
            view_func=endpoints.CommentReactView.as_view('comment-react'),
            methods=['POST'])
        self.app.add_url_rule('/get-comment-reacts',
                              view_func=endpoints.GetCommentReactsView.as_view(
                                  'get-comment-reacts'),
                              methods=['POST'])
        self.app.add_url_rule(
            '/get-comment-reacts-detail',
            view_func=endpoints.GetCommentReactsDetailView.as_view(
                'get-comment-reacts-detail'),
            methods=['POST'])
        self.app.add_url_rule(
            '/comment',
            view_func=endpoints.CommentView.as_view('comment'),
            methods=['POST'])

        sio = socketio.Server(async_mode='gevent')
        sio.register_namespace(endpoints.BlockchainSocketServer('/chat'))
        socketio.Middleware(sio, self.app)
예제 #11
0
            angle = float(model.predict(image, batch_size=1))
			
            global speed_limit
            if speed > speed_limit:
                speed_limit = min_speed
            else:
                speed_limit = max_speed
                
            throttle = 1.0 - ((angle**2)*1) - (speed/speed_limit)**2
            throttle = throttle * 0.5
            print('angle: {} throttle: {}  speed: {}'.format(angle, throttle, speed))
            send_control(angle, throttle)
            
        except Exception as e:
            print(e)
            
    else:
        socket.emit('manual', data={}, skip_sid=True)

        
if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Remote Driving')
    parser.add_argument('model', type=str, help='path to model h5 file')
    #parser.add_argument('images', type=str, nargs='?', default='', help='path to images')
    
    args = parser.parse_args()
    model = load_model(args.model)
    
    app = socketio.Middleware(socket, app)
    
    eventlet.wsgi.server(eventlet.listen(('', 4567)), app)
예제 #12
0
파일: app.py 프로젝트: heyredhat/spheres123
##################################################################################################################

import os
import sys
import json
import time
import logging
import socketio
import eventlet
import eventlet.wsgi
from flask import Flask, request, Response, render_template

sio = socketio.Server(async_mode='eventlet')
app = Flask("spheres")
app.debug = True
app.wsgi_app = socketio.Middleware(sio, app.wsgi_app)
thread = None

#log = logging.getLogger('werkzeug')
#log.disabled = True
#app.logger.disabled = True


def animate():
    global the_spheres
    global sphere
    global options
    global new_sphere
    global did_split
    while True:
        #try:
예제 #13
0
import socketio
from gevent import pywsgi
import six

import logging
logging.basicConfig(level=logging.DEBUG)

io = socketio.Server(binary=True)

def callback(*args):
    print "Client responded '%s' to welcome" % args

@io.on('connect', namespace='/chat')
def connect(sid, *args):
    io.emit(u'welcome', {'some':'data'}, room=sid, callback=callback, namespace='/chat')

@io.on('hello', namespace='/chat')
def message(sid, data):
    print "Received hello with '%s'" % data

app = socketio.Middleware(io)
pywsgi.WSGIServer(('', 8000), app).serve_forever()
예제 #14
0
 def register(self, app, options, first_registration=False):
     app.wsgi_app = socketio.Middleware(self.sio, app.wsgi_app,
                                        self.socketio_path)
     super(WebappBlueprint, self).register(app, options, first_registration)
예제 #15
0
    throttle = 1.0 - speed / speed_limit
    print('{} {} {}'.format(steering_angle, throttle, speed))
    send_control(
        steering_angle, throttle
    )  #after the prepossing telementory send data to send_control,then send_control sends data to simulator and run the car and send the data to the python environment


@sio.on('connect')  #message, disconnect
def connect(sid, environ):
    print('connected')
    send_control(0, 0)


def send_control(steering_angle,
                 throttle):  #sending the throttle value to simulator
    sio.emit('steer',
             data={
                 'steering_angle': steering_angle.__str__(),
                 'throttle': throttle.__str__()
             })


if __name__ == '__main__':
    model = load_model('model.h5')
    app = socketio.Middleware(
        sio,
        app)  #app is the server,through the server the tunnel will be opened
    eventlet.wsgi.server(
        eventlet.listen(('', 4567)), app
    )  #blank space is IPV4 address(it may change but by default it take 0.0.0.0),4567 is the server port id
예제 #16
0
        nargs='?',
        default='',
        help=
        'Path to image folder. This is where the images from the run will be saved.'
    )
    args = parser.parse_args()

    with open(args.model, 'r') as jfile:
        model = model_from_json(jfile.read())

    model.compile("adam", "mse")
    weights_file = args.model.replace('json', 'h5')
    model.load_weights(weights_file)

    if args.image_folder != '':
        print("Creating image folder at {}".format(args.image_folder))
        if not os.path.exists(args.image_folder):
            os.makedirs(args.image_folder)
        else:
            shutil.rmtree(args.image_folder)
            os.makedirs(args.image_folder)
        print("RECORDING THIS RUN ...")
    else:
        print("NOT RECORDING THIS RUN ...")

    # wrap Flask application with engineio's middleware
    app = socketio.Middleware(sio, app)

    # deploy as an eventlet WSGI server
    eventlet.wsgi.server(eventlet.listen(('', 4567)), app)
예제 #17
0
 def _socketio_decorator(self, wsgi):
     sio = socketio.Server(async_mode="eventlet")
     namespace = self.InfoNamespace(self, "/info")
     sio.register_namespace(namespace)
     self.bus["browser/info"] = channels.BrowserChannel(namespace=namespace)
     return socketio.Middleware(sio, wsgi)