Exemple #1
0
def run_carla_client(args):
    with make_connection(CarlaClient, args.host, args.port, timeout=15) as client:
        logging.info('CarlaClient connected')
        filename = '_images/episode_{:0>3d}/image_{:0>5d}.png'
        frames_per_episode = 300
        episode = 0
        while True:
            episode += 1
            settings = CarlaSettings()
            settings.set(SendNonPlayerAgentsInfo=True,SynchronousMode=args.synchronous)
            settings.randomize_seeds()
            camera = Camera('DefaultCamera')
            camera.set_image_size(300, 200) # Do not change this, hard-coded in test.
            settings.add_camera(camera)

            logging.debug('sending CarlaSettings:\n%s', settings)
            logging.info('new episode requested')

            scene = client.request_new_episode(settings)

            number_of_player_starts = len(scene.player_start_spots)
            player_start = random.randint(0, max(0, number_of_player_starts - 1))
            logging.info(
                'start episode at %d/%d player start (%d frames)',
                player_start,
                number_of_player_starts,
                frames_per_episode)

            client.start_episode(player_start)

            use_ai_control = (random.random() < 0.5)
            reverse = (random.random() < 0.2)

            for frame in range(0, frames_per_episode):
                logging.debug('reading measurements...')
                measurements, images = client.read_measurements()

                logging.debug('received data of %d agents', len(measurements.non_player_agents))
                assert len(images) == 1
                assert (images[0].width, images[0].height) == (camera.ImageSizeX, camera.ImageSizeY)

                if args.images_to_disk:
                    images[0].save_to_disk(filename.format(episode, frame))

                logging.debug('sending control...')
                control = measurements.player_measurements.ai_control
                if not use_ai_control:
                    control.steer = random.uniform(-1.0, 1.0)
                    control.throttle = 0.3
                    control.hand_brake = False
                    control.reverse = reverse
                client.send_control(
                    steer=control.steer,
                    throttle=control.throttle,
                    brake=control.brake,
                    hand_brake=control.hand_brake,
                    reverse=control.reverse)
 def run_carla_client(self,
                      carla_settings,
                      number_of_episodes,
                      number_of_frames,
                      use_autopilot_control=None):
     with make_connection(CarlaClient,
                          self.args.host,
                          self.args.port,
                          timeout=15) as client:
         logging.info('CarlaClient connected, running %d episodes',
                      number_of_episodes)
         for _ in range(0, number_of_episodes):
             carla_settings.randomize_seeds()
             carla_settings.randomize_weather()
             logging.debug('sending CarlaSettings:\n%s', carla_settings)
             logging.info('new episode requested')
             scene = client.load_settings(carla_settings)
             number_of_player_starts = len(scene.player_start_spots)
             player_start = random.randint(
                 0, max(0, number_of_player_starts - 1))
             logging.info('start episode at %d/%d player start (%d frames)',
                          player_start, number_of_player_starts,
                          number_of_frames)
             client.start_episode(player_start)
             if use_autopilot_control is None:
                 use_autopilot_control = (random.random() < 0.5)
             reverse = (random.random() < 0.2)
             for _ in range(0, number_of_frames):
                 logging.debug('reading measurements...')
                 measurements, sensor_data = client.read_data()
                 images = [
                     x for x in sensor_data.values()
                     if isinstance(x, Image)
                 ]
                 number_of_agents = len(measurements.non_player_agents)
                 logging.debug('received data of %d agents',
                               number_of_agents)
                 logging.debug('received %d images', len(images))
                 if len(sensor_data) != len(carla_settings._sensors):
                     raise RuntimeError(
                         'received %d, expected %d' %
                         (len(sensor_data), len(carla_settings._sensors)))
                 logging.debug('sending control...')
                 control = measurements.player_measurements.autopilot_control
                 if not use_autopilot_control:
                     control.steer = random.uniform(-1.0, 1.0)
                     control.throttle = 0.3
                     control.hand_brake = False
                     control.reverse = reverse
                 client.send_control(steer=control.steer,
                                     throttle=control.throttle,
                                     brake=control.brake,
                                     hand_brake=control.hand_brake,
                                     reverse=control.reverse)
