Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
first_actor_waypoint, _ = get_waypoint_in_distance(self._reference_waypoint, self._first_actor_location)
second_actor_waypoint, _ = get_waypoint_in_distance(self._reference_waypoint, self._second_actor_location)
first_actor_transform = carla.Transform(
carla.Location(first_actor_waypoint.transform.location.x,
first_actor_waypoint.transform.location.y,
first_actor_waypoint.transform.location.z - 500),
first_actor_waypoint.transform.rotation)
self._first_actor_transform = carla.Transform(
carla.Location(first_actor_waypoint.transform.location.x,
first_actor_waypoint.transform.location.y,
first_actor_waypoint.transform.location.z + 1),
first_actor_waypoint.transform.rotation)
yaw_1 = second_actor_waypoint.transform.rotation.yaw + 90
second_actor_transform = carla.Transform(
carla.Location(second_actor_waypoint.transform.location.x,
second_actor_waypoint.transform.location.y,
second_actor_waypoint.transform.location.z - 500),
carla.Rotation(second_actor_waypoint.transform.rotation.pitch, yaw_1,
second_actor_waypoint.transform.rotation.roll))
self._second_actor_transform = carla.Transform(
carla.Location(second_actor_waypoint.transform.location.x,
second_actor_waypoint.transform.location.y,
second_actor_waypoint.transform.location.z + 1),
carla.Rotation(second_actor_waypoint.transform.rotation.pitch, yaw_1,
second_actor_waypoint.transform.rotation.roll))
first_actor = CarlaDataProvider.request_new_actor(
'vehicle.nissan.patrol', first_actor_transform)
second_actor = CarlaDataProvider.request_new_actor(
'vehicle.diamondback.century', second_actor_transform)
def __init__(self, carla_weather, dtime=None, animation=False):
"""
Class constructor
"""
self.carla_weather = carla_weather
self.animation = animation
self._sun = ephem.Sun() # pylint: disable=no-member
self._observer_location = ephem.Observer()
geo_location = CarlaDataProvider.get_map().transform_to_geolocation(carla.Location(0, 0, 0))
self._observer_location.lon = str(geo_location.longitude)
self._observer_location.lat = str(geo_location.latitude)
#@TODO This requires the time to be in UTC to be accurate
self.datetime = dtime
if self.datetime:
self._observer_location.date = self.datetime
self.update()
def __init__(self, parent_actor):
self.sensor = None
self._parent = parent_actor
self.lat = 0.0
self.lon = 0.0
world = self._parent.get_world()
bp = world.get_blueprint_library().find('sensor.other.gnss')
self.sensor = world.spawn_actor(bp, carla.Transform(carla.Location(x=1.0, z=2.8)), attach_to=self._parent)
# We need to pass the lambda a weak reference to self to avoid circular
# reference.
weak_self = weakref.ref(self)
self.sensor.listen(lambda event: GnssSensor._on_gnss_event(weak_self, event))
def update(self):
"""
Check if the actor is running a red light
"""
new_status = py_trees.common.Status.RUNNING
transform = CarlaDataProvider.get_transform(self._actor)
location = transform.location
if location is None:
return new_status
veh_extent = self._actor.bounding_box.extent.x
tail_close_pt = self.rotate_point(carla.Vector3D(-0.8 * veh_extent, 0.0, location.z), transform.rotation.yaw)
tail_close_pt = location + carla.Location(tail_close_pt)
tail_far_pt = self.rotate_point(carla.Vector3D(-veh_extent - 1, 0.0, location.z), transform.rotation.yaw)
tail_far_pt = location + carla.Location(tail_far_pt)
for traffic_light, center, waypoints in self._list_traffic_lights:
if self.debug:
z = 2.1
if traffic_light.state == carla.TrafficLightState.Red:
color = carla.Color(155, 0, 0)
elif traffic_light.state == carla.TrafficLightState.Green:
color = carla.Color(0, 155, 0)
else:
color = carla.Color(155, 155, 0)
self._world.debug.draw_point(center + carla.Location(z=z), size=0.2, color=color, life_time=0.01)
for wp in waypoints:
sensor = HDMapReader(vehicle, sensor_spec['reading_frequency'])
# These are the sensors spawned on the carla world
else:
bp = bp_library.find(sensor_spec['type'])
if sensor_spec['type'].startswith('sensor.camera'):
bp.set_attribute('image_size_x', str(sensor_spec['width']))
bp.set_attribute('image_size_y', str(sensor_spec['height']))
bp.set_attribute('fov', str(sensor_spec['fov']))
sensor_location = carla.Location(x=sensor_spec['x'], y=sensor_spec['y'],
z=sensor_spec['z'])
sensor_rotation = carla.Rotation(pitch=sensor_spec['pitch'],
roll=sensor_spec['roll'],
yaw=sensor_spec['yaw'])
elif sensor_spec['type'].startswith('sensor.lidar'):
bp.set_attribute('range', '5000')
sensor_location = carla.Location(x=sensor_spec['x'], y=sensor_spec['y'],
z=sensor_spec['z'])
sensor_rotation = carla.Rotation(pitch=sensor_spec['pitch'],
roll=sensor_spec['roll'],
yaw=sensor_spec['yaw'])
elif sensor_spec['type'].startswith('sensor.other.gnss'):
sensor_location = carla.Location(x=sensor_spec['x'], y=sensor_spec['y'],
z=sensor_spec['z'])
sensor_rotation = carla.Rotation()
# create sensor
sensor_transform = carla.Transform(sensor_location, sensor_rotation)
sensor = self.world.spawn_actor(bp, sensor_transform,
vehicle)
# setup callback
sensor.listen(CallBack(sensor_spec['id'], sensor, self.agent_instance.sensor_interface))
self._sensors_list.append(sensor)
Args:
world:
planner:
origin (typle): (x, y, z)
destination:
Returns:
"""
xys = get_shortest_path_waypoints(planner, (origin[0], origin[1]),
destination)
if len(xys) > 2:
for i in range(len(xys) - 2):
world.debug.draw_line(
carla.Location(*xys[i]),
carla.Location(*xys[i + 1]),
life_time=1.0,
color=carla.Color(0, 255, 0))
elif len(xys) == 2:
world.debug.draw_arrow(
carla.Location(*xys[-2]),
carla.Location(*xys[-1]),
life_time=100.0,
color=carla.Color(0, 255, 0),
thickness=0.5)
def _calculate_base_transform(self, _start_distance, waypoint):
lane_width = waypoint.lane_width
# Patches false junctions
if self._reference_waypoint.is_junction:
stop_at_junction = False
else:
stop_at_junction = True
location, _ = get_location_in_distance_from_wp(waypoint, _start_distance, stop_at_junction)
waypoint = self._wmap.get_waypoint(location)
offset = {"orientation": 270, "position": 90, "z": 0.6, "k": 1.0}
position_yaw = waypoint.transform.rotation.yaw + offset['position']
orientation_yaw = waypoint.transform.rotation.yaw + offset['orientation']
offset_location = carla.Location(
offset['k'] * lane_width * math.cos(math.radians(position_yaw)),
offset['k'] * lane_width * math.sin(math.radians(position_yaw)))
location += offset_location
location.z = self._trigger_location.z + offset['z']
return carla.Transform(location, carla.Rotation(yaw=orientation_yaw)), orientation_yaw
self.cmap = 255.0 * plt.get_cmap('Set1', lut=LSIZE).colors
self.indexer = [x for x in range(LSIZE)]
shuffle(self.indexer)
self.list_routes = []
# get root element
root = self.tree.getroot()
for node in root:
current_route = []
route_id = int(node.get("id"))
route_map = node.get("map")
for wp in node.iter('waypoint'):
loc = carla.Location()
loc.x = float(wp.get("x"))
loc.y = float(wp.get("y"))
loc.z = float(wp.get("z"))
rot = carla.Rotation()
rot.pitch = float(wp.get("pitch"))
rot.roll = float(wp.get("roll"))
rot.yaw = float(wp.get("roll"))
current_route.append(carla.Transform(loc, rot))
self.list_routes.append({'id': route_id, 'map': route_map, 'locations': current_route})
'y':location.y, 'z':location.z})
self.list_traffic_events.append(red_light_event)
# state reset
self._in_red_light = False
self._target_traffic_light = None
# scan for red traffic lights
for traffic_light in self._list_traffic_lights:
if hasattr(traffic_light, 'trigger_volume'):
tl_t = traffic_light.get_transform()
transformed_tv = tl_t.transform(traffic_light.trigger_volume.location)
distance = carla.Location(transformed_tv).distance(location)
s = self.length(traffic_light.trigger_volume.extent) + self.length(self._actor.bounding_box.extent)
if distance <= s:
# this traffic light is affecting the vehicle
if traffic_light.state == carla.TrafficLightState.Red:
self._target_traffic_light = traffic_light
self._in_red_light = True
break
if self._terminate_on_failure and (self.test_status == "FAILURE"):
new_status = py_trees.common.Status.FAILURE
self.logger.debug("%s.update()[%s->%s]" % (self.__class__.__name__, self.status, new_status))