Ejemplo n.º 1
0
    def reset(self):
        print ("ENTERED RESET MODEL\n")
        # Spawn crossings
        dim = self.parameters.get('grid_size')
        self.crossings = []     # Crossings in grid orientation
        row = 0
        # Notice!! Location is [x, y], but in the grid, one first has to access row, then column (so [y][x])
        while row < dim[1]:
            cr_row = []
            col = 0
            while col < dim[0]:
                cr_row.append(Crossing([col, row]))
                col += 1
            self.crossings.append(cr_row)
            row += 1

        # Spawn drivers
        self.drivers = []
        n = self.parameters.get('n_drivers')
        #print ("DRIVERS SPAWNED\n")
        while n > 0:
            driver = Driver('driver' + str(n))
            self.drivers.append(driver)
            #TODO remove print
            #print ("DRIVER ADDED TO LIST\n")
            # Put at a grid edge
            new_loc = driver.respawn(dim[0], dim[1])
            self.crossings[new_loc[1]][new_loc[0]].put_spawn(driver, dim[0]-1, dim[1]-1)
            n -= 1
Ejemplo n.º 2
0
    def __init__(self, path=None):
        f = open(utils.NAME_FILE, 'r')
        car_name = f.read().strip()
        f.close()

        self.name = car_name
        self.frames = deque(maxlen=5) # frame = {'car_name': (x,y,theta,vx,vy,t), ...}
        self._state = CarState.IDLE
        self._kill = False
        self._last_frame_number = 0
        self._collision_worker = threading.Thread(target=self._detect_collisions)
        self._message_worker = threading.Thread(target=self._process_messages)
        self._main_worker = threading.Thread(target=self._process_collisions)
        self._collisions = dict() # {'car_name': collision_object ...}

        car_ips = dict()
        ips = utils.get_car_ips()

        for name, ip in ips.iteritems():
            if name != self.name:
                car_ips[name] = ip

        self._vicon_client = ViconClient(self.frames)
        self._talker = CarTalker(car_ips)
        self._driver = None

        if path:
            self._driver = Driver(path=path)
        else:
            self._driver = Driver()
    def __init__(self, identifier, **kargs):
        Driver.__init__(self, identifier, **kargs)
        
        # self.identifier = identifier
        # self.host = host
        # self.device = device
        # self.port = port # XML-RPC port

        if 'host' not in kargs.keys():
            raise ValueError("host is requested")

        if 'devices' not in kargs.keys():
            raise ValueError("devices is requested")

        if 'port' not in kargs.keys():
            raise ValueError("port is requested")

        self.xmlrpc = xmlrpclib.ServerProxy("http://%s:%d/" % 
                                            (self.host, self.port))

        # Available gratings
        # TODO: add resolution, blaze angle, etc...
        self.gratings_properties = { 0: {'name': 'G0',
                                         'range': [200.0, 600.0]}, 
                                     1: {'name': 'G1',
                                         'range': [600.0, 1100.0]}, 
                                     2: {'name': 'G2',
                                         'range': [1100.0, 2600.0]}
                                     }


        self.gratings = self.gratings_properties.keys()
Ejemplo n.º 4
0
 def doPort(self, e=None):
     """ open a serial port """
     if self.port == None:
         self.findPorts()
         self.ports += ['Gazebo']
     dlg = wx.SingleChoiceDialog(self,'Port (Ex. COM4 or /dev/ttyUSB0)','Select Communications Port',self.ports)
     #dlg = PortDialog(self,'Select Communications Port',self.ports)
     if dlg.ShowModal() == wx.ID_OK:
         if self.port != None:
             self.port.ser.close()
         print "Opening port: " + self.ports[dlg.GetSelection()]
         try:
             port_name = self.ports[dlg.GetSelection()]
             if port_name == 'Gazebo':
                 self.port = GazeboDriver()
             else:
             # TODO: add ability to select type of driver
             self.port = Driver(self.ports[dlg.GetSelection()], 38400, True) # w/ interpolation
             self.panel.port = self.port
             self.panel.portUpdated()
             self.sb.SetStatusText(self.ports[dlg.GetSelection()] + "@38400",1)
         except RuntimeError as e:
             print 'Error opening port:', e
             self.port = None
             self.sb.SetBackgroundColour('RED')
             self.sb.SetStatusText("Could Not Open Port",0) 
             self.sb.SetStatusText('not connected',1)
             self.timer.Start(20)
         dlg.Destroy()