Exemple #3
0
 def run_carla_client(self, carla_settings, number_of_episodes, number_of_frames, use_ai_control=None):
     with make_connection(CarlaClient, self.args.host, self.args.port, timeout=15) as client:
         logging.info('CarlaClient connected, running %d episodes', number_of_episodes)
         for _ in range(0, number_of_episodes):
             carla_settings.randomize_seeds()
             carla_settings.randomize_weather()
             logging.debug('sending CarlaSettings:\n%s', carla_settings)
             logging.info('new episode requested')
             scene = client.request_new_episode(carla_settings)
             number_of_player_starts = len(scene.player_start_spots)
             player_start = random.randint(0, max(0, number_of_player_starts - 1))
             logging.info(
                 'start episode at %d/%d player start (%d frames)',
                 player_start,
                 number_of_player_starts,
                 number_of_frames)
             client.start_episode(player_start)
             if use_ai_control is None:
                 use_ai_control = (random.random() < 0.5)
             reverse = (random.random() < 0.2)
             for _ in range(0, number_of_frames):
                 logging.debug('reading measurements...')
                 measurements, images = client.read_measurements()
                 number_of_agents = len(measurements.non_player_agents)
                 logging.debug('received data of %d agents', number_of_agents)
                 logging.debug('received %d images', len(images))
                 if len(images) != len(carla_settings._cameras):
                     raise RuntimeError('received %d images, expected %d' % (len(images), len(carla_settings._cameras)))
                 logging.debug('sending control...')
                 control = measurements.player_measurements.ai_control
                 if not use_ai_control:
                     control.steer = random.uniform(-1.0, 1.0)
                     control.throttle = 0.3
                     control.hand_brake = False
                     control.reverse = reverse
                 client.send_control(
                     steer=control.steer,
                     throttle=control.throttle,
                     brake=control.brake,
                     hand_brake=control.hand_brake,
                     reverse=control.reverse)
def main():
    argparser = argparse.ArgumentParser(description=__doc__)
    argparser.add_argument(
        '-v', '--verbose',
        action='store_true',
        dest='debug',
        help='print debug information')
    argparser.add_argument(
        '--log',
        metavar='LOG_FILE',
        default=None,
        help='print output to file')
    argparser.add_argument(
        '--host',
        metavar='H',
        default='127.0.0.1',
        help='IP of the host server (default: 127.0.0.1)')
    argparser.add_argument(
        '-p', '--port',
        metavar='P',
        default=2000,
        type=int,
        help='TCP port to listen to (default: 2000)')
    argparser.add_argument(
        '-s', '--synchronous',
        action='store_true',
        help='enable synchronous mode')
    argparser.add_argument(
        '-i', '--images-to-disk',
        action='store_true',
        help='save images to disk')
    argparser.add_argument(
        '--echo',
        action='store_true',
        help='start a client that just echoes what the server sends')
    argparser.add_argument(
        '-c', '--console',
        action='store_true',
        help='start the client console')

    args = argparser.parse_args()

    name = 'echo_client: ' if args.echo else 'carla_client: '
    logging_config = {
        'format': name + '%(levelname)s: %(message)s',
        'level': logging.DEBUG if args.debug else logging.INFO
    }
    if args.log:
        logging_config['filename'] = args.log
        logging_config['filemode'] = 'w+'
    logging.basicConfig(**logging_config)

    logging.info('listening to server %s:%s', args.host, args.port)

    if args.console:
        cmd = console.CarlaClientConsole(args)
        try:
            cmd.cmdloop()
        finally:
            cmd.cleanup()
        return

    while True:
        try:

            if args.echo:

                with make_connection(TCPClient, args.host, args.port, timeout=15) as client:
                    while True:
                        logging.info('reading...')
                        data = client.read()
                        if not data:
                            raise RuntimeError('failed to read data from server')
                        logging.info('writing...')
                        client.write(data)

            else:

                run_carla_client(args)

        except AssertionError as assertion:
            raise assertion
        except Exception as exception:
            logging.error('exception: %s', exception)
            time.sleep(1)
def run_carla_client(args):
    with make_connection(CarlaClient, args.host, args.port, timeout=15) as client:
        logging.info('CarlaClient connected')
        filename = '_out/test_episode_{:0>4d}/{:s}/{:0>6d}'
        frames_per_episode = 300
        episode = 0
        while True:
            episode += 1
            settings = CarlaSettings()
            settings.set(SendNonPlayerAgentsInfo=True, SynchronousMode=args.synchronous)
            settings.randomize_seeds()
            camera = sensor.Camera('DefaultCamera')
            camera.set_image_size(300, 200) # Do not change this, hard-coded in test.
            settings.add_sensor(camera)
            lidar = sensor.Lidar('DefaultLidar')
            settings.add_sensor(lidar)

            logging.debug('sending CarlaSettings:\n%s', settings)
            logging.info('new episode requested')

            scene = client.load_settings(settings)

            number_of_player_starts = len(scene.player_start_spots)
            player_start = random.randint(0, max(0, number_of_player_starts - 1))
            logging.info(
                'start episode at %d/%d player start (%d frames)',
                player_start,
                number_of_player_starts,
                frames_per_episode)

            client.start_episode(player_start)

            use_autopilot_control = (random.random() < 0.5)
            reverse = (random.random() < 0.2)

            for frame in range(0, frames_per_episode):
                logging.debug('reading measurements...')
                measurements, sensor_data = client.read_data()
                images = [x for x in sensor_data.values() if isinstance(x, sensor.Image)]

                logging.debug('received data of %d agents', len(measurements.non_player_agents))
                if len(images) > 0:
                    assert (images[0].width, images[0].height) == (camera.ImageSizeX, camera.ImageSizeY)

                if args.images_to_disk:
                    for name, data in sensor_data.items():
                        data.save_to_disk(filename.format(episode, name, frame))

                logging.debug('sending control...')
                control = measurements.player_measurements.autopilot_control
                if not use_autopilot_control:
                    control.steer = random.uniform(-1.0, 1.0)
                    control.throttle = 0.3
                    control.hand_brake = False
                    control.reverse = reverse
                client.send_control(
                    steer=control.steer,
                    throttle=control.throttle,
                    brake=control.brake,
                    hand_brake=control.hand_brake,
                    reverse=control.reverse)
Exemple #6
0
def main():
    argparser = argparse.ArgumentParser(description=__doc__)
    argparser.add_argument(
        '-v', '--verbose',
        action='store_true',
        dest='debug',
        help='print debug information')
    argparser.add_argument(
        '--log',
        metavar='LOG_FILE',
        default=None,
        help='print output to file')
    argparser.add_argument(
        '--host',
        metavar='H',
        default='127.0.0.1',
        help='IP of the host server (default: 127.0.0.1)')
    argparser.add_argument(
        '-p', '--port',
        metavar='P',
        default=2000,
        type=int,
        help='TCP port to listen to (default: 2000)')
    argparser.add_argument(
        '-s', '--synchronous',
        action='store_true',
        help='enable synchronous mode')
    argparser.add_argument(
        '-i', '--images-to-disk',
        action='store_true',
        help='save images to disk')
    argparser.add_argument(
        '--echo',
        action='store_true',
        help='start a client that just echoes what the server sends')
    argparser.add_argument(
        '-c', '--console',
        action='store_true',
        help='start the client console')

    args = argparser.parse_args()

    name = 'echo_client: ' if args.echo else 'carla_client: '
    logging_config = {
        'format': name + '%(levelname)s: %(message)s',
        'level': logging.DEBUG if args.debug else logging.INFO
    }
    if args.log:
        logging_config['filename'] = args.log
        logging_config['filemode'] = 'w+'
    logging.basicConfig(**logging_config)

    logging.info('listening to server %s:%s', args.host, args.port)

    if args.console:
        cmd = console.CarlaClientConsole(args)
        try:
            cmd.cmdloop()
        finally:
            cmd.cleanup()
        return

    while True:
        try:

            if args.echo:

                with make_connection(TCPClient, args.host, args.port, timeout=15) as client:
                    while True:
                        logging.info('reading...')
                        data = client.read()
                        if not data:
                            raise RuntimeError('failed to read data from server')
                        logging.info('writing...')
                        client.write(data)

            else:

                run_carla_client(args)

        except AssertionError as assertion:
            raise assertion
        except Exception as exception:
            logging.error('exception: %s', exception)
            time.sleep(1)