コード例 #1
0
    def __init__(self, parentWindow, controller, save, profileNumber):
        self.__controller = Controller()
        self.__builder = Gtk.Builder()
        self.__controller = controller
        self.__save = save
        self.__parentWindow = parentWindow
        self.__profileNumber = profileNumber

        self.__parentWindow = parentWindow

        self.__builder.add_from_file(
            'views/UploadSaveDialog/UploadSaveDialog.glade')
        self.__window = self.__builder.get_object("uploadSaveWindow")
        self.__builder.get_object("saveNameLabel").set_text('" {} "'.format(
            save.getName()))
        self.__builder.get_object("profileNameLabel").set_text(
            '"Profile {}: {}"'.format(
                self.__profileNumber + 1,
                self.__controller.getProfilesList()[self.__profileNumber][1]))

        # Handles:
        self.__builder.get_object("noButton").connect("clicked",
                                                      self.__noButtonHandle)
        self.__builder.get_object("yesButton").connect("clicked",
                                                       self.__yesButtonHandle)
        self.__window.connect("key-press-event", self.on_key_press_event)
コード例 #2
0
def test_controller_start():
    import sys
    app = QApplication(sys.argv)
    app_event_loop = QEventLoop(app)
    asyncio.set_event_loop(app_event_loop)
    w = Controller()
    w.show()
コード例 #3
0
ファイル: main.py プロジェクト: sujaygarlanka/AutoBot
def bot_control(locations):
    controller = Controller()
    empty_counter = 0
    while True:
        # 960 x 540
        location = locations.get(block=True)
        if len(location) > 0:
            location = location[0]
            # radius - 16, 173
            x = location[0]
            y = location[1]
            w = location[2]
            h = location[3]
            center = x + w / 2
            size = w * h
            print(f"Center is {center}. Size is {size}.")
            if center < 480:
                controller.left()
            elif center > 480:
                controller.right()
            if size < 250000:
                controller.forward(230)
            elif size > 250000:
                controller.stop()
        else:
            empty_counter += 1
            if empty_counter > 10:
                controller.stop()
                controller.middle()
コード例 #4
0
def nav_loop():
    robot = UgvPlatform()
    #robot.setColorLut('lut_file.lut')
    #robot.initImu('accelcal.txt', 'magcal.txt')
    mpu_valid = -1
    print "waiting for GPS fix"
    gps_service = GpsService()
    current_pos = gps_service.getPosition()
    while not current_pos.valid:
        time.sleep(1)
        current_pos = gps_service.getPosition()
        print current_pos.valid
    while mpu_valid < 0:
        time.sleep(1.0)
        mpu_valid = mpu9150.mpuInit(1, 10, 4)
    print mpu_valid
    mpu9150.setMagCal('./magcal.txt')
    mpu9150.setAccCal('./accelcal.txt')
    #time.sleep(4)
    wp = StaticWayPointProvider()
    controller = Controller()
    threads.append(controller)
    #gps_service.start()
    robot.setSteeringFailSafe(0.0)
    robot.setSpeedFailSafe(ESC_ARM_ANGLE)
    robot.resetWatchdog()
    robot.setSteeringAngle(0.0)
    robot.setSpeed(0)
    while True:
        robot.resetWatchdog()
        target_pos = wp.getCurrentWayPoint()
        sensors = populateSensorMap(robot, gps_service)
        current_pos = sensors[Controller.gps_key]
        imu_sample = sensors[Controller.imu_key]
        if imu_sample[0] < 0:
            time.sleep(0.05)
            continue
        #print "lat : "+str(current_pos.lat)+" lon :"+str(current_pos.lon)+"imu:"+str(imu_sample)


#		continue
        cmd = controller.getCommand(sensors)
        if cmd == None:
            break
        print str(cmd)
        if cmd.has_key(Controller.next_waypoint_key
                       ) and cmd[Controller.next_waypoint_key] != None and cmd[
                           Controller.next_waypoint_key] == 1:
            wp.getNextWaypoint()
        else:
            robot.setSteeringAngle(cmd[Controller.steering_key])
            robot.setSpeed(cmd[Controller.speed_key])
        time.sleep(0.100)
        robot.setSteeringAngle(0.0)
    robot.setSpeed(0)
    print "Shutdown ESC then quit programm (for safety reason)"
    while True:
        time.sleep(1)
