Ejemplo n.º 1
0
    robot.canproxy.set_turn_raw(0)

    go_straight(robot, distance=1.0, speed=0.3, with_stop=True)

    for i in xrange(3):
        turn(robot, math.radians(-45), radius=2.6, speed=0.5)
        turn(robot, math.radians(-45), radius=2.6, speed=-0.5)

    robot.canproxy.stop_turn()
    robot.wait(3.0)


if __name__ == "__main__":
    if len(sys.argv) < 2:
        print __doc__
        sys.exit(2)
    metalog = None
    if 'meta_' in sys.argv[1]:
        metalog = MetaLog(filename=sys.argv[1])
    elif len(sys.argv) > 2:
        metalog = MetaLog(filename=sys.argv[2])
    if len(sys.argv) > 2 and sys.argv[-1] == 'F':
        disableAsserts()

    if metalog is None:
        metalog = MetaLog()

    driver_self_test(Driver(), metalog)

# vim: expandtab sw=4 ts=4
Ejemplo n.º 2
0
def parse_and_launch():
    """parse sys.argv arguments and return initialized robot"""

    parser = argparse.ArgumentParser(
        description='Navigate given pattern in selected area')
    subparsers = parser.add_subparsers(help='sub-command help', dest='command')
    subparsers.required = True
    parser_run = subparsers.add_parser('run', help='run on real HW')
    parser_run.add_argument('config', help='configuration file')
    parser_run.add_argument('--note', help='add description')

    parser_replay = subparsers.add_parser('replay', help='replay from logfile')
    parser_replay.add_argument('logfile', help='recorded log file')
    parser_replay.add_argument('--view',
                               dest='view',
                               action='store_true',
                               help='view parsed log')
    parser_replay.add_argument(
        '--force',
        '-F',
        dest='force',
        action='store_true',
        help='force replay even for failing output asserts')
    parser_replay.add_argument('--config',
                               dest='config',
                               help='use different configuration file')
    args = parser.parse_args()
    conf = None
    if args.config is not None:
        conf = Config.load(args.config)

    viewer = None
    if args.command == 'replay':
        metalog = MetaLog(args.logfile)
        if conf is None and args.logfile.endswith('.zip'):
            if DEFAULT_ZIP_CONFIG in zipfile.ZipFile(args.logfile).namelist():
                s = str(
                    zipfile.ZipFile(args.logfile).read(DEFAULT_ZIP_CONFIG),
                    'utf-8')
                conf = Config.loads(s)
        if args.view:
            global g_img_dir
            from tools.viewer import main as viewer_main
            from tools.viewer import getCombinedPose
            viewer = viewer_main
            if args.logfile.endswith('.zip'):
                g_img_dir = args.logfile
            else:
                g_img_dir = os.path.dirname(args.logfile)
        if args.force:
            disableAsserts()

    elif args.command == 'run':
        metalog = MetaLog()

    else:
        assert False, args.command  # unsupported command

    robot = create_robot(metalog, conf)

    for sensor_name in ['gps', 'laser', 'camera']:
        attach_sensor(robot, sensor_name, metalog)

    if viewer is not None:
        robot.extensions.append(('launcher_viewer', launcher_viewer_extension))

    try:
        robot.extensions.append(('emergency_stop', emergency_stop_extension))
        yield robot, metalog, conf, viewer
    except EmergencyStopException:
        print("Emergency STOP Exception!")
        robot.extensions = []  # hack

    # TODO make this code conditional based on the state of finished application
    robot.canproxy.stop()
    robot.canproxy.stop_turn()
    robot.wait(3.0)

    detach_all_sensors(robot)

    if viewer is not None:
        viewer(filename=None, posesScanSet=viewer_data)
Ejemplo n.º 3
0
    global g_lastImage
    g_lastImage = frame[2]

def demo( robot ):
    "panoramatic picture"
    DEG_STEP = 30
    robot.setVideoCallback( keepLastImage )
    for absAngle in xrange(0, 360, DEG_STEP):
        robot.update( cmd=addCapOffsetCmd(math.radians(DEG_STEP)) )
        robot.wait(1.0)
        assert g_lastImage is not None
        open( "scan%03d.jpg" % absAngle, "wb" ).write( g_lastImage )


if __name__ == "__main__":
    if len(sys.argv) < 2:
        print __doc__
        sys.exit(2)
    metalog=None
    if len(sys.argv) > 2:
        metalog = MetaLog( filename=sys.argv[2] )
    if len(sys.argv) > 3 and sys.argv[3] == 'F':
        disableAsserts()

    robot = JumpingSumo( metalog=metalog )    
    demo( robot )
    print "Battery:", robot.battery

# vim: expandtab sw=4 ts=4 

Ejemplo n.º 4
0
def parse_and_launch():
    """parse sys.argv arguments and return initialized robot"""

    parser = argparse.ArgumentParser(description='Navigate given pattern in selected area')
    subparsers = parser.add_subparsers(help='sub-command help', dest='command')
    subparsers.required = True
    parser_run = subparsers.add_parser('run', help='run on real HW')
    parser_run.add_argument('config', help='configuration file')
    parser_run.add_argument('--note', help='add description')

    parser_replay = subparsers.add_parser('replay', help='replay from logfile')
    parser_replay.add_argument('logfile', help='recorded log file')
    parser_replay.add_argument('--view', dest='view', action='store_true', help='view parsed log')
    parser_replay.add_argument('--force', '-F', dest='force', action='store_true', help='force replay even for failing output asserts')
    parser_replay.add_argument('--config', dest='config', help='use different configuration file')
    args = parser.parse_args()
    conf = None
    if args.config is not None:
        conf = Config.load(args.config)

    viewer = None
    if args.command == 'replay':
        metalog = MetaLog(args.logfile)
        if conf is None and args.logfile.endswith('.zip'):
            if DEFAULT_ZIP_CONFIG in zipfile.ZipFile(args.logfile).namelist():
                s = str(zipfile.ZipFile(args.logfile).read(DEFAULT_ZIP_CONFIG), 'utf-8')
                conf = Config.loads(s)
        if args.view:
            global g_img_dir
            from tools.viewer import main as viewer_main
            from tools.viewer import getCombinedPose
            viewer = viewer_main
            if args.logfile.endswith('.zip'):
                g_img_dir = args.logfile
            else:
                g_img_dir = os.path.dirname(args.logfile)
        if args.force:
            disableAsserts()

    elif args.command == 'run':
        metalog = MetaLog()

    else:
        assert False, args.command   # unsupported command

    robot = create_robot(metalog, conf)

    for sensor_name in ['gps', 'laser', 'camera']:
        attach_sensor(robot, sensor_name, metalog)

    if viewer is not None:
        robot.extensions.append(('launcher_viewer', launcher_viewer_extension))

    try:
        robot.extensions.append(('emergency_stop', emergency_stop_extension))
        yield robot, metalog, conf, viewer
    except EmergencyStopException:
        print("Emergency STOP Exception!")
        robot.extensions = []  # hack

    # TODO make this code conditional based on the state of finished application
    robot.canproxy.stop()
    robot.canproxy.stop_turn()
    robot.wait(3.0)

    detach_all_sensors(robot)

    if viewer is not None:
        viewer(filename=None, posesScanSet=viewer_data)