Beispiel #1
0
 def __init__(self, app_data):
     self.app_data = app_data
     # Build GUI
     super(Nucleus, self).__init__()
     self.resize(1100, 600)
     setters.set_uniform_margins(self, 15)
     self.setWindowTitle('Nucleus 2020')
     self.status = StatusBar(self)
     self.set_menu()
     self.set_docks()
     self.desk = Desk(self.app_data, self.status, self.on_click_context)
     self.setCentralWidget(self.desk)
     self.show()
Beispiel #2
0
    def __init__(self, debug=False, desk=None):
        super().__init__()

        _desk = desk or Desk(True)
        self.inbox = _desk.inbox
        self.outbox = _desk.outbox
        self.result = None
 def get_desk(self, deskID):
     query = "SELECT deskName, languageID FROM desk WHERE (deskID = %s)"
     cursor = self.dbfile.cursor()
     cursor.execute(query, (deskID, ))
     deskinfo = cursor.fetchone()
     desk = (Desk(deskinfo[0]), deskinfo[1])
     return desk
Beispiel #4
0
	def __init__(self, master=None, player_side=False, difficult=2, ball_color='blue', rackets_color='red', width=200,
				 height=110, ball_height=15, ball_width=15, racket_width=15, racket_height=30):
		self.master = master
		self.difficult = difficult
		self.player_side = player_side
		self.width = width
		self.height = height
		if difficult == 1:
			player_speed = 5
			computer_speed = 3
		elif difficult == 2:
			player_speed = 4
			computer_speed = 3.5
		elif difficult == 3:
			player_speed = 3
			computer_speed = 4
		else:
			player_speed = 4
			computer_speed = 4

		if player_side is None:
			player1_side = False
			player2_side = True
		else:
			player1_side = player_side
			player2_side = not player_side
		self.desk = Desk(master, width=width, height=height)
		self.player1 = Player(self, width=racket_width, height=racket_height, side=player1_side, speed=player_speed, color=rackets_color)
		self.player2 = Player(self, width=racket_width, height=racket_height, side=player2_side, speed=computer_speed, color=rackets_color)
		self.ball = Ball(self.desk, ball_width, ball_height, ball_color)
Beispiel #5
0
 def __init__(self, debug=False, desk=None):
     self.staff = []
     #self.office = [Desk(True)]
     _desk = desk or Desk(False)
     self.inbox = _desk.inbox
     self.outbox = _desk.outbox
     self.result = None
def desk_add_page():
    db = current_app.config["db"]
    form = DeskEditForm()
    languages = db.get_languages()
    if form.validate_on_submit():
        deskName = form.data["deskName"]
        languageID = request.form['languageID']
        db = current_app.config["db"]
        desk = Desk(deskName)
        deskID = db.add_desk(desk, current_user.userID, languageID)
        flash("Desk added.")
        return redirect(url_for("desk_page", deskID=deskID))
    return render_template("desk_edit.html", form=form, languages=languages)
 def get_desks(self, ID):
     desks = []
     query = "SELECT deskID, deskName, languageID FROM desk NATURAL JOIN userdesks WHERE (userID = %s) ORDER BY deskID"
     cursor = self.dbfile.cursor()
     cursor.execute(query, (ID, ))
     for deskID, deskName, languageID in cursor:
         if languageID is not None:
             langstr = self.get_language(languageID)
         else:
             langstr = ""
         desk = Desk(deskName)
         desks.append((deskID, desk, langstr))
     return desks
def desk_edit_page(deskID):
    db = current_app.config["db"]
    desk = db.get_desk(deskID)[0]
    form = DeskEditForm()
    languages = db.get_languages()
    if form.validate_on_submit():
        deskName = form.data["deskName"]
        languageID = request.form['languageID']
        desk = Desk(deskName)
        db.update_desk(deskID, desk, languageID)
        flash("Desk data updated.")
        return redirect(url_for("desk_page", deskID=deskID))
    form.deskName.data = desk.deskName
    return render_template("desk_edit.html", form=form, languages=languages)
 def search_desks(self, search):
     desks = []
     query = "SELECT * FROM desk WHERE deskName LIKE %s"
     cursor = self.dbfile.cursor()
     search = '%' + search + '%'
     cursor.execute(query, (search, ))
     for deskID, deskName, languageID in cursor:
         if languageID is not None:
             langstr = self.get_language(languageID)
         else:
             langstr = ""
         desk = Desk(deskName)
         desks.append((deskID, desk, langstr))
     return desks