コード例 #5
0
ファイル: main.py プロジェクト: zhenqiang-sun/LocalNote
def init(*args):
    mainController = Controller()

    def clear_root():
        if sys_input(u'初始化目录将会清除目录下所有文件,是否继续?[yn] ') != 'y': return False
        clear_dir('.')
        return True

    def _init(*args):
        if not reduce(lambda x, y: x + y,
                      [l for l in os.walk('.').next()[1:]]) or clear_root():
            sys_print(u'账户仅需要在第一次使用时设置一次')
            while 1:
                isInternational = False
                expireTime = None
                sandbox = sys_input(u'是否是沙盒环境?[yn] ') == 'y'
                if not sandbox:
                    isInternational = sys_input(u'是否是国际用户?[yn] ') == 'y'
                isSpecialToken = sys_input(u'是否使用开发者Token?[yn] ') == 'y'
                if isSpecialToken:
                    token = sys_input(u'开发者Token: ')
                else:
                    token, expireTime = Oauth(
                        sandbox=sandbox,
                        isInternational=isInternational).oauth()
                    # Use special oauth to get token
                    isSpecialToken = True
                if token:
                    mainController.log_in(token=token,
                                          isSpecialToken=isSpecialToken,
                                          sandbox=sandbox,
                                          isInternational=isInternational,
                                          expireTime=expireTime)
                    if mainController.available:
                        mainController.ls.update_config(
                            token=token,
                            isSpecialToken=isSpecialToken,
                            sandbox=sandbox,
                            isInternational=isInternational,
                            expireTime=expireTime)
                        sys_print(u'登陆成功')
                        break
                    else:
                        sys_print(u'登录失败')
                        if sys_input(u'重试登录?[yn] ') != 'y': break
                else:
                    sys_print(u'登录失败')
                    if sys_input(u'重试登录?[yn] ') != 'y': break

    if mainController.available:
        if sys_input(u'已经登录,是否要重新登录?[yn] ') == 'y': _init(*args)
    else:
        _init(*args)
    print('Bye~')
コード例 #6
0
ファイル: main.py プロジェクト: lwabish/LocalEvernote
def init(*args):
    mainController = Controller()

    def _init(*args):
        if not reduce(lambda x, y: x + y, [l
                                           for l in os.walk('.').next()[1:]]):
            sys_print(u'账户仅需要在第一次使用时设置一次')
            while 1:
                product_type = sys_input(
                    u'请选择版本[0]中国版印象笔记[1]国际版Evernote[2]中国版沙盒>')
                if product_type == '0':
                    is_international, is_sandbox = False, False
                elif product_type == '1':
                    sys_print(u'目前尚未支持国际版', 'error')
                    break
                elif product_type == '2':
                    is_international, is_sandbox = False, True
                else:
                    continue
                u = sys_input(u'登陆邮箱>')
                p = getpass.getpass()
                token = TokenFetcher(int(product_type), u, p).fetch_token()
                if token:
                    mainController.log_in(token=token,
                                          isSpecialToken=True,
                                          sandbox=is_sandbox,
                                          isInternational=is_international,
                                          expireTime=None)
                    if mainController.available:
                        mainController.ls.update_config(
                            token=token,
                            isSpecialToken=True,
                            sandbox=is_sandbox,
                            isInternational=is_international,
                            expireTime=None)
                        sys_print(u'登陆成功')
                        mainController.ls.save_credential(u, p)
                        sys_print(u'保存用户身份成功')
                        break
                    else:
                        sys_print(u'登录失败')
                        if sys_input(u'重试登录?[yn] ') != 'y': break
                else:
                    sys_print(u'获取token失败,请检查用户名或密码')
                    if sys_input(u'重试登录?[yn] ') != 'y': break
        else:
            sys_print(u'目录非空,无法初始化', 'warn')
            return

    if mainController.available:
        if sys_input(u'已经登录,是否要重新登录?[yn] ') == 'y': _init(*args)
    else:
        _init(*args)
    print('Bye~')
コード例 #7
0
ファイル: ippg_tree.py プロジェクト: ZhichenML/IPPS
def learn_policy(track_name):

    # Define Pi_0
    steer_prog = Controller([0.97, 0.05, 49.98], 0, 2, 0)
    accel_prog = Controller(
        [3.97, 0.01, 48.79], 0.30, 5, 0, 0.0, 0.01,
        'obs[-1][2][0] > -self.para_condition and obs[-1][2][0] < self.para_condition'
    )
    brake_prog = Controller([0, 0, 0], 0, 2, 0)

    nn_agent = NeuralAgent(track_name=track_name)
    all_observations = []
    all_actions = []
    for i_iter in range(6):
        logging.info("Iteration {}".format(i_iter))
        # Learn/Update Neural Policy
        if i_iter == 0:
            nn_agent.update_neural([steer_prog, accel_prog, brake_prog],
                                   episode_count=200)
            observation_list, action_list = nn_agent.collect_data(
                [steer_prog, accel_prog, brake_prog])
            all_observations += observation_list
            all_observations, _, all_actions = nn_agent.label_data(
                [steer_prog, accel_prog, brake_prog], all_observations)
        else:
            nn_agent.update_neural(tree_program, episode_count=100, tree=True)
            observation_list, action_list = nn_agent.collect_data(tree_program,
                                                                  tree=True)
            all_observations += observation_list
            _, _, all_actions = nn_agent.label_data(tree_program,
                                                    all_observations,
                                                    tree=True)

        # Learn new programmatic policy
        tree_program = DecisionTreeRegressor()
        tree_program.fit(all_observations, all_actions)
        programmatic_game(tree_program, track_name=track_name)
    return None
