Example #1
0
def main():
    import sys
    n = node.Node("py-wasd", sys.argv[1:])
    try:
        r = WASDRemote(n)
        r.run()
    finally:
        n.stop()
Example #2
0
def main():
    import sys
    n = node.Node("pyscript", sys.argv[1:])
    try:
        so = ScriptObserver(n)
        while True:
            time.sleep(0.2)
    finally:
        n.stop()
Example #3
0
 def __init__(self, node_name):
     msg.MessageObserver.__init__(self)
     self.node = node.Node(node_name)
     self.auv = control.AUV_readonly(self.node)
     if hasattr(self, "report"):
         self._die_flag = threading.Event()
         self._report_frequency = 0.5
         self._reporting_thread = threading.Thread(target=self._report_loop)
         self._reporting_thread.start()
Example #4
0
def randomTest():
    import sys
    n = node.Node("pycauv",sys.argv[1:])
    print "created node.Node"

    n.join("test")
    print "joined test group"

    n.join("pipeline")
    print "joined pipeline group"

    n.join("invalid group")
    print "attempted to join an invalid group"

    o = node.Observer()
    print o, "created node.Observer"

    dmo = messaging.DebugMessageObserver()
    print dmo, "created DebugMessageObserver"

    class MMO(node.Observer):
        def onDebugMessage(self, msg):
            print "mesage received:", msg
        def onImageMessageBuffered(self, msg):
            print "image received:", msg
        def onNodeAddedMessage(self, msg):
            print "node added:", msg.nodeId, msg.nodeType
        def onStatusMessageBuffered(self, msg):
            print "node status:", msg.nodeId, msg.status

    m = MMO()
    m.setDoubleBuffered(messaging.MessageType.Status, True) #pylint: disable=E1101
    m.setDoubleBuffered(messaging.MessageType.Image, True) #pylint: disable=E1101
    print m, "created Observer with overload"

    n.addObserver(m)
    print "added observer with overload" 
    n.addObserver(o)
    print "added empty observer" 
    n.addObserver(dmo)
    print "added debug observer"

    msg = messaging.DebugMessage(messaging.DebugType.Debug, "test message string!")
    print "created debug message:", msg

    for i in xrange(1, 11):
        try:
            print "setting message string"
            msg.msg = "msg string %d" % i
            print "Sending message", i, msg
            n.send(msg, "test")
            #print n.mailbox.receive(1000)
        except Exception, e:
            print e
Example #5
0
 def __enter__(self):
     self.dirname = tempfile.mkdtemp()
     self.processes = set()
     log_dir = os.path.join(self.dirname, "log")
     os.mkdir(log_dir)
     os.mkdir(os.path.join(self.dirname, "test"))
     #bleh, this is a bit ugly, but can't really modify these options easily
     #otherwise....
     os.environ.update({
         "CAUV_IPC_DIR": self.dirname,
         "CAUV_VEHICLE_NAME": "test",
         "CAUV_LOG_DIR": log_dir,
     })
     if self.create_node:
         self.node = node.Node("test")
     return self
Example #6
0
def pipelineTest():
    import sys
    n = node.Node("pycauv-pl",sys.argv[1:])
    model = pipeline.Model(n)
    print 'Setting debug level to -3'
    n.send(messaging.DebugLevelMessage(-3), "debug")
    
    print 'Adding stuff to the pipeline...'
    n.send(messaging.ClearPipelineMessage(), "pipeline")
    n.send(messaging.AddNodeMessage(messaging.NodeType.FileInput,
                                    messaging.NodeInputArcVec(),
                                    messaging.NodeOutputArcVec()), "pipeline")
    n.send(messaging.AddNodeMessage(messaging.NodeType.GuiOutput,
                                    messaging.NodeInputArcVec(),
                                    messaging.NodeOutputArcVec()), "pipeline")

    print 'Getting pipeline state...'
    saved = model.get()
    print 'before:', saved
    print 'Clearing pipeline state...'
    model.clear()
    print 'Setting pipeline state...'
    model.set(saved)
    print 'after:', model.get()
Example #7
0
                    speed = report.speed
                else:
                    speed = 0

                if hasattr(report, "climb"):
                    climb = report.climb
                else:
                    climb = 0

                info("Location: [lat %f, lon %f, alt %f]" %
                     (report.lat, report.lon, report.alt))
                self.__node.send(
                    msg.GPSLocationMessage(
                        msg.WGS84Coord(report.lat, report.lon, report.alt),
                        track, speed, climb))


if __name__ == '__main__':
    try:
        import sys
        n = node.Node("py-gps", sys.argv[1:])
        while True:
            try:
                GPSNode(n).run()
            except StopIteration:
                info("GPS stopped, trying to restart")
            except KeyError:
                warning("Invalid key lookup, restarting")
    except socket.error:
        error("GPSD not running")
Example #8
0
                   default=0.0,
                   help='x-origin of environment (px offset from top left)')
    p.add_argument('-y',
                   dest='env_y',
                   type=float,
                   default=0.0,
                   help='y-origin of environment (px offset from top left)')
    p.add_argument('-p',
                   '--profile',
                   dest='profile',
                   default=False,
                   action='store_true')

    # add a command line argument for this later...
    datum = Default_Coordinates_Datum

    opts, args = p.parse_known_args()
    cauv_node = node.Node("py-gem", args)

    try:
        e = Environment(opts.env_file, (opts.env_x, opts.env_y),
                        opts.env_scale, datum)
        f = FakeGemini(cauv_node, e)
        if opts.profile:
            import cProfile as profile
            profile.run('f.mainLoop()', 'fakegemini.profile')
        else:
            f.mainLoop()
    finally:
        cauv_node.stop()
