Exemple #1
0
    def parse_data(self):
        logger.info('GPS: reading and parsing a line of NMEA data')

        data = self.gps.readline()

        # convert data to string to parse into list
        data_string = "".join([chr(b) for b in data])
        data_list = data_string.split(',')

        # parse NMEA sentence
        parsed_data = []

        if data_list[0] == '$GPRMC':
            # get longitude
            print(type(data_list[4]))
            if data_list[4] == 'S':
                parsed_data.append((float(data_list[3]) / 10 / 10) * -1)
            else:
                parsed_data.append((float(data_list[3]) / 10 / 10))

            # get latitude
            if data_list[6] == 'W':
                parsed_data.append((float(data_list[5]) / 10 / 10) * -1)
            else:
                parsed_data.append((float(data_list[5]) / 10 / 10))

        logger.info(parsed_data)

        return parsed_data
def test_simple_launch(setup_active_vessel, krpc_connect):
    vessel = setup_active_vessel
    conn = krpc_connect
    logger.info("Initiating Simple Launch sequence")
    success = simple_launch(conn, vessel)
    assert success

    conn.close()
Exemple #3
0
 async def periodic():
     while True:
         if not api.get_clock().is_open:
             logger.info('exit as market is not open')
             sys.exit(0)
         await asyncio.sleep(30)
         positions = api.list_positions()
         pos = [p for p in positions if p.symbol == args.symbol]
         scalp.checkup(pos[0] if len(pos) > 0 else None)
Exemple #4
0
	def begin(self):
		logger.info('Start camera. Open Video Capture object')
		if not self.cap.isOpened():
			self.cap.open(self.gstreamer_pipeline(), cv2.CAP_GSTREAMER)
		
		logger.info('Starting thread for video capture')
		if not hasattr(self, 'thread') or not self.thread.isAlive():
			self.thread = threading.Thread(target=self._capture)
			self.thread.start()
Exemple #5
0
 def __init__(self):
     logger.info('MPU: Opening i2c device @/dev/i2c-1, addr 0x68')
     self.device = pylibi2c.I2CDevice('/dev/i2c-1', 0x68)
     self.device.delay = 10
     self.device.page_bytes = 8
     self.device.flags = pylibi2c.I2C_M_IGNORE_NAK
     time.sleep(3)
     logger.info('MPU: disabling sleep mode')
     i2cdev.setSleepMode(self.device, enabled=0)
     self.gyro_cal_x = 0
     self.gyro_cal_y = 0
     self.gyro_cal_z = 0
Exemple #6
0
	def view(self):
		if not hasattr(self, 'thread_2') or not self.thread_2.isAlive():
			logger.info('Starting live view')
      # Create window and configure it
			cv2.namedWindow(self.window_name, cv2.WINDOW_NORMAL)
			cv2.resizeWindow(self.window_name, 640, 480)
			cv2.moveWindow(self.window_name, 0, 0)
			cv2.setWindowTitle(self.window_name, 'Live View')
			font = cv2.FONT_HERSHEY_PLAIN
					
			self.thread_2 = threading.Thread(target=self._view)
			self.thread_2.start()
Exemple #7
0
    def calibrate(self):
        logger.info('MPU: calibrating gyroscope')
        for i in range(500):
            self.gyro_cal_x += self.read_gyro_x()
            self.gyro_cal_y += self.read_gyro_y()
            self.gyro_cal_z += self.read_gyro_z()
            #print(self.gyro_cal_x)
            #print(self.gyro_cal_y)
            #print(self.gyro_cal_z)
        self.gyro_cal_x /= 1000
        self.gyro_cal_y /= 1000
        self.gyro_cal_z /= 1000

        print(self.gyro_cal_x)
        print(self.gyro_cal_y)
        print(self.gyro_cal_z)
Exemple #8
0
	def end(self):
		logger.info('Stopping camera. Released Video Capture object')
		if hasattr(self, 'cap'):
			self.cap.release()
		
		logger.info('Joining video capture thread')
		if hasattr(self, 'thread'):
			self.thread.join()
		
		if hasattr(self, 'thread_2'):
			logger.info('Joining live view thread')
			self.thread_2.join()

		logger.info('Closing window(s) and de-alloc any assoc. memory')
		cv2.destroyAllWindows()	
