Source code for vision.visionmaster
import json
import redis
from vision.visionconstants import COMMAND_QUEUE_KEY, LOCATION_KEY
[docs]class VisionMaster:
"""
Runs on the RoboRIO; Tells the Jetson what to look for and
reads the location response
"""
def __init__(self, host, port):
"""
create redis instance
:param host: redis host port on jetson
:param port: redis port
"""
self.host = host
self.port = port
self.r = redis.Redis(host, port)
[docs] def locate(self, thing):
"""
tell jetson what you want to look for,
check visionconstants module for list of things
:param thing: what to look for
:return:
"""
command = {'locate': thing}
serial_json = json.dumps(command)
return self.r.lpush(COMMAND_QUEUE_KEY, serial_json)
[docs] def clear_commands(self):
"""
wipe out the queue if you need to
:return:
"""
return self.r.delete(COMMAND_QUEUE_KEY)
[docs] def get_location(self):
"""
read the location state, as long as you've told jetson
to look for a valid thing, there should be a value
:return: dict containing azimuth and altitude
"""
try:
serial_json = self.r.get(LOCATION_KEY).decode()
return json.loads(serial_json)
except AttributeError:
return None