示例#1
0
    def __init__(self, base, top):
        self.base = base
        self.top = top

        cmd1 = StreamSpec.from_yaml(self.base.get_commands_spec())
        cmd2 = StreamSpec.from_yaml(self.top.get_commands_spec())

        cmd_spec = StreamSpec.join(cmd1, cmd2).to_yaml()

        components = [self.base.get_state_space(), self.top.get_state_space()]
        state_space = ProductManifold(components)
        Dynamics.__init__(self,
                          commands_spec=cmd_spec,
                          state_space=state_space)
示例#2
0
    def __init__(self, base, top):
        self.base = base
        self.top = top

        cmd1 = StreamSpec.from_yaml(self.base.get_commands_spec())
        cmd2 = StreamSpec.from_yaml(self.top.get_commands_spec())

        cmd_spec = StreamSpec.join(cmd1, cmd2).to_yaml()

        components = [self.base.get_state_space(),
                      self.top.get_state_space()]
        state_space = ProductManifold(components)
        Dynamics.__init__(self, commands_spec=cmd_spec,
                          state_space=state_space)
def test_compression1():
    spec = StreamSpec.from_yaml({"shape": [100, 100], "format": "C", "range": [0, 5], "default": 4})

    yaml2 = spec.to_yaml()
    assert yaml2["format"] == "C"
    assert yaml2["range"] == [0, 5]
    assert yaml2["default"] == 4
def check_pickling(x):
    spec = StreamSpec.from_yaml(x)
    sio = StringIO()
    pickle.dump(spec, sio)
    sio = StringIO(sio.getvalue())
    spec2 = pickle.load(sio)
    assert spec == spec2
def check_conversions(x):
    spec = StreamSpec.from_yaml(x)
    assert isinstance(spec, StreamSpec)
    y = spec.to_yaml()
    assert isinstance(y, dict)
    spec2 = spec.from_yaml(y)
    assert spec == spec2
    def __init__(self,
                 world=None,
                 id_world=None,
                 vehicle=None,
                 id_vehicle=None,
                 dt=VehiclesConstants.DEFAULT_SIMULATION_DT,
                 **kwargs):
        self.dt = dt

        if not ((world is not None) ^ (id_world is not None)):
            raise ValueError('Specify exactly one of "world" and "id_world".')
        if not ((vehicle is not None) ^ (id_vehicle is not None)):
            raise ValueError('Specify exactly one of "vehicle" '
                             'and "id_vehicle".')

        vehicles = get_conftools_vehicles()
        worlds = get_conftools_worlds()

        # TODO: user shortcuts
        if vehicle is not None:
            id_vehicle = vehicle['id']
            vehicle_spec = vehicle
            # TODO: check well formed
            vehicle = vehicles.instance_spec(vehicle)
        else:
            vehicle_spec = vehicles[id_vehicle]
            vehicle = vehicles.instance(id_vehicle)

        if world is not None:
            id_world = world['id']
            # TODO: check well formed
            world_spec = world
            world = worlds.instance_spec(world)
        else:
            world_spec = worlds[id_world]
            world = worlds.instance(id_world)

        VehicleSimulation.__init__(self, vehicle, world, **kwargs)

        cmd_spec = StreamSpec.from_yaml(
                                self.vehicle.dynamics.get_commands_spec())

        self.last_commands = cmd_spec.get_default_value()

        if len(self.vehicle.sensors) == 0:
            raise Exception('Vehicle %r has no sensors defined.' % id_vehicle)

        obs_spec = create_obs_spec(self.vehicle)
        self._boot_spec = BootSpec(obs_spec=obs_spec, cmd_spec=cmd_spec,
                                   id_robot=id_vehicle)
        # XXX: id, desc, extra?
        self.commands_source = BootOlympicsConstants.CMD_SOURCE_REST

        self.boot_episode_started = False

        # Save for later
        self.id_world = id_world
        self.id_vehicle = id_vehicle
        self.world_spec = world_spec
        self.vehicle_spec = vehicle_spec
def create_obs_spec(vehicle):
    obs_spec = None
    for attached in vehicle.sensors:
        sensor = attached.sensor
        ss = StreamSpec.from_yaml(sensor.observations_spec)
        obs_spec = (ss if obs_spec is None else StreamSpec.join(obs_spec, ss))
        assert obs_spec is not None
    assert obs_spec is not None
    return obs_spec
def create_obs_spec(vehicle):
    obs_spec = None
    for attached in vehicle.sensors:
        sensor = attached.sensor
        ss = StreamSpec.from_yaml(sensor.observations_spec)
        obs_spec = (ss if obs_spec is None
                    else StreamSpec.join(obs_spec, ss))
        assert obs_spec is not None
    assert obs_spec is not None
    return obs_spec
def check_parsing(x):
    StreamSpec.from_yaml(x)
def test_default_values_5():
    """ 2D default values """
    spec = StreamSpec.from_yaml({"shape": [2, 2], "format": "D", "range": [0, 5], "default": 4})
    assert_allclose(spec.get_default_value(), [[4, 4], [4, 4]])
def test_default_values_4():
    """ Given default value; all the same. """
    spec = StreamSpec.from_yaml({"shape": [3], "format": "D", "range": [0, 5], "default": 4})
    assert_allclose(spec.get_default_value(), [4, 4, 4])
def test_default_values_3():
    """ Given default value. """
    spec = StreamSpec.from_yaml({"shape": [3], "format": "D", "range": [0, 3], "default": [1, 2, 3]})
    assert_allclose(spec.get_default_value(), [1, 2, 3])
def test_default_values_2():
    """ Default default value is middle of range, 
        rounded down for discrete. """
    spec = StreamSpec.from_yaml({"shape": [3], "format": "D", "range": [0, 1]})
    assert_allclose(spec.get_default_value(), [0, 0, 0])
def test_default_values_1():
    """ Default default value is middle of range. """
    spec = StreamSpec.from_yaml({"shape": [3], "format": "C", "range": [0, 1]})
    assert_allclose(spec.get_default_value(), [0.5, 0.5, 0.5])
示例#15
0
    def __init__(self,
                 world=None,
                 id_world=None,
                 vehicle=None,
                 id_vehicle=None,
                 dt=VehiclesConstants.DEFAULT_SIMULATION_DT,
                 **kwargs):
        self.dt = dt

        if not ((world is not None) ^ (id_world is not None)):
            raise ValueError('Specify exactly one of "world" and "id_world".')
        if not ((vehicle is not None) ^ (id_vehicle is not None)):
            raise ValueError('Specify exactly one of "vehicle" '
                             'and "id_vehicle".')

        vehicles = get_conftools_vehicles()
        worlds = get_conftools_worlds()

        # TODO: user shortcuts
        if vehicle is not None:
            id_vehicle = vehicle['id']
            vehicle_spec = vehicle
            # TODO: check well formed
            vehicle = vehicles.instance_spec(vehicle)
        else:
            vehicle_spec = vehicles[id_vehicle]
            vehicle = vehicles.instance(id_vehicle)

        if world is not None:
            id_world = world['id']
            # TODO: check well formed
            world_spec = world
            world = worlds.instance_spec(world)
        else:
            world_spec = worlds[id_world]
            world = worlds.instance(id_world)

        VehicleSimulation.__init__(self, vehicle, world, **kwargs)

        cmd_spec = StreamSpec.from_yaml(
            self.vehicle.dynamics.get_commands_spec())

        self.last_commands = cmd_spec.get_default_value()

        if len(self.vehicle.sensors) == 0:
            raise Exception('Vehicle %r has no sensors defined.' % id_vehicle)

        obs_spec = create_obs_spec(self.vehicle)
        self._boot_spec = BootSpec(obs_spec=obs_spec,
                                   cmd_spec=cmd_spec,
                                   id_robot=id_vehicle)
        # XXX: id, desc, extra?
        self.commands_source = BootOlympicsConstants.CMD_SOURCE_REST

        self.boot_episode_started = False

        # Save for later
        self.id_world = id_world
        self.id_vehicle = id_vehicle
        self.world_spec = world_spec
        self.vehicle_spec = vehicle_spec