Exemple #9
0
def main(args):
    logger.info("Inside main function")
    api = alpaca.REST()
    stream = alpaca.StreamConn()
    logger.info("Instantiating scalp object with arguments ...")

    scalp = algo.Algo(api=api, symbol=args.symbol, lot=args.lot)

    @stream.on(r'^AM')
    async def on_bars(conn, channel, data):
        scalp.on_bar(data)

    @stream.on(r'trade_updates')
    async def on_trade_updates(conn, channel, data):
        logger.info(f'trade_updates {data}')
        symbol = data.order['symbol']
        if symbol == args.symbol:
            scalp.on_order_update(data.event, data.order)

    async def periodic():
        while True:
            if not api.get_clock().is_open:
                logger.info('exit as market is not open')
                sys.exit(0)
            await asyncio.sleep(30)
            positions = api.list_positions()
            pos = [p for p in positions if p.symbol == args.symbol]
            scalp.checkup(pos[0] if len(pos) > 0 else None)

    channels = ['trade_updates', args.symbol]

    loop = stream.loop
    loop.run_until_complete(
        asyncio.gather(
            stream.subscribe(channels),
            periodic(),
        ))
Exemple #10
0
 async def on_trade_updates(conn, channel, data):
     logger.info(f'trade_updates {data}')
     symbol = data.order['symbol']
     if symbol == args.symbol:
         scalp.on_order_update(data.event, data.order)
Exemple #11
0
            await asyncio.sleep(30)
            positions = api.list_positions()
            pos = [p for p in positions if p.symbol == args.symbol]
            scalp.checkup(pos[0] if len(pos) > 0 else None)

    channels = ['trade_updates', args.symbol]

    loop = stream.loop
    loop.run_until_complete(
        asyncio.gather(
            stream.subscribe(channels),
            periodic(),
        ))


if __name__ == '__main__':

    fmt = '%(asctime)s:%(filename)s:%(lineno)d:%(levelname)s:%(name)s:%(message)s'
    # logger.basicConfig(level=logging.INFO, format=fmt)
    logger.setLevel(logging.INFO)
    fh = logging.FileHandler('test.log')
    fh.setFormatter(logging.Formatter(fmt))
    logger.addHandler(fh)

    parser = argparse.ArgumentParser()
    parser.add_argument('symbol', nargs='+')
    parser.add_argument('--lot', type=float, default=2000)
    logger.info("Calling main ....")

    main(parser.parse_args())
Exemple #12
0
 def _set_update_rate(self, rate=1000):
     # Packet type 220 PMTK_SET_NMEA_UPDATERATE
     # Unit milliseconds
     logger.info('GPS: setting update rate to 1 Hz')
     self.gps.send_command(b"PMTK220, 1000")  # 1 Hz
Exemple #13
0
def readByte(i2cdevice, reg_addr):
    # read 1 byte starting from reg_addr
    logger.info('Reading 1 byte starting from %x' % reg_addr)
    return i2cdevice.ioctl_read(reg_addr, 1)
Exemple #14
0
			cv2.imshow(self.window_name, self.image)
	
			# if user hits 'q' key, close window
			if cv2.waitKey(1) & 0xFF == ord('q'):
				break
			# if capture is off
			if not self.ret:
				break

	def _capture(self):
		while True:
			# read frame and allow in-place modification
			ret, frame = self.cap.read()
			self.ret = ret
			if ret:
				self.image = frame
				self.image.setflags(write=1) 
			else:
				break

if __name__ == "__main__":
	logger.info('Running quick camera test')
	try:
		cam = Camera()
		cam.begin()
		cam.view()
	except:
		cam.end()


Exemple #15
0
 def has_fix(self):
     # True if a current fix for location info is available
     logger.info('GPS: checking if current fix for location info is avail')
     return self.gps.has_fix
Exemple #16
0
	def __init__(self):
		logger.info('MAG: initializing magnometer')
		i2c = busio.I2C(board.SCL, board.SDA)
		self.sensor = adafruit_lsm303dlh_mag.LSM303DLH_Mag(i2c)
Exemple #17
0
import ctypes
import pylibi2c
import time
from log_setup import logger
from utils import i2cdev

logger.info('Opening i2c device @/dev/i2c-1, addr 0x68')
i2c = pylibi2c.I2CDevice('/dev/i2c-1', 0x68)

i2c.delay = 10
logger.info('Set delay = 10')

i2c.page_bytes = 8
logger.info('Set page bytes = 8')

