Solving Interdisciplinary Problems

U. Arizona ACM, Tucson, April 11, 2013

Chris Van Horne

Overview

Overview

Assumptions

Assumptions

Engineering

What does engineering do with math?

Computer Science

What does computer science do with math?

What does computer science _really_ do with math?

Cat picture start-ups

Cat picture start-ups

Laziness in cat picture start-up land

Laziness in cat picture start-up land

UAVs

UAVs

2011 AVATAR

2011 AVATAR

2011 AVATAR - Mission Overview

2011 AVATAR - Systems Overview

2011 AVATAR - Imaging Subsystem

2012 AVATAR

2012 Flying thing that identifies cat faces

Design changes with lazy

Interlude

Gliders are fun

Gliders are fun

Back to UAVs..

System changes

What does the code look like?

Fetch remote imagery

import itertools
import zmq

context = zmq.Context()
socket = context.socket(zmq.PULL)
socket.connect('tcp://10.0.2.104:6000')

for i in itertools.count(1):
    with open('/Users/cwvh/images/image-%d.jpg' % i, 'w') as f:
        message = socket.recv()
        f.write(message)
        size = len(message)/(1024*1024)
        print 'req=%d size=%d MB filename=image-%d.jpg' % (i, size, i)

View a video stream from images

import cv2
import numpy
import sys
import zmq

cv2.namedWindow('viewer')

context = zmq.Context()
socket = context.socket(zmq.PULL)
socket.connect('tcp://10.0.2.104:6000')

filename = '/tmp/current.jpg'

while True:
    with open(filename, 'w') as f:
        message = socket.recv()
        f.write(message)
        mat = cv2.imread(filename)
        cv2.imshow('viewer', mat)
    ch = cv2.waitKey(30)
    if ch == 0x1b:
        cv2.destroyWindow('viewer')
        sys.exit(0)

Future work (happening now, actually)

Future work

Benefits from working on this stuff

Thank you

Chris Van Horne