コード例 #8
0
    def __init__(self,parentWindow,profileNumber):
        self.__controller = Controller()
        self.__builder = Gtk.Builder()
        self.__profileNumber = profileNumber
        self.__parentWindow = parentWindow

        self.__builder.add_from_file('views/NewSaveDialog/NewSaveDialog.glade')
        self.__window = self.__builder.get_object("newSaveWindow")
        self.__builder.get_object("descriptionTextArea").set_wrap_mode(Pango.WrapMode.WORD_CHAR)

        # Handles:
        self.__builder.get_object("cancelButton").connect("clicked", self.__cancelButtonHandle)
        self.__builder.get_object("confirmButton").connect("clicked", self.__confirmButtonHandle)
        self.__window.connect("key-press-event",self.on_key_press_event)
コード例 #9
0
ファイル: main.py プロジェクト: lwabish/LocalEvernote
 def _check_files_format(*args, **kwargs):
     mainController = Controller()
     configFound, wrongFiles = mainController.check_files_format()
     if not configFound:
         sys_print(u'检测到你不在印象笔记主目录中,或配置文件损坏', 'warn')
     elif mainController.available:
         if wrongFiles and not DEBUG:
             for fileName, status in wrongFiles:
                 if status == 1:
                     sys_print(u'检测到错误放置的内容:' + fileName.decode('utf8'),
                               'warn')
                 elif status == 2:
                     sys_print(u'检测到内容过大的文件:' + fileName.decode('utf8'),
                               'warn')
                 elif status == 3:
                     sys_print(u'检测到意义不明的文件:' + fileName.decode('utf8'),
                               'warn')
             sys_print(u'请确保单条笔记有md或html的正文且不大于%s字节' %
                       mainController.ls.maxUpload)
             sys_print(u'请确保没有文件夹格式的附件,或名为.DS_Store的笔记及笔记本。')
         else:
             return fn(mainController, *args, **kwargs)
     elif mainController.ls.get_credential():
         u, p = mainController.ls.get_credential().split('|')
         _, _, sandbox, is_international, expire_time, _, _ = mainController.ls.get_config(
         )
         token = TokenFetcher(is_international, u, p).fetch_token()
         if token:
             mainController.log_in(token=token,
                                   isSpecialToken=True,
                                   sandbox=sandbox,
                                   isInternational=is_international,
                                   expireTime=expire_time)
             if mainController.available:
                 mainController.ls.update_config(
                     token=token,
                     isSpecialToken=True,
                     sandbox=sandbox,
                     isInternational=is_international,
                     expireTime=expire_time)
                 sys_print(u'刷新token成功')
                 return fn(mainController, *args, **kwargs)
             else:
                 sys_print(u'刷新token失败')
         else:
             sys_print(u'获取token失败,请检查用户名密码')
     else:
         sys_print(u'尚未初始化', 'warn')
コード例 #10
0
ファイル: main.py プロジェクト: zhenqiang-sun/LocalNote
def notebook(*args):
    mainController = Controller()
    notebooks = []
    sys_print(u'请输入使用的笔记本名字,留空结束')
    while 1:
        nb = sys_input(u'> ').encode('utf8')
        if nb:
            notebooks.append(nb)
        else:
            break
    if notebooks:
        mainController.ls.update_config(notebooks=notebooks)
        sys_print(u'修改成功')
    else:
        sys_print(u'未修改')
    print('Bye~')
コード例 #11
0
 def _check_files_format(*args, **kwargs):
     mainController = Controller()
     configFound, wrongFiles = mainController.check_files_format()
     if not configFound:
         sys_print(u'检测到你不在印象笔记主目录中,或配置文件损坏', 'warn')
     elif mainController.available:
         if wrongFiles:
             for fileName, status in wrongFiles:
                 if status == 1:
                     sys_print(u'检测到错误放置的内容:'+fileName.decode('utf8'), 'warn')
                 elif status == 2:
                     sys_print(u'检测到内容过大的文件:'+fileName.decode('utf8'), 'warn')
                 elif status == 3:
                     sys_print(u'检测到意义不明的文件:'+fileName.decode('utf8'), 'warn')
             sys_print(u'请确保单条笔记有md或html的正文且不大于%s字节,笔记中没有文件夹格式的附件。'%mainController.ls.maxUpload, 'info')
         else:
             return fn(mainController, *args, **kwargs)
     else:
         sys_print(u'尚未登录', 'warn')