Example #9
0
#!/usr/bin/env python2.7
#
# Copyright 2013 Cambridge Hydronautics Ltd.
#
# See license.txt for details.
#

import cauv
import cauv.node as node
import cauv.messaging as msg

import time
import sys


class ScriptResponseObs(msg.BufferedMessageObserver):
    def onScriptResponseMessage(self, m):
        print '>>>', m.response


n = node.Node("pyscript2", sys.argv[1:])
n.join("gui")
n.addObserver(ScriptResponseObs())

n.send(msg.ScriptMessage("hello, python", 10.0), "control")
n.send(msg.ScriptMessage("response('hello, python')", 10.0), "control")
n.send(msg.ScriptMessage("import cauv.messaging as msg", 10.0), "control")
n.send(msg.ScriptMessage("response(str(dir(msg)))", 10.0), "control")

time.sleep(5)
Example #10
0
    #    self.writeLine()

    def onAIlogMessage(self, m):
        self.comment = str(m.msg)
        self.writeLine()

    def onTelemetryMessage(self, m):
        self.bearing = m.orientation.yaw
        self.depth = m.depth
        self.writeLine()

    def onLocationMessage(self, m):
        self.latitude = m.location.latitude
        self.longitude = m.location.longitude
        self.altitude = m.location.altitude
        self.speed = m.speed
        self.writeLine()


if __name__ == '__main__':
    import sys
    n = node.Node("py-log", sys.argv[1:])
    logger = LoggingObserver(n)
    try:
        while True:
            time.sleep(1.0)
    except Exception, e:
        error(str(traceback.format_exc()))
    finally:
        logger.close()
Example #11
0
                   action='store',
                   help='directory to load/store messages from')
    p.add_argument('-r',
                   '--restore',
                   dest='restore',
                   default=False,
                   action='store_true',
                   help='immediately broadcast messages for saved settings')
    p.add_argument('-n', '--no-auto', dest='auto', default=True,
                 action='store_false', help="don't automatically set parameters" +\
                 "when CAUV Nodes connect to the messaging system")
    p.add_argument('-s',
                   '--silent',
                   action='store_true',
                   help="don\'t prompt for commands")
    p.add_argument('-o',
                   '--read-only',
                   help="don't save broadcasted messages",
                   action='store_true')
    p.add_argument('-e', '--every', help='broadcast every n seconds', type=int)

    opts, args = p.parse_known_args()

    cauv_node = node.Node("persist", args)
    shelf = utils.jsonshelf.JSONShelf(opts.fname)

    if opts.restore:
        sendSavedMessages(cauv_node, shelf)
    persistMainLoop(cauv_node, shelf, opts.auto, opts.silent, opts.read_only,
                    opts.every)
Example #12
0
#
# Copyright 2013 Cambridge Hydronautics Ltd.
#
# See license.txt for details.
#

import cauv
import cauv.node as node
import cauv.messaging as msg
from cauv.debug import debug, warning, error, info

import time
import random
import sys

n = node.Node("sonar-t",sys.argv[1:])

data_line = msg.SonarDataLine()
data_line.bearing = 0
data_line.bearingRange = 6400/32
data_line.range = 10

while True:
    data_line.data = msg.byteVec()
    for i in xrange(0, 50):
        data_line.data.append(i + random.randrange(0, 50) % 0xff)

    data_line.bearing += data_line.bearingRange
    if(data_line.bearing > 6400):
        data_line.bearing -= 6400
    info('%s' % data_line.bearing)
Example #13
0
    cli = TelemetryLoggerCmdPrompt(tl)
    playback_is_active = False
    try:
        cli.cmdloop()
    except KeyboardInterrupt:
        pass
    finally:
        # this gets run even if we were killed (software-killed that is,
        # nothing can save us from the kill-switch...)
        tl.close()
        info('closed down properly')
    info('exiting...')

if __name__ == '__main__':
    p = argparse.ArgumentParser()
    p.add_argument('-f', '--log-fname', dest='fname',
                 default='./default.chil',
                 action='store', help='file to load/save telemetry data from')
    p.add_argument('-n', '--no-record', dest='no_record', default=False,
                 action='store_true', help="Don't start in recording mode")

    opts, args = p.parse_known_args()

    cauv_node = node.Node("py-tlog",args) 
    try:
        telemetryLoggerMainLoop(cauv_node, opts)
    finally:
        cauv_node.stop()


Example #14
0
#
# See license.txt for details.
#


#pylint: disable=E1101

import cauv
import cauv.node as node
import cauv.messaging as msg
import cauv.pipeline as pipeline

import time
import sys

n = node.Node("py-camtest",sys.argv[1:])

pl = pipeline.Model(n)

pl.clear()
cam_forward_n = pl.addSynchronous(msg.NodeType.CameraInput)
pl.setParameterSynchronous(cam_forward_n, "device id", pipeline.intParam(1))

cam_down_n = pl.addSynchronous(msg.NodeType.CameraInput)
pl.setParameterSynchronous(cam_down_n, "device id", pipeline.intParam(0))

fo_forward_n = pl.addSynchronous(msg.NodeType.FileOutput)
pl.setParameterSynchronous(fo_forward_n, "filename", pipeline.stringParam("out.%d.%t.%c-forward.jpg"))

fo_down_n = pl.addSynchronous(msg.NodeType.FileOutput) 
pl.setParameterSynchronous(fo_forward_n, "filename", pipeline.stringParam("out.%d.%t.%c-down.jpg"))