Beispiel #10
0
    def __load_desk_dictionary(self):
        """
        Load the config file and initialize the desk mapping object
        :return: None
        """

        # Get info for each desk
        for d in CONFIG.desks:

            # Initialize sensor
            sensor_obj = OmronD6T(d.sensor.i2c_bus, d.sensor.i2c_address)

            # Append id, pin, desk object to map
            self.__desk_dict[d.id] = (sensor_obj, Desk(d.name, d.id))

            # Print additional information in debug mode
            if CONFIG.debug_config.enabled:
                print(
                    f"Added Desk to DeskSensorTable: [ID]: {d.id}, [Name]: {d.name}, [Sensor Type]: {d.sensor.sensor_type}"
                )
Beispiel #11
0
def main():
    config = Config()
    sensor = UltrasonicSensor(config.sensorConfig)
    desk = Desk(config.deskConfig, sensor)
    desk.stop()

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(('', 80))
    s.listen(5)

    sPoller = uselect.poll()
    sPoller.register(s, uselect.POLLIN)

    while True:
        # Poll every 10 milliseconds for a connection
        res = sPoller.poll(10)
        if res:
            conn, addr = s.accept()
            # print('Got a connection from %s' % str(addr))
            statusCode, response = handle(conn)
            sendResponse(statusCode, response)
        else:
            desk.adjust()
Beispiel #12
0
 def refresh_desk(self):
     time.sleep(2)
     d = Desk(self.side, self.desk_coords)
     self.position = d.get_position()
     print 'refreshed'
Beispiel #13
0
 def __init__(self):
     self.staff = []
     self.office = [Desk(False)]
     self.log = secretary.hire( "Program", debug=True, logfile=\
                 ("run" + datetime.now().strftime('%y%m%d') + ".log") )
Beispiel #14
0
def setup():
    global d
    print("Main starting")
    d = Desk(b'\xe6\xcc\xe3W\x9aA')
    print("Connected")
Beispiel #15
0
    def __init__(self,
                 camera_attached=False,
                 useIK=True, # uses IK by default!
                 actionRepeat=50,
                 renders=False,
                 camera_view=0,
                 task_switch_camera_view=False,
                 maxSteps=100,
                 simulatedGripper=True, # 2-finger gripper
                 randObjPos=False,
                 task=0, # target number
                 learning_param=0,
                 sampling_freq = 240.0):

        self.name = 'ur5GymEnv'
        self.sampling_freq = sampling_freq # simulation sampling frequency
        self.pix_size = 0.003125
        self.obj_ids = {'fixed': [], 'rigid': [], 'deformable': []}
        self.rest_poses = [-math.pi, -math.pi/2, math.pi/2, -math.pi/2, -math.pi/2, 0]
        # self.agent_cams = cameras.RealSenseD415.CONFIG
        self.assets_root = 'assets/'
        self.simulatedGripper = simulatedGripper
        self.renders = renders
        self.actionRepeat = actionRepeat
        self.useIK = useIK
        self.maxSteps = maxSteps
        self.randObjPos = randObjPos
        self.task = task
        self.learning_param = learning_param
        self.offset = 0.15 # random object pos max offsets
        self.desired_pick_height = 0.2 # desired height to reach for picking up objects

        # setup pybullet sim:
        if self.renders:
            pybullet.connect(pybullet.GUI)
            target = pybullet.getDebugVisualizerCamera()[11]
            if camera_view==0 or (task_switch_camera_view and task==0):
                pybullet.resetDebugVisualizerCamera(cameraDistance=0.1, cameraYaw=180,
                    cameraPitch=-35, cameraTargetPosition=[0.0, 0.5, 0.85]) # regular
            elif camera_view==1 or (task_switch_camera_view and task==2):
                pybullet.resetDebugVisualizerCamera(cameraDistance=0.2, cameraYaw=90,
                    cameraPitch=-10, cameraTargetPosition=[1.0, 0.0, 0.7]) # side view button side
            elif camera_view==2:
                pybullet.resetDebugVisualizerCamera(cameraDistance=0.2, cameraYaw=270,
                    cameraPitch=-10, cameraTargetPosition=[-1.0, 0.0, 0.7]) # side view slide side
        else:
            pybullet.connect(pybullet.DIRECT)

        pybullet.setTimeStep(1./self.sampling_freq)
        pybullet.setGravity(0,0,-9.8)
        pybullet.setRealTimeSimulation(False)
        # pybullet.setRealTimeSimulation(True)
        pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_RENDERING, 0)
        self.gox = pybullet.addUserDebugParameter("orientationX",-3.14, 3.14, 0)
        self.goy = pybullet.addUserDebugParameter("orientationY",-3.14, 3.14, 0)
        self.goz = pybullet.addUserDebugParameter("orientationZ",-3.14, 3.14, 0)
        self.gow = pybullet.addUserDebugParameter("orientationW",-3.14, 3.14, 1)
        pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_GUI, 0)
        pybullet.setPhysicsEngineParameter(enableFileCaching=0)
        # pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_WIREFRAME,1)

        # floor:
        self.plane = pybullet.loadURDF(PLANE_URDF_PATH, [0, 0, -0.001])
        
        # setup desk:
        self.desk = Desk()

        # setup robot arm:
        self.ur5 = UR5()

        # object:
        self.initial_obj_pos = [0.2, -0.5, 0.6] # initial object pos
        self.initial_target_pos = [0.4, -0.1, 0.0] # initial drop-off position
        self.obj = pybullet.loadURDF(CUBE_URDF_PATH, self.initial_obj_pos)
        self.obj_ids['rigid'].append(self.obj)

        # gym info:
        # color_tuple = [
        #     gym.spaces.Box(0, 255, config['image_size'] + (3,), dtype=np.uint8)
        #     for config in self.ur5.agent_cams
        # ]
        # depth_tuple = [
        #     gym.spaces.Box(0.0, 20.0, config['image_size'], dtype=np.float32)
        #     for config in self.ur5.agent_cams
        # ]
        # self.observation_space = gym.spaces.Dict({
        #     'color': gym.spaces.Tuple(color_tuple),
        #     'depth': gym.spaces.Tuple(depth_tuple),
        # })
        self._action_bound = 1.0 # delta limits
        action_high = np.array([self._action_bound] * self.ur5.action_dim)
        self.action_space = spaces.Box(-action_high, action_high, dtype='float32')

        pybullet.configureDebugVisualizer(pybullet.COV_ENABLE_RENDERING, 1)

        self.reset()