コード例 #12
0
    def __init__(self, parentWindow, controller, save):
        self.__controller = Controller()
        self.__builder = Gtk.Builder()
        self.__controller = controller
        self.__save = save
        self.__parentWindow = parentWindow

        self.__parentWindow = parentWindow

        self.__builder.add_from_file(
            'views/DeleteSaveDialog/DeleteSaveDialog.glade')
        self.__window = self.__builder.get_object("deleteSaveWindow")
        self.__builder.get_object("saveNameLabel").set_text('" {} "'.format(
            save.getName()))

        # Handles:
        self.__builder.get_object("noButton").connect("clicked",
                                                      self.__noButtonHandle)
        self.__builder.get_object("yesButton").connect("clicked",
                                                       self.__yesButtonHandle)
        self.__window.connect("key-press-event", self.on_key_press_event)
コード例 #13
0
    def __init__(self, parentWindow, controller, save):
        self.__controller = Controller()
        self.__builder = Gtk.Builder()
        self.__controller = controller
        self.__save = save
        self.__parentWindow = parentWindow

        self.__parentWindow = parentWindow

        self.__builder.add_from_file('views/ModifySaveDialog/ModifySaveDialog.glade')
        self.__window = self.__builder.get_object("modifySaveWindow")
        self.__builder.get_object("saveNameLabel").set_text('" {} "'.format(save.getName()))

        self.__builder.get_object("nameEntry").set_text(save.getName())
        self.__builder.get_object("descriptionTextArea").get_buffer().set_text(save.getDescription())
        self.__builder.get_object("descriptionTextArea").set_wrap_mode(Pango.WrapMode.WORD_CHAR)
        self.__window.connect("key-press-event",self.on_key_press_event)
        
        # Handles:
        self.__builder.get_object("cancelButton").connect("clicked", self.__cancelButtonHandle)
        self.__builder.get_object("confirmButton").connect("clicked", self.__confirmButtonHandle)
コード例 #14
0
    def __init__(self) -> None:
        """initialization and prepare data."""

        self.config = Config()
        self.model = ModelData()
        self.view = ViewGraph(self.config, main=self)
        self.controller = Controller(self.config, self.model, self.view)
        self.handler = Handler(self.config, self.model, self.view,
                               self.controller)
        self.view.resized.connect(
            self.handler.reshow_elements_after_resize_main_window)
        self.view.bandwidths_clicked_event.connect(
            self.handler.bandwidths_activated)
        self.view.maximums_region_changed_event.connect(
            self.handler.change_range_search_extremums)
        self.view.minimums_region_changed_event.connect(
            self.handler.change_range_search_extremums)
        self.view.edit_max_start_changed_event.connect(
            self.handler.change_text_line_extremums_edits)
        self.view.edit_max_end_changed_event.connect(
            self.handler.change_text_line_extremums_edits)
        self.view.edit_min_start_changed_event.connect(
            self.handler.change_text_line_extremums_edits)
        self.view.edit_min_end_changed_event.connect(
            self.handler.change_text_line_extremums_edits)
        self.view.menu_open_file_event.connect(self.handler.show_dialog_open)
        self.view.open_clicked_event.connect(self.handler.show_dialog_open)
        self.view.menu_save_file_event.connect(
            self.handler.save_button_pressed)
        self.view.save_clicked_event.connect(self.handler.save_button_pressed)
        self.view.menu_close_file_event.connect(
            self.handler.close_button_pressed)
        self.view.add_clicked_event.connect(self.handler.add_new_bandwidth)
        self.view.value_changed_event.connect(self.handler.change_value_slider)
        self.view.toggle_visible_regions_event.connect(
            self.handler.hide_show_regions)
コード例 #15
0
ファイル: main.py プロジェクト: julienbassin/Projet5
def main():
    """
        Function to launch the main program
    """
    app = Controller()
    app.run()
コード例 #16
0
ファイル: mainwindow.py プロジェクト: gpurvis94/plotui
 def __init__(self, parent):
     self._c = Controller(self)
     super().__init__(parent, self._c)
コード例 #17
0
ファイル: main.py プロジェクト: phpengineer/FeelUOwn
        os.mkdir(SONGS_PATH)


if __name__ == "__main__":
    ensure_data_dir()

    app = QApplication(sys.argv)
    app.setQuitOnLastWindowClosed(True)
    app.setWindowIcon(QIcon(WINDOW_ICON))
    app.setApplicationName("FeelUOwn")
    app_event_loop = QEventLoop(app)
    asyncio.set_event_loop(app_event_loop)

    qss = QSS_PATH
    with open(qss, "r") as qssfile:
        app.setStyleSheet(qssfile.read())

    if MODE != DEBUG:
        f_handler = open(LOGFILE, 'w')
        sys.stdout = f_handler
        sys.stderr = f_handler

    w = Controller()
    w.move((QApplication.desktop().width() - w.width())/2,
           (QApplication.desktop().height() - w.height())/2)
    w.show()

    app_event_loop.run_forever()

    sys.exit()