i2c.flags = pylibi2c.I2C_M_IGNORE_NAK
logger.info('Set flags to ignore i2c device nak signal')

#i2cdev.setSleepMode(i2c, 0)

time.sleep(3)

pwr_reg = i2cdev.readByte(i2c, 0x6B)
#print(i2c.read(0x0, 256))
print(pwr_reg)

#logger.debug('Reading PWR MGMT register field')
#print(pwr_reg)

while True:
    data = i2c.read(0x43, 6)
 def _get_frozen_graph(graph_path):
     logger.info('Reading graph file: %s' % self.graph_path)
     with tf.gfile.GFile(pb_file, 'rb') as f:
         graph_def = tf.compat.v1.GraphDef()
         graph_def.ParseFromString(f.read())
     return graph_def
 def _config():
     logger.info('Configuring tf session')
     self.tf_config = tf.compat.v1.ConfigProto()
     self.tf_config.gpu_options.allow_growth = True
def run_motor_test():
    print("Start: ")
    motor_left = 0
    motor_right = 1
    forward = 0
    backward = 1

    if not myMotor.is_connected():
        print("Motor driver not connected!", file=sys.stderr)
    else:
        print("Motor driver connection established.")

    logger.info('Initializing operation of SCMD module')
    myMotor.begin()
    logger.info('Initialization complete')

    myMotor.set_drive(0, 0, 0)
    myMotor.set_drive(1, 0, 0)
    logger.info('Motor speeds set to zero')
    #sys.exit(0)
    myMotor.enable()
    logger.info('Enabled motor driver functions')

    time.sleep(1)

    logger.info('Start test')
    #logger.info('Left Motor test, forward direction')
    for speed in range(80, 255):
        print(speed)
        myMotor.set_drive(motor_left, forward, speed)
        time.sleep(.05)
    for speed in range(254, 20, -1):
        print(speed)
        myMotor.set_drive(motor_left, forward, speed)
        time.sleep(.05)

    #logger.info('Left Motor test, backward direction')
    for speed in range(80, 255):
        print(speed)
        myMotor.set_drive(motor_left, backward, speed)
        time.sleep(.05)
    for speed in range(254, 20, -1):
        print(speed)
        myMotor.set_drive(motor_left, backward, speed)
        time.sleep(.05)

    logger.info('Right Motor test, forward direction')
    for speed in range(80, 255):
        print(speed)
        myMotor.set_drive(motor_right, forward, speed)
        time.sleep(.05)
    for speed in range(254, 20, -1):
        print(speed)
        myMotor.set_drive(motor_right, forward, speed)
        time.sleep(.05)

    #logger.info('Right Motor test, backward direction')
    for speed in range(80, 255):
        print(speed)
        myMotor.set_drive(motor_right, backward, speed)
        time.sleep(.05)
    for speed in range(254, 20, -1):
        print(speed)
        myMotor.set_drive(motor_right, backward, speed)
        time.sleep(.05)

    myMotor.set_drive(0, 0, 0)
    myMotor.set_drive(1, 0, 0)

    logger.info('Test complete')
Exemple #21
0
	def go_to_chkpt(self, chkpt):
		while True:
			current_loc = self.gps.parse_data()
			if current_loc == (None,None):
				logger.info('GPS: waiting to establish current location fix')
				continue			
			else:
				logger.info('Current coordinates (%f, %f)' % current_loc)
				distance_to_chkpt = self.gps.distance(current_loc, chkpt).km
				direction_to_chkpt = self.gps.direction(current_loc, chkpt)
				heading = self.mag.heading()
				
				logger.info('Distance to checkpoint: %f' % distance_to_chkpt)
				logger.info('Desired heading: %f' % direction_to_chkpt)
				logger.info('Actual heading: %f' % heading)
	
				if distance_to_chkpt <= 0.01:
					self.stop()
					logger.info('ROBOT: arrived at checkpoint')
					break
				else:
					if abs(direction_to_chkpt - heading) <= 10:
						self.fwd()
					else:
						a = direction_to_chkpt - 360
						b = heading - a
						c = b - 360
						if c <= 180 and c >= 0:
							self.left_turn()
						else:
							self.right_turn()
Exemple #22
0
 def _set_output(self):
     # Packet type 314 PMTK314_API_SET_NMEA_OUTPUT
     # Turn on Recommended Minimum Info (RMC)
     logger.info('GPS: setting RMC as NMEA output format')
     self.gps.send_command(b"PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0")