Ejemplo n.º 5
0
    def register(self, bench):
        self.open()
        connected = self.is_connected()
        if not(connected):
            raise IOError("Keithley Multimeter not connected.")

        Driver.register(self, bench)
Ejemplo n.º 6
0
    def register(self, bench):
        # self.open()
        connected = self.is_connected()
        if not(connected):
            raise IOError("Dummy device is not connected.")

        Driver.register(self, bench)
Ejemplo n.º 7
0
    def drive_after_test(self):
        self.check_call([
            "codecov", "-X", "gcov", "--required",
            "--file", "./tests/coverage.xml"
        ])

        Driver.drive_after_test(self)
Ejemplo n.º 8
0
    def register(self, bench):
        self.open()
        connected = self.is_connected()
        if not(connected):
            raise IOError(
                "TTL board not connected (or ttl software not running).")

        Driver.register(self, bench)
Ejemplo n.º 9
0
    def register(self, bench):
        self.open()
        time.sleep(2)
        connected = self.is_connected()
        if not(connected):
            raise IOError("Oriel lamp not connected.")

        Driver.register(self, bench)
    def register(self, bench):
        self.open()
        time.sleep(2)
        connected = self.is_connected()
        if not(connected):
            raise IOError("Lakeshore controller not connected.")

        Driver.register(self, bench)
    def register(self, bench):
        self.open()
        time.sleep(2)
        connected = self.is_connected()
        if not(connected):
            raise IOError("Monochromator Triax not connected.")

        Driver.register(self, bench)
    def register(self, bench):
        self.open()
        time.sleep(2)
        connected = self.is_connected()
        if not(connected):
            raise IOError("Laser Thorlabs not connected.")

        Driver.register(self, bench)
Ejemplo n.º 13
0
 def __init__(self, parent, clargs):
     Tkinter.Tk.__init__(self,parent)
     Driver.__init__(self,clargs)
    
     self.geometry('%dx%d' % (512, 512))
     self.update()
     self.lsign = 1
     self.act()
Ejemplo n.º 14
0
    def __init__(self, identifier, **kargs):
        Driver.__init__(self, identifier, **kargs)

        # self.identifier = identifier
        # self.host = host
        # self.device = device
        # self.port = port # XML-RPC port

        # if 'host' not in kargs.keys():
        #     raise ValueError("host is requested")

        # if 'devices' not in kargs.keys():
        #     raise ValueError("devices is requested")

        # if 'port' not in kargs.keys():
        #     raise ValueError("port is requested")

        if 'reb_id' not in kargs:
            raise ValueError("reb_id is requested")

        if 'host' not in kargs:
            self.host = None

        if 'stripe' not in kargs:
            self.stripe = 0

        if 'xmlfile' not in kargs:
            raise ValueError("XML sequencer file is requested")

        if self.hardware == 'REB1':
            self.reb = reb1.REB1(reb_id=self.reb_id, ctrl_host=self.host, stripe_id=[self.stripe])
            self.useCABAC = True
        elif self.hardware == 'WREB1':
            self.reb = wreb.WREB(rriaddress=self.reb_id, ctrl_host=self.host, stripe_id=[self.stripe])
            self.useCABAC = True
            self.reb.useCABACbias = True
        elif self.hardware in ['REB3', 'REB4']:
            self.reb = reb3.REB3(self.bcfile)
            self.useCABAC = False
        else:
            raise ValueError('Unknown type of hardware: %s' % self.hardware)

        # then check FPGA version after connecting
        checkversion = self.reb.fpga.get_version()
        if self.version != checkversion:
            raise ValueError('Wrong version of the FPGA firmware: reading %x instead of %x'
                             % (checkversion, self.version))

        self.reb.xmlfile = self.xmlfile
        self.read_sequencer_file(self.xmlfile)
        self.reb.exptime = self.reb.get_exposure_time()
        
        # CCD and test-related values (for meta)
        self.testID = { 'TESTTYPE': 'TEST', 'IMGTYPE': 'TEST', 'SEQNUM': 0}
        self.sensorID = { 'CCD_MANU': 'NONE', 'CCD_TYPE': 'NONE', 'CCD_SERN': '000-00', 'LSST_NUM': 'NONE'}

        logging.basicConfig(filename='REB-'+ time.strftime('%Y%m%d', time.gmtime()) + '.log',
                            level=logging.DEBUG, format='%(asctime)s: %(message)s')