コード例 #18
0
ファイル: tests.py プロジェクト: DanielKusyDev/proton
 def setUp(self) -> None:
     super(ControllerTests, self).setUp()
     self.controller = Controller(self.db_name)
コード例 #19
0
        imu_port = settings['server']['imu']['port']
        imu_client = QTImuClient(server_adress=(server_ip, imu_port))
    if args.slam:
        slam_client = QtSlamClient(server_adress=(slam_ip, slam_port))
    if args.odo:
        odo_port = settings['server']['odo']['port']
        odo_client = QTOdoClient(server_adress=(server_ip, odo_port))

    client_sink = ClientSink(video_client=video_client,
                             steering_client=steering_client,
                             imu_client=imu_client,
                             slam_client=slam_client,
                             odo_client=odo_client)
    controller = Controller(client_sink=client_sink,
                            intake_name=args.folder,
                            dump_video=args.dump_video,
                            dump_steering=args.dump_steering,
                            dump_odo=args.dump_odo)
    other_windows = []
    if args.imu:
        map_controller = MapController(client_sink,
                                       dump_imu=args.dump_imu,
                                       intake_name=args.folder)
        win2 = MapWindow(map_controller)
        other_windows.append(win2)
    win = MainApp(controller, other_windows)
    win.show()
    for window in other_windows:
        window.show()
    sys.exit(app.exec_())
コード例 #20
0
    sensor_map = {}
    sensor_map[Controller.imu_key] = (euler, gyro)
    sensor_map[Controller.gps_key] = gps_service.getPosition()
    sensor_map[Controller.blobs_key] = robot.getBlobPos()
    #TODO: add odometry and blobs
    return sensor_map


if __name__ == "__main__":
    blink = 0xAA
    robot = AvcPlatform()
    #robot.setColorLut('lut_file.lut')
    #robot.initImu('accelcal.txt', 'magcal.txt')
    wp = StaticWayPointProvider()
    #gps_service = GpsService()
    controller = Controller()
    #gps_service.start()
    robot.setServoFailSafe(ESC_SERVO, ESC_ARM_ANGLE)
    robot.setServoFailSafe(STEERING_SERVO, 0.0)
    robot.resetWatchdog()
    robot.setServoAngle(STEERING_SERVO, 0.0)
    robot.setServoAngle(ESC_SERVO, ESC_ARM_ANGLE)
    try:
        while True:
            robot.setLeds(blink)
            robot.resetWatchdog()
            #target_pos= wp.getCurrentWayPoint()
            #current_pos = gps_service.getPosition()
            #sensors = populateSensorMap(robot, gps_service)
            sensors = {}
            #if len(sensors) == 0:
コード例 #21
0
import falcon
from controllers import Controller