Beispiel #16
0
class Nucleus(QtGui.QMainWindow):
    """
	Nucleus is a Sulzer software application that aims to track, schedule, and 
	optimize the work performed by the CAD Department at Sulzer RES La Porte.

	Parameters
	----------
	app_data : AppData
		Core application data source.

	Attributes
	----------
	status : StatusBar
	menu_view : MenuView
	part_locator : PartLocator
	weekend_signup : WeekendSignUp
	weekend_roster : WeekendRoster
	desk : Desk

	"""
    def __init__(self, app_data):
        self.app_data = app_data
        # Build GUI
        super(Nucleus, self).__init__()
        self.resize(1100, 600)
        setters.set_uniform_margins(self, 15)
        self.setWindowTitle('Nucleus 2020')
        self.status = StatusBar(self)
        self.set_menu()
        self.set_docks()
        self.desk = Desk(self.app_data, self.status, self.on_click_context)
        self.setCentralWidget(self.desk)
        self.show()

    def set_docks(self):
        """Display ``QDockWidgets`` per user registration level."""
        self.part_locator = PartLocator(Path.PART_LOC_XLSX)
        self.addDockWidget(QtCore.Qt.RightDockWidgetArea,
                           self.part_locator.view)

        if self.app_data.users.my_level is None:
            # User is not registered
            return

        self.weekend_roster = WeekendRoster(self.app_data.users)
        self.addDockWidget(QtCore.Qt.RightDockWidgetArea,
                           self.weekend_roster.view)
        self.weekend_signup = WeekendSignUp(self.app_data.users.my_folder)
        self.addDockWidget(QtCore.Qt.RightDockWidgetArea,
                           self.weekend_signup.view)

        if self.app_data.users.my_level == 'Technician':
            self.weekend_roster.view.hide()

    def set_menu(self):
        """Set ``MenuBar`` state per user registration level."""
        self.menu_view = MenuView(self)
        if self.app_data.users.my_level is None:
            # Disable certain features for non-registered members.
            self.menu_view.file_menu.setEnabled(False)
            self.menu_view.view_menu.setEnabled(False)
            self.menu_view.admin_menu.setEnabled(False)
        else:
            self.menu_view.new.triggered.connect(self.on_click_new)
            self.menu_view.open.triggered.connect(self.on_click_open)
            self.menu_view.save.triggered.connect(self.on_click_save)
            self.menu_view.complete.triggered.connect(self.on_click_complete)
            self.menu_view.active_projects.triggered.connect(
                lambda: ActiveProjectsDialog().exec_())
            self.menu_view.upload_data.triggered.connect(self.on_click_upload)

        # Visible to all users.
        self.menu_view.about.triggered.connect(lambda: AboutDialog().exec_())
        self.menu_view.version.triggered.connect(
            lambda: startfile(Path.VERSION_DOC))

    def on_click_new(self):
        """Process a request to create a new ``Job``."""
        job_num, ok = QtGui.QInputDialog.getInt(self, 'New', 'Job Number:')
        if ok:
            job_num = str(job_num)
            request = NewJobRequest(job_num, self.app_data.users.log)
            try:
                # An approved request initializes job files and directories.
                if request.approved():
                    self.load_job(job_num)
            except (JobNumberError, ExistingJobError, OSError, WorkspaceError,
                    IOError, UnknownError) as error:
                ExceptionMessageBox(error).exec_()

    def on_click_open(self):
        """Prompt user for job number input."""
        job_num, ok = QtGui.QInputDialog.getInt(self, 'Open', 'Job Number:')
        if ok:
            self.process_open_job_request(str(job_num))

    def process_open_job_request(self, job_num):
        """Process a request to open an existing ``Job``.

		Parameters
		----------
		job_num : str
			The 6-digit job number.

		"""
        try:
            if len(job_num) != 6:
                raise JobNumberError()
            self.load_job(job_num)
        except (JobNumberError, OSError, JobNotFoundError, JobInUseError,
                IOError, EOFError) as error:
            ExceptionMessageBox(error).exec_()

    def on_click_save(self):
        """Process a request to save ``Job`` data."""
        self.desk.save()

    def on_click_complete(self):
        """Initiate a request to complete the active ``JobFolder``."""
        try:
            job_num = self.desk.active_folder
            job_folder = self.desk.job_folder(job_num)
            job, lock = job_folder.job_and_lock()
            if self.process_complete_job_request(job_num, job, lock):
                self.desk.close_folder(job_num)

        except KeyError:
            # If 'Home' interface is active.
            self.status.showMessage('Cannot complete a job in this context.',
                                    2000)

    def process_complete_job_request(self, job_num, job=None, lock=None):
        """Process a request to remove job files from ``Nucleus``.
		
		Parameters
		----------
		job_num : str
			The 6-digit job number.

		job : Job or None
			A collection of work orders requesting completion.

		lock : GateKeeper or None
			Controls read and write access to `job` applicaton files.

		Returns
		-------
		True
			If `job` files were removed from ``Nucleus``.
		
		"""
        self.app_data.users.log('initiating a complete job request for %s' %
                                job_num)
        request = CompleteJobRequest(
            job_num, self.app_data.users.supervisor_email_addresses, job, lock)
        try:
            if not request.approved():
                self.app_data.users.log(
                    '%s complete job request was not approved' % job_num)
                return
        except (JobInUseError, IOError, EOFError, ProjectsFolderRootError,
                DestinationError) as error:
            self.app_data.users.log(error)
            ExceptionMessageBox(error).exec_()
        else:
            self.status.showMessage('Updating your jobs...')
            self.desk.refresh_home()

            # Log data to user file
            self.app_data.users.log('%s completed, due by %s' %
                                    (job_num, JobIO.job_due_date(job)))
            self.app_data.users.log('%s drawing count: %d' %
                                    (job_num, request.dwg_count))
            for project in request.projects:
                self.app_data.users.log('project:%s,%s' %
                                        (request.projects[project].alias_num,
                                         request.projects[project].owner))

            self.status.showMessage('%s closed successfully.' % job_num)
            return True

    def is_admin(self):
        """Confirm that a user has admin credentials for a restricted action.

		Returns
		-------
		True
			If user has admin credentials.

		Raises
		------
		PasswordError
			If user enters incorrect password.

		"""
        password, ok = QtGui.QInputDialog.getText(
            self, 'Admin', 'Password:'******'attempting to log in as admin')
        if ok:
            if password == 'respect':
                return True
            raise PasswordError()

    def on_click_upload(self):
        """Process request to load work center data."""
        try:
            if self.is_admin():
                self._intent = GetWorkCenterSource()
        except PasswordError as error:
            ExceptionMessageBox(error).exec_()
            self.on_click_upload()
        else:
            self.desk.refresh_home()

    def load_job(self, job_num):
        """Send a ``Job`` to `desk` and open for viewing.

		Parameters
		----------
		job_num : str
			The 6-digit job number.

		Raises
		------
		JobNotFoundError
		JobInUseError
		IOError
		EOFError

		"""
        job, lock = JobIO.job_and_lock(job_num)
        self.desk.open_job_folder(job, lock)

    def closeEvent(self, event):
        """Verify that `desk` does not have open ``JobFolders`` before closing 
		window.

		Parameters
		----------
		event : QEvent
			Window close.

		"""
        if self.desk.cleared:
            self.app_data.users.log('logged out')
            event.accept()
        else:
            OrphanMessageBox('Info',
                             ['Open jobs must be closed before exiting.'],
                             'information').exec_()
            event.ignore()

    def on_click_context(self):
        """Process a context menu selection."""
        action = str(self.desk.home.schedule.sender().text())
        if action == 'Open':
            self.process_open_job_request(
                self.desk.home.schedule.selected_job_num)

        elif action == 'Complete':
            job_num = self.desk.home.schedule.selected_job_num
            if self.desk.folder_index(job_num):
                # folder_index is used to determine if the associated
                # JobFolder is open. If the user already has this JobFolder
                # open, route this process to the file menu action.
                self.desk.activate_folder(job_num)
                self.on_click_complete()
            else:
                self.process_complete_job_request(job_num)

        elif action == 'Refresh':
            self.desk.refresh_home()
Beispiel #17
0
 def __init__(self):
     d = Desk()
     self.position = d.get_position()
     self.side = d.side
     self.desk_coords = d.desk_coords
     self.desk = d
Beispiel #18
0
from desk import Desk

peter_game = Desk()
peter_game.shuffle()
#peter_game.print_all()

peter_game.setup_player("Peter")
peter_game.setup_player("Sally")
peter_game.setup_table()
peter_game.print_table()
print "############################# GAME START ###################################"
#peter_game.Players[0].take_coin([0,0,0,0,0,1])
peter_game.take_coin(peter_game.Players[0], [0, 2, 0, 0, 0])
#peter_game.print_table()
peter_game.take_coin(peter_game.Players[0], [2, 0, 0, 0, 0])
#peter_game.print_table()
peter_game.take_coin(peter_game.Players[0], [0, 0, 2, 0, 0])
#peter_game.print_table()
peter_game.take_coin(peter_game.Players[0], [0, 0, 0, 2, 0])
#peter_game.print_table()
peter_game.take_coin(peter_game.Players[0], [0, 0, 0, 0, 2])
peter_game.take_coin(peter_game.Players[0], [0, 0, 1, 1, 1])
peter_game.take_coin(peter_game.Players[0], [0, 1, 1, 1, 0])
peter_game.take_coin(peter_game.Players[0], [1, 1, 1, 0, 0])
print "================= take  coins ==================="
peter_game.print_table()

print "================= take  cards ==================="
#peter_game.print_table()

peter_game.take_card(peter_game.Players[0],
Beispiel #19
0
    def get_move(self):
        old_position = self.position
        d = Desk(self.side, self.desk_coords)
        position = d.get_position()
        diff = position.symmetric_difference(old_position)

        print '#'*10
        print 'old'
        print old_position
        print '#'*10
        print 'new'
        print position
        print '#'*10
        print 'diff'
        print diff
        print '#'*10



        from_move = None
        to_move = None
        figure = ''
        if len(diff) == 2:
            # Просто ход фигуры и пешка дошла до края
            from_figure = None
            to_figure = None
            for i in diff:
                if {i}.issubset(old_position):
                    from_move = i[0]
                    from_figure = i[1]
                else:
                    to_move = i[0]
                    to_figure = i[1]
            if to_figure != from_figure:
                figure = to_figure[0]

        elif len(diff) == 3:
            # Срубили фигуру и взятие на проходе
            fig = None
            for i in diff:
                if {i}.issubset(position):
                    to_move = i[0]
                    fig = i[1]

            for i in diff:
                if i[1] == fig and i[0] != to_move:
                    from_move = i[0]

        elif len(diff) == 4:
            # Рокировка
            for i in diff:
                if i[1][0] == 'k':
                    if {i}.issubset(old_position):
                        from_move = i[0]
                    else:
                        to_move = i[0]
#        elif len(diff) == 0:
#            return None
#        else: 
#            print diff
#            plot(d.desk)

        if from_move is None:
            return None
        else:
            step = '%s%s%s' %(from_move, to_move, figure)
            return step