Ejemplo n.º 15
0
    def register(self, bench):
        self.open()
        connected = self.is_connected()
        if not connected:
            raise IOError("DS9 display could not be reached")

        self.default_config()

        Driver.register(self, bench)
Ejemplo n.º 16
0
    def __init__(self, probe_ids, probe_names, probe_data_type, **kwargs):
        """Initializes the Json URL driver.
        Keyword arguments:
        probe_ids -- list containing the probes IDs
                     (a wattmeter monitor sometimes several probes)
        kwargs -- keyword (url) defining the Json URL driver parameters

        """
        Driver.__init__(self, probe_ids, probe_names, probe_data_type, kwargs)
Ejemplo n.º 17
0
    def register(self, bench):
        self.open()
        connected = self.is_connected()
        if not connected:
            raise IOError(
                "REB #%d not connected.\n You should run this on the computer connected to the crate." % self.reb_id)

        Driver.register(self, bench)
        self.boardID = self.reb.fpga.get_boardID()
Ejemplo n.º 18
0
    def __init__(self, probe_ids, data_type, **kwargs):
        """Initializes the Wattsup driver.

        Keyword arguments:
        probe_ids -- list containing the probes IDs
                     (a wattmeter monitor sometimes several probes)
        kwargs -- keyword (device) defining the device to read (/dev/ttyUSB0)

        """
        Driver.__init__(self, probe_ids, data_type, kwargs)
Ejemplo n.º 19
0
 def __init__(self, clargs, stream=sys.stdout):
     Driver.__init__(self, clargs)
     self.stream = stream
     
     self.monitor = self.options.pop('monitor')
     self.show = self.options.pop('show')
     
     for option in self.options:
         print("Setting %s to %s" % (option, self.options[option]) )
         setattr(self.hemelb, option, self.options[option])
Ejemplo n.º 20
0
 def __init__(self, clargs, stream=sys.stdout):
     Driver.__init__(self,clargs)
     self.stream = stream
     self.time = time()
     self.lsign = 1
     self.last_step = 0
     self.orbit = self.options.pop('orbit')
     self.framerate = self.options.get('MaxFramerate',None)
     if self.framerate:
         self.hemelb.MaxFramerate = self.framerate
Ejemplo n.º 21
0
 def drive_style(self):
     if self.is_darwin:
         self.check_call(
             "\n".join((
                 "eval \"$( pyenv init - )\"",
                 "python -m flake8 -v"
             )),
             shell=True
         )
     else:
         Driver.drive_style(self)
Ejemplo n.º 22
0
 def drive_build(self):
     if self.is_darwin:
         self.check_call(
             "\n".join((
                 "eval \"$( pyenv init - )\"",
                 "python setup.py build"
             )),
             shell=True
         )
     else:
         Driver.drive_build(self)
Ejemplo n.º 23
0
    def __init__(self, probe_ids, **kwargs):
        """Initializes the Eaton driver.

        Keyword arguments:
        probe_ids -- list containing the probes IDs
                     (a wattmeter monitor sometimes several probes)
        kwargs -- keyword (ip, user) defining the Eaton SNMP parameters

        """
        Driver.__init__(self, probe_ids, kwargs)
        self.cmd_gen = cmdgen.CommandGenerator()
Ejemplo n.º 24
0
    def __init__(self, probe_ids, probe_data_type, **kwargs):
        """Initializes the IPMI driver.

        Keyword arguments:
        probe_ids -- list containing the probes IDs
                     (a wattmeter monitor sometimes several probes)
        kwargs -- keywords (interface, host, username,
                  password) defining the IPMI parameters

        """
        Driver.__init__(self, probe_ids, probe_data_type, kwargs)