api = falcon.API()
api.add_route('/call', Controller())
コード例 #22
0
def learn_policy(track_name, test_program, seed, program_from_file):

    # Define Pi_0
    # def __init__(self, pid_constants=(0, 0, 0), pid_target=0.0, pid_sensor=0, pid_sub_sensor=0, pid_increment=0.0, para_condition=0.0, condition='False')
    #steer_prog = Controller(pid_constants=[0.97, 0.05, 49.98], pid_target=0, pid_sensor=2, pid_sub_sensor=0)
    #accel_prog = Controller(pid_constants=[3.97, 0.01, 48.79], pid_target=0.30, pid_sensor=5, pid_sub_sensor=0, pid_increment=0.0, para_condition=0.01, condition='obs[-1][2][0] > -self.para_condition and obs[-1][2][0] < self.para_condition')
    #brake_prog = Controller(pid_constants=[0, 0, 0], pid_target=0, pid_sensor=2, pid_sub_sensor=0)

    steer_prog = Controller(pid_constants=[
        0.8811106985926564, 0.01712974054406783, 49.947819771350105
    ],
                            pid_target=-0.000664433050917396,
                            pid_sensor=2,
                            pid_sub_sensor=0)
    accel_prog = Controller(
        pid_constants=[
            4.1120530179121175, 0.13995816823737148, 48.684311417901206
        ],
        pid_target=2.168666263543196,
        pid_sensor=5,
        pid_sub_sensor=0,
        pid_increment=0.20990457893971481,
        para_condition=0.0038142532010616106,
        condition=
        'obs[-1][2][0] > -self.para_condition and obs[-1][2][0] < self.para_condition'
    )
    brake_prog = Controller(pid_constants=[
        -0.06600550019147762, 0.01192179945036169, -0.03761014893630601
    ],
                            pid_target=0.0012019017967644296,
                            pid_sensor=2,
                            pid_sub_sensor=0)

    if test_program == 1:
        for seeds in {1337, 1338, 1339, 1340, 1341, 1342, 1343}:
            random.seed(seeds)
            programmatic_game(steer_prog,
                              accel_prog,
                              brake_prog,
                              track_name=track_name)
            print('Finish')
        return

    nn_agent = NeuralAgent(track_name=track_name)

    if program_from_file:
        logging.info("Now we load the weight")
        try:
            nn_agent.actor.model.load_weights("./model_1343/actormodel_" +
                                              str(1343) + '_' + str(900) +
                                              ".h5")
            nn_agent.critic.model.load_weights("./model_1343/criticmodel_" +
                                               str(1343) + '_' + str(900) +
                                               ".h5")
            nn_agent.actor.target_model.load_weights(
                "./model_1343/actormodel_" + str(1343) + '_' + str(900) +
                ".h5")
            nn_agent.critic.target_model.load_weights(
                "./model_1343/criticmodel_" + str(1343) + '_' + str(900) +
                ".h5")
            logging.info("Weight load successfully")
        except:
            logging.info("Cannot find the weight")
    else:
        # 1. train the neural network
        nn_agent.update_neural([steer_prog, accel_prog, brake_prog],
                               episode_count=1000,
                               tree=False,
                               seed=seed)

    # 2. Collect data
    all_observations = []
    all_actions = []
    data = dict(obs=[], act=[])

    relabel_count = 1
    for relabel_ind in range(relabel_count):
        logging.info("\n Iteration {}".format(relabel_ind))
        for i_iter in range(3):  # optimize controller parameters
            # Learn/Update Neural Policy
            #if i_iter == 0:
            #    nn_agent.update_neural([steer_prog, accel_prog, brake_prog], episode_count=2000)
            #else:
            #    nn_agent.update_neural([steer_prog, accel_prog, brake_prog], episode_count=100)

            # Collect Trajectories

            #if np.mod(i_iter, 3) == 0:
            #    relaunch=True  # relaunch TORCS every 3 episode because of the memory leak error
            #else:
            #    relaunch=False
            observation_list, action_list = nn_agent.collect_data(
                [steer_prog, accel_prog, brake_prog])
            #print('observation_list', observation_list[0])
            #print('\n action_list', action_list[0])
            data['obs'].append(observation_list)
            data['act'].append(action_list)

            all_observations += observation_list
            all_actions += action_list
            # Relabel Observations
            #_, _, all_actions = nn_agent.label_data([steer_prog, accel_prog, brake_prog], all_observations)
            #print('\n all_actions', all_actions[0])

        filename = "./Fig/data_" + str(seed)
        dirname = os.path.dirname(filename)
        if not os.path.exists(dirname):
            os.makedirs(dirname)
        with open(filename, 'wb') as f:
            pickle.dump(data, f)

        # 3. Learn new programmatic policy
        logging.info("Learn programmatic policy! \n")
        #print('observations: ', np.array(all_observations)[0])
        #print('actions', np.array(all_actions).shape)
        param_finder = ParameterFinder(all_observations, all_actions,
                                       steer_prog, accel_prog, brake_prog)
        #print('observations: ', np.array(all_observations).shape())
        #print('actions', np.array(all_actions).shape())

        #steer_ranges = [[create_interval(steer_prog.pid_info()[0][const], 0.05) for const in range(3)], create_interval(steer_prog.pid_info()[1], 0.01)]
        #accel_ranges = [[create_interval(accel_prog.pid_info()[0][const], 0.05) for const in range(3)], create_interval(accel_prog.pid_info()[1], 0.5), create_interval(accel_prog.pid_info()[2], 0.1), create_interval(accel_prog.pid_info()[3], 0.01)]
        #brake_ranges = [[create_interval(brake_prog.pid_info()[0][const], 0.05) for const in range(3)], create_interval(brake_prog.pid_info()[1], 0.001)]
        steer_ranges = [
            create_interval(steer_prog.pid_info()[0][const], 0.05)
            for const in range(3)
        ]
        steer_ranges.append(create_interval(steer_prog.pid_info()[1], 0.01))

        accel_ranges = [
            create_interval(accel_prog.pid_info()[0][const], 0.05)
            for const in range(3)
        ]
        accel_ranges.append(create_interval(accel_prog.pid_info()[1], 0.5))
        accel_ranges.append(create_interval(accel_prog.pid_info()[2], 0.1))
        accel_ranges.append(create_interval(accel_prog.pid_info()[3], 0.01))

        brake_ranges = [
            create_interval(brake_prog.pid_info()[0][const], 0.05)
            for const in range(3)
        ]
        brake_ranges.append(create_interval(brake_prog.pid_info()[1], 0.001))

        pid_ranges = [steer_ranges, accel_ranges, brake_ranges]
        new_paras = param_finder.pid_parameters(pid_ranges)

        steer_prog.update_parameters(
            [new_paras[i] for i in ['sp0', 'sp1', 'sp2']], new_paras['spt'])
        accel_prog.update_parameters(
            [new_paras[i] for i in ['ap0', 'ap1', 'ap2']], new_paras['apt'],
            new_paras['api'], new_paras['apc'])
        brake_prog.update_parameters(
            [new_paras[i] for i in ['bp0', 'bp1', 'bp2']], new_paras['bpt'])

        for i_iter in range(1):
            #logging.info("\n Program Iteration {}".format(i_iter))
            program_observations, program_actions = programmatic_game(
                steer_prog, accel_prog, brake_prog, track_name=track_name)

            # Relabel Observations
            _, _, program_actions = nn_agent.label_data(
                [steer_prog, accel_prog, brake_prog], program_observations)
            #print('\n all_actions', all_actions[0])

            all_observations += program_observations
            all_actions += program_actions

    logging.info("Steering Controller" + str(steer_prog.pid_info()))
    logging.info("Acceleration Controller" + str(accel_prog.pid_info()))
    logging.info("Brake Controller" + str(brake_prog.pid_info()))

    programmatic_game(steer_prog,
                      accel_prog,
                      brake_prog,
                      track_name=track_name)
コード例 #23
0
ファイル: gamestate.py プロジェクト: unnheulu/Luna-Pyweek
 def __init__(self):
     self.controller = Controller(self)
     
     self.side = PlayerSide(self)
     self.map = Map(self)
     self.gui = GameStateGUI(self)
コード例 #24
0
ファイル: main.py プロジェクト: hsaafan/TEPSimulation
                    action='store_true'
                    )

cli_group.add_argument('-p', '--path',
                       help='change the default settings directory',
                       type=str,
                       default='settings/'
                       )
cli_group.add_argument('-t', '--time',
                       help='the time to simulate in hours',
                       type=float,
                       default=24)
cli_group.add_argument('-dt', '--step',
                       help='the time step to use when simulating in hours',
                       type=float,
                       default=0.1)
cli_group.add_argument('-s', '--seed',
                       help='the seed to use for the simulation',
                       type=int,
                       default=None)

args = parser.parse_args()


utils.set_seed(args.seed)

controller = Controller(use_gui=args.gui,
                        time=args.time,
                        time_step=args.step,
                        path=args.path)
コード例 #25
0
核心思想是: 分层和解耦, 提高了程序的扩展性、可重用性、可维护性和可读性

模型-视图-控制器模式是应用到面向对象编程的 SoC(关注点分离)原则

是一种非常通用的设计模式,虽然我私人会认为不算是严格的设计模式,更像是一种指导架构的架构模式。

- Model(模型) 是核心的部分, 代表着应用的信息本源, 包含和管理(业务)逻辑, 数据和状态以及应用的规则.
- View(视图) 是模型的可视化表现, 它只决定怎么展示数据, 并不处理数据, 多为前端应用
- Controller(控制器) 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。


目前我了解到的, 基本上所有流行的Web框架例如 PHP中的 Laravel和Yii, Python中的Django
都有用到MVC或者其变种, 例如Django的MVT( Model, View, Template)
    View 视图, 和MVC里的C控制器功能相同, 接收请求, 处理业务逻辑
    Template 模板, 与MVC里的V视图功能相同, 有点不同的是返回html涉及到的模板语言会不同, 基本作用都是展示数据
    而Urlconf, 更像是控制器, 根据正则url匹配不同的视图来响应请求
"""

from models import ProductModel
from views import ProductView
from controllers import Controller

if __name__ == '__main__':
    model = ProductModel()
    view = ProductView()
    controller = Controller(model, view)

    controller.show_item_list()
    controller.show_item_info('milk')
    controller.show_item_info('apple')
コード例 #26
0
def learn_policy(track_name, seed):

    Program_save = dict(total_reward=[],
                         total_step=[],
                         ave_reward=[],
                         distRaced=[],
                         lapTimes=[],
                         avelapTime=[],
                         ave_sp=[],
                         max_sp=[],
                         min_sp=[],
                         )

    # Define Pi_0
    steer_prog = Controller([0.97, 0.05, 49.98], 0, 2, 0)
    accel_prog = Controller([3.97, 0.01, 48.79], 0.30, 5, 0, 0.0, 0.01, 'obs[-1][2][0] > -self.para_condition and obs[-1][2][0] < self.para_condition')
    brake_prog = Controller([0, 0, 0], 0, 2, 0)

    programmatic_game(steer_prog, accel_prog, brake_prog, track_name=track_name)

    nn_agent = NeuralAgent(track_name=track_name)
    '''
    logging.info("Now we load the weight")
    try:
        nn_agent.actor.model.load_weights("./model_1343/actormodel_"+str(seed)+'_'+str(900)+".h5")
        nn_agent.critic.model.load_weights("./model_1343/criticmodel_"+str(seed)+'_'+str(900)+".h5")
        nn_agent.actor.target_model.load_weights("./model_1343/actormodel_"+str(seed)+'_'+str(900)+".h5")
        nn_agent.critic.target_model.load_weights("./model_1343/criticmodel_"+str(seed)+'_'+str(900)+".h5")
        logging.info("Weight load successfully")
    except:
        logging.info("Cannot find the weight")'''

    all_observations = []
    all_actions = []
    for i_iter in range(100):
        logging.info("Iteration {}".format(i_iter))
        # Learn/Update Neural Policy


        if i_iter == 0:
            nn_agent.update_neural([steer_prog, accel_prog, brake_prog], episode_count=20, seed=seed)
        else:
            nn_agent.update_neural([steer_prog, accel_prog, brake_prog], episode_count=20, seed=seed)

        # Collect Trajectories
        observation_list, action_list = nn_agent.collect_data([steer_prog, accel_prog, brake_prog])
        all_observations += observation_list
        # Relabel Observations
        _,_, all_actions = nn_agent.label_data([steer_prog, accel_prog, brake_prog], all_observations)

        # Learn new programmatic policy
        param_finder = ParameterFinder(all_observations, all_actions, steer_prog, accel_prog, brake_prog)

        #steer_ranges = [[create_interval(steer_prog.pid_info()[0][const], 0.05) for const in range(3)], create_interval(steer_prog.pid_info()[1], 0.01)]
        #accel_ranges = [[create_interval(accel_prog.pid_info()[0][const], 0.05) for const in range(3)], create_interval(accel_prog.pid_info()[1], 0.5), create_interval(accel_prog.pid_info()[2], 0.1), create_interval(accel_prog.pid_info()[3], 0.01)]
        #brake_ranges = [[create_interval(brake_prog.pid_info()[0][const], 0.05) for const in range(3)], create_interval(brake_prog.pid_info()[1], 0.001)]
        steer_ranges = [create_interval(steer_prog.pid_info()[0][const], 0.05) for const in range(3)]
        steer_ranges.append(create_interval(steer_prog.pid_info()[1], 0.01))

        accel_ranges = [create_interval(accel_prog.pid_info()[0][const], 0.05) for const in range(3)]
        accel_ranges.append(create_interval(accel_prog.pid_info()[1], 0.5))
        accel_ranges.append(create_interval(accel_prog.pid_info()[2], 0.1))
        accel_ranges.append(create_interval(accel_prog.pid_info()[3], 0.01))

        brake_ranges = [create_interval(brake_prog.pid_info()[0][const], 0.05) for const in range(3)]
        brake_ranges.append(create_interval(brake_prog.pid_info()[1], 0.001))

        pid_ranges = [steer_ranges, accel_ranges, brake_ranges]
        #logging.info(pid_ranges)
        new_paras = param_finder.pid_parameters(pid_ranges)

        steer_prog.update_parameters([new_paras[i] for i in ['sp0', 'sp1', 'sp2']], new_paras['spt'])
        accel_prog.update_parameters([new_paras[i] for i in ['ap0', 'ap1', 'ap2']], new_paras['apt'], new_paras['api'], new_paras['apc'])
        brake_prog.update_parameters([new_paras[i] for i in ['bp0', 'bp1', 'bp2']], new_paras['bpt'])

        _,_, total_reward, total_step, ave_reward, distRaced, lapTimes, avelapTime, ave_sp, max_sp, min_sp = programmatic_game(steer_prog, accel_prog, brake_prog)
        Program_save['total_reward'].append(total_reward)
        Program_save['total_step'].append(total_step)
        Program_save['ave_reward'].append(ave_reward)
        Program_save['distRaced'].append(distRaced)
        Program_save['lapTimes'].append(lapTimes)
        Program_save['avelapTime'].append(avelapTime)
        Program_save['ave_sp'].append(ave_sp)
        Program_save['max_sp'].append(max_sp)
        Program_save['min_sp'].append(min_sp)


        filename = "./Fig/program_save_" + str(seed)
        dirname = os.path.dirname(filename)
        if not os.path.exists(dirname):
            os.makedirs(dirname)
        with open(filename,'wb') as f:
            pickle.dump(Program_save, f)
    logging.info("Steering Controller" + str(steer_prog.pid_info()))
    logging.info("Acceleration Controller" + str(accel_prog.pid_info()))
    logging.info("Brake Controller" + str(brake_prog.pid_info()))

    return None
コード例 #27
0
ファイル: main.py プロジェクト: moorecode/pi-water-monitor
                   retain=False)
    print("publish", "water-monitor/" + name + "/flow-rate:", value)


reader1 = Reader("water-main", 20)
readers.append(reader1)

water_sensor1 = water_sensor("water-main",
                             read_rate=30,
                             on_read=on_read,
                             read=reader1.read)
water_sensor1.read_loop_start()

sensors.append(water_sensor1)

controller1 = Controller("water-main", 18)
controllers.append(controller1)

client.loop_start()


def teardown():
    for controller in controllers:
        controller.teardown()

    water_sensor1.read_loop_stop()
    client.loop_stop()
    client.disconnect()


try: