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
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)
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
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)