Ejemplo n.º 25
0
def main():
    database = Database()
    alarmLog = AlarmLog()
    summarizer = Summarizer(database, alarmLog)
    clock = Clock(summarizer)
    alarmWriter = AlarmWriter(summarizer)
    driver1 = Driver(1, summarizer)

    clock.start()
    alarmWriter.start()
    driver1.start()
    sleep(1000)
Ejemplo n.º 26
0
class rGPIO(object):

    def __init__(self, logger):
        self.logger = logger

        logger.info("Starting GPIODaemon...")
        self.driver = Driver()

        logger.info("Initialized driver")

    def handle_cmd(self, cmd):
        # New handle command class that's simpler

        cmd = cmd.strip()
        self.logger.info("cmd: '%s'" % cmd)

        return self._handle_cmd(cmd)

    def _handle_cmd(self, internal_cmd):
        # Internal cmd is the actual command (triggered by the user command).
        # Any return value will be sent to the socket connection.
        self.logger.info("execute> %s" % internal_cmd)
        cmd_parts = internal_cmd.split(" ")
        cmd = cmd_parts[0]

        if cmd == "forward":
            self.logger.info("in command forward")
            self.driver.forward()
            return "going forward"

        elif cmd == "turn_left":
            self.logger.info("in command turn_left")
            self.driver.turn_left()
            return "turn left"

        elif cmd == "turn_right":
            self.logger.info("in command turn_right")
            self.driver.turn_right()
            return "turning_right"

        elif cmd == "stop":
            self.logger.info("in command stop")
            self.driver.stop()
            return "stop"

        elif cmd == "backward":
            self.logger.info("in command backward")
            self.driver.backward()
            return "backwards"

        else:
            self.logger.warn("command '%s' not recognized", cmd)
Ejemplo n.º 27
0
    def drive_install(self):
        self.check_call(["sudo", "apt-get", "update"])
        self.check_call(["sudo", "apt-get", "install", "gfortran"])
        self.check_call([
            "wget", "--no-check-certificate", "--progress=dot",
            "https://cmake.org/files/v3.5/cmake-3.5.0-Linux-x86_64.tar.gz"
        ])
        self.check_call(["tar", "xzf", "cmake-3.5.0-Linux-x86_64.tar.gz"])
        self.check_call([
            "sudo", "rsync", "-avz", "cmake-3.5.0-Linux-x86_64/", "/usr/local"
        ])

        Driver.drive_install(self)
Ejemplo n.º 28
0
    def __init__(self, probe_ids, **kwargs):
        """Initializes the dummy driver.

        Keyword arguments:
        probe_ids -- list containing the probes IDs
                     (a wattmeter monitor sometimes several probes)
        kwargs -- keywords (min_value and max_value)
                  defining the random value interval

        """
        Driver.__init__(self, probe_ids, kwargs)
        self.min_value = int(kwargs.get('min', 75))
        self.max_value = int(kwargs.get('max', 100))
Ejemplo n.º 29
0
    def __init__(self, probe_ids, probes_names, probe_data_type, **kwargs):
        """Initializes the SNMP driver.

        Keyword arguments:
        probe_ids -- list containing the probes IDs
                     (a metricmeter monitor sometimes several probes)
        kwargs -- keyword (protocol, user or community, ip, oid) defining the
                  SNMP parameters
                  Eaton OID is 1.3.6.1.4.1.534.6.6.7.6.5.1.3
                  Raritan OID is 1.3.6.1.4.1.13742.4.1.2.2.1.7

        """
        Driver.__init__(self, probe_ids, probes_names, probe_data_type, kwargs)
        self.cmd_gen = cmdgen.CommandGenerator()
Ejemplo n.º 30
0
    def test_followLineG( self ):
        robot = MagicMock()
        robot.localisation.pose.return_value = (0, 0.3, 0)
        driver = Driver(robot, maxSpeed = 0.5)
        offsetDistance = 0.03
        gen = driver.followPolyLineG(pts = [(0, 0), (1.0, 0)],
                                     offsetDistance=offsetDistance)
        speed, angularSpeed = gen.next()
        self.assertAlmostEqual(angularSpeed, -4 * math.radians(20))
        self.assertAlmostEqual(speed, 0.444444444444)

        # now for closer distance reduce the turning angle
        robot.localisation.pose.return_value = (0, 1.5 * offsetDistance, 0)
        speed, angularSpeed = gen.next()
        self.assertAlmostEqual(angularSpeed, -4 * math.radians(10))
        self.assertAlmostEqual(speed, 0.4722222222222222)
Ejemplo n.º 31
0
    def get_mssql(SchoolName):

        return Driver.get_mssql(SchoolName, 'exec spPeriodListGet')
Ejemplo n.º 32
0
    def get_mssql(SchoolName):

        return Driver.get_mssql(SchoolName, 'exec spParentsGet')
Ejemplo n.º 33
0
class DecisionMaker():
    # Makes the decisions

    def __init__(self, world):
        self.all_balloons = []
        self.world = world
        self.driver = Driver()
        self.current_state = States.WithoutBalloon
        self.pid = PID()
        self.with_balloon_counter = 0
        self.spin_counter = 0
        self.last_side = 1

    def run_towards_balloon(self, balloon):
        (position_x, position_y) = balloon.get_position()
        position_x = -position_x
        angular_speed = self.pid.iterate(position_x)
        if angular_speed > 9.09:
            angular_speed = 9.09

        height = balloon.height
        linear_speed = 0.9 - height
        if linear_speed > 0.8:
            linear_speed = 0.8
        elif linear_speed < 0.20:
            linear_speed = 0.20

        self.driver.move(angular_speed, linear_speed)

    def spin(self):
        if self.last_side == 1:
            angular_speed = 1.7
        else:
            angular_speed = -1.6
        self.driver.move(angular_speed, 0)

    def curve(self):
        if self.last_side == 1:
            angular_speed = -1
        else:
            angular_speed = 1
        self.driver.move(angular_speed, 0.15)

    def make_decision(self):

        self.all_balloons = self.world.all_balloons

        balloon = max(self.all_balloons.values(), key=attrgetter("area"))

        if self.current_state == States.WithoutBalloon:
            if balloon.visible is True:
                self.pid.reset()
                self.run_towards_balloon(balloon)
                self.with_balloon_counter = 1
                self.current_state = States.WithBalloon
                print("First time")
            else:
                self.spin()
                self.current_state = States.WithoutBalloon
                print("Without balloon")
        elif self.current_state == States.WithBalloon:
            if balloon.visivel is True:
                self.run_towards_balloon(balloon)
                if self.with_balloon_counter >= 10:
                    if balloon.position_x > 0:
                        self.last_side = -1
                    else:
                        self.last_side = 1
                self.with_balloon_counter += 1
                self.current_state = States.WithBalloon
                print("With balloon")
            else:
                if self.with_balloon_counter < 10:
                    self.with_balloon_counter = 10
                    self.curve()
                    self.spin_counter = 1
                    self.current_state = States.Spin
                    print("Spin")
                else:
                    self.spin()
                    self.current_state = States.WithoutBalloon
                    print("Without balloon")
        elif self.current_state == States.Spin:
            if balloon.visible is True:
                self.pid.reset()
                self.run_towards_balloon(balloon)
                self.current_state = States.WithBalloon
                print("With balloon*")
            else:
                if self.spin_counter < 20:
                    self.curve()
                    self.spin_counter += 1
                    self.current_state = States.Spin
                    print("Spin")
                if self.spin_counter >= 20:
                    self.spin()
                    self.current_state = States.WithoutBalloon
                    print("Without balloon")

    def finish(self):
        self.driver.finish()
Ejemplo n.º 34
0
import websocket
import re
import os
from driver import Driver
from subprocess import Popen

try:
    import thread
except ImportError:
    import _thread as thread
import time

driver = Driver()


def on_error(ws, error):
    driver.stop()
    print(error)


def on_close(ws):
    driver.stop()
    print("### closed ###")


def handle_kbsignal(ws, kbsignal):
    print('kbsignal: ' + str(kbsignal))
    search = re.search('\"key\":(\d+),\"pulse\":\"(\w+)\"', kbsignal)
    if search is not None:
        key = search.group(1)
        pulse = search.group(2)
Ejemplo n.º 35
0
    def get_mssql(SchoolName):

        return Driver.get_mssql(SchoolName, 'exec spTaskListCatGet')
Ejemplo n.º 36
0
class JJJZ:
    def __init__(self):
        self.Sql = Sql()
        self.Driver = Driver()
        self.db_conn = self.Sql.conn_db(db='fund')

    def main(self):
        fund = input("Fund ID: ")
        driver = self.Driver.main()
        root = 'http://fundf10.eastmoney.com/jjjz_'
        sql = 'select id,fund from fund where fund = "{}"'.format(fund)
        fund = self.Sql.exec_sql(self.db_conn, sql).fetchall()[0]
        driver.implicitly_wait(2)
        id = fund[0]
        fund = fund[1]
        jjjz_page = 0
        url = root + fund + '.html'
        driver.get(url)
        jjjz_total_page = driver.find_elements_by_xpath(
            '//div[@class="pagebtns"]/label')[-2].text
        data = []
        for i in range(int(jjjz_total_page)):

            trs = driver.find_elements_by_xpath(
                '//div[@id="jztable"]/table/tbody/tr')
            for i in range(len(trs)):
                date = driver.find_element_by_xpath(
                    '//div[@id="jztable"]/table/tbody/tr[{0}]/td[1]'.format(
                        i + 1)).text.strip()
                unit_jz = driver.find_element_by_xpath(
                    '//div[@id="jztable"]/table/tbody/tr[{0}]/td[2]'.format(
                        i + 1)).text.strip()
                total_jz = driver.find_element_by_xpath(
                    '//div[@id="jztable"]/table/tbody/tr[{0}]/td[3]'.format(
                        i + 1)).text.strip()
                date_rate = driver.find_element_by_xpath(
                    '//div[@id="jztable"]/table/tbody/tr[{0}]/td[4]'.format(
                        i + 1)).text.strip()
                buy_status = driver.find_element_by_xpath(
                    '//div[@id="jztable"]/table/tbody/tr[{0}]/td[5]'.format(
                        i + 1)).text.strip()
                sale_status = driver.find_element_by_xpath(
                    '//div[@id="jztable"]/table/tbody/tr[{0}]/td[6]'.format(
                        i + 1)).text.strip()
                red = driver.find_element_by_xpath(
                    '//div[@id="jztable"]/table/tbody/tr[{0}]/td[7]'.format(
                        i + 1)).text.strip()
                data.append([
                    id, date, unit_jz, total_jz, date_rate, buy_status,
                    sale_status, red
                ])
            print('Crawling Fund {0}, Crawled Page {1}'.format(
                fund, jjjz_page))
            jjjz_page += 1
            jjjz_next_page = driver.find_elements_by_xpath(
                '//div[@class="pagebtns"]/label')[-1]
            jjjz_next_page.click()
            time.sleep(1)

        sql = "insert into jjjz(fundId,JZDate,unitJZ,totalJZ,dateRate,buyStatus,saleStatus,red) values (%s,%s,%s,%s,%s,%s,%s,%s)"
        self.Sql.exec_sql(self.db_conn, sql, data)
Ejemplo n.º 37
0
        @param self: Dispatcher
        @param rider: Rider
        @rtype: None
                
        >>> rider_Bathe = Rider('Bathe','waiting', 5, Location(1,2), Location(5,8))
        >>> dispatcher = Dispatcher()
        >>> print(dispatcher.request_driver(rider_Bathe))
        None
        >>> print(dispatcher.cancel_ride(rider_Bathe))
        None

        """
        try:
            self.waiting_riders.remove(rider)
        except IndexError:
            print('No waiting riders!!!')
        except ValueError:
            print('The rider is not waiting!!!')


if __name__ == "__main__":
    import doctest
    doctest.testmod()
    dispatcher = Dispatcher()
    rider1 = Rider('rider1', 'waiting', 5, Location(1, 2), Location(5, 8))
    driver1 = Driver('driver1', Location(10, 9), 1)
    print(dispatcher.request_driver(rider1))
    print(dispatcher.request_rider(driver1))
    dispatcher.cancel_ride(rider1)
    print(dispatcher)