Beispiel #1
0
def map_dynamic_actor(actor: carla.Actor,
                      world_map: carla.Map) -> DynamicActor:
    location: carla.Location = actor.get_location()
    gnss: carla.GeoLocation = world_map.transform_to_geolocation(location)
    velocity: carla.Vector3D = actor.get_velocity()
    acceleration: carla.Vector3D = actor.get_acceleration()
    color: str = str(
        actor.attributes['color']) if 'color' in actor.attributes else None
    extent: carla.Vector3D = actor.bounding_box.extent

    transform: carla.Transform = carla.Transform(
        rotation=actor.get_transform().rotation)

    transformed_extent: Tuple[carla.Location, carla.Location, carla.Location,
                              carla.Location] = (
                                  transform.transform(
                                      carla.Location(+extent.x, +extent.y, 0)),
                                  transform.transform(
                                      carla.Location(+extent.x, -extent.y, 0)),
                                  transform.transform(
                                      carla.Location(-extent.x, -extent.y, 0)),
                                  transform.transform(
                                      carla.Location(-extent.x, +extent.y, 0)),
                              )

    bbox: Tuple[Point2D, Point2D, Point2D, Point2D] = cast(
        Tuple[Point2D, Point2D, Point2D, Point2D],
        tuple(
            map(
                lambda t: geoloc2point2d(
                    world_map.transform_to_geolocation(
                        carla.Vector3D(location.x + t.x, location.y + t.y,
                                       location.z))), transformed_extent)))

    return DynamicActor(
        id=actor.id,
        type=UncertainProperty(1., resolve_carla_type(actor.type_id)),
        type_id=actor.type_id,
        location=UncertainProperty(1.,
                                   Point3D(location.x, location.y,
                                           location.z)),
        gnss=UncertainProperty(
            1., Point3D(gnss.latitude, gnss.longitude, gnss.altitude)),
        dynamics=ActorDynamics(velocity=UncertainProperty(
            1., Point3D(velocity.x, velocity.y, velocity.z)),
                               acceleration=UncertainProperty(
                                   1.,
                                   Point3D(acceleration.x, acceleration.y,
                                           acceleration.z))),
        props=ActorProperties(color=UncertainProperty(1., color),
                              extent=UncertainProperty(
                                  1., Point3D(extent.x, extent.y, extent.z)),
                              bbox=UncertainProperty(1., bbox)))
Beispiel #2
0
def compute_all_paths_for_actor(
        vehicle: carla.Actor,
        dist_between_waypoints: float,
        path_length: int = 10,
        lane_type: carla.LaneType = carla.LaneType.Driving,
        verbose: bool = False):
    world = vehicle.get_world()
    location = vehicle.get_location()
    paths = compute_all_paths_from_location(location, world,
                                            dist_between_waypoints,
                                            path_length, lane_type, verbose)

    return paths
    def produce(self, agent_vehicle: carla.Actor) -> BirdView:

        all_actors = actors.query_all(world=self._world)
        segregated_actors = actors.segregate_by_type(actors=all_actors)
        agent_vehicle_loc = agent_vehicle.get_location()

        # Reusing already generated static masks for whole map
        self.masks_generator.disable_local_rendering_mode()
        agent_global_px_pos = self.masks_generator.location_to_pixel(
            agent_vehicle_loc)

        cropping_rect = CroppingRect(
            x=int(agent_global_px_pos.x - self.rendering_area.width / 2),
            y=int(agent_global_px_pos.y - self.rendering_area.height / 2),
            width=self.rendering_area.width,
            height=self.rendering_area.height,
        )

        masks = np.zeros(
            shape=(
                len(BirdViewMasks),
                self.rendering_area.height,
                self.rendering_area.width,
            ),
            dtype=np.uint8,
        )
        masks[BirdViewMasks.ROAD.value] = self.full_road_cache[
            cropping_rect.vslice, cropping_rect.hslice]
        masks[BirdViewMasks.LANES.value] = self.full_lanes_cache[
            cropping_rect.vslice, cropping_rect.hslice]
        masks[BirdViewMasks.CENTERLINES.value] = self.full_centerlines_cache[
            cropping_rect.vslice, cropping_rect.hslice]
        masks[BirdViewMasks.BUILDINGS.value] = self.full_buildings_cache[
            cropping_rect.vslice, cropping_rect.hslice]

        # Dynamic masks
        rendering_window = RenderingWindow(origin=agent_vehicle_loc,
                                           area=self.rendering_area)
        self.masks_generator.enable_local_rendering_mode(rendering_window)
        masks = self._render_actors_masks(agent_vehicle, segregated_actors,
                                          masks)
        cropped_masks = self.apply_agent_following_transformation_to_masks(
            agent_vehicle, masks)
        ordered_indices = [
            mask.value for mask in BirdViewMasks.bottom_to_top()
        ]
        return cropped_masks[:, :, ordered_indices]