CHANGELOG_UE4.md
spectator_as_ego to the carla.WorldSettings() to allow users to disable this behavior.carla.TrafficManager Python API functionsClient.set_replayer_ignore_spectator(bool)start_replaying.py using flag --move-spectatorFPixelReader::SavePixelsToDisk(PixelData, FilePath) function to crash due to pixel array not set correctly.TrafficManager.vehicle_lane_offset(actor, offset) and TrafficManager.global_lane_offset(offset) methods.Vehicle.get_traffic_light_state() and Vehicle.is_at_traffic_light() causing vehicles to temporarily not lose the information of a traffic light if they moved away from it before it turned green.Vehicle.get_traffic_light_state() function not notify about the green to yellow and yellow to red light state changes.Vehicle.is_at_traffic_light() function to return false if the traffic light was green.world.ground_projection() function to return an incorrect location at large maps.Vehicle.get_failure_state(). Only Rollover failure state is currently supported.Map.get_topology(), causing lanes with no successors to not be part of it.set_desired_speed, to set a vehicle's speed.base_type can be use as a vehicle classification. The possible values are car, truck, van, motorcycle and bycicle.special_type provides more information about the vehicle. It is currently restricted to electric, emergency and taxi, and not all vehicles have this attribute filled.has_dynamics_doors can either be true or false depending on whether or not the vehicle has doors that can be opened using the API.has_lights works in the same way as has_dynamic_doors, but differentiates between vehicles with lights, and those that don't.apply_ackermann_control: to apply an ackermann control command to a vehicleget_ackermann_controller_settings: to get the last ackermann controller settings appliedapply_ackermann_controller_settings: to apply new ackermann controller settingsNormalsSensor, a new sensor with normals informationset_day_night_cycle at the LightManager, to (de)activate the automatic switch of the lights when the simulation changes from day to night mode, and viceversa.listen_to_gbuffer: to set a callback for a specific GBuffer texturesensor.camera.instance_segmentationMaterialParameter, TextureColor and TextureFloatColor to encode texture data and field (normal map, diffuse, etc)apply_color_texture_to_object, apply_float_color_texture_to_object and apply_textures_to_object to paint objects in runtimesquared_length, length, make_unit_vector, dot, dot_2d, distance, distance_2d, distance_squared, distance_squared_2d, get_vector_anglesquared_length, length, make_unit_vectorset_pedestrians_seedlibomp5 to Release.Dockerfileget_bones / set_bones: to get/set the bones of a pedestrianblend_pose: to blend a custom pose with current animationshow_pose / hide_pose: to show or hide the custom poseget_pose_from_animation: to set the custom pose with the animation current frameosm_to_xodr.py and Extraction of map spawn points extract_spawn_points.pyclient.replay_file() replay_sensors to enable or disable the replaying the sensorsget_effect_waypoints(), get_light_boxes() and get_opendrive_id()get_traffic_lights_from_waypoint(), get_traffic_lights_in_junction and get_traffic_light_from_opendrive_idWorldSettings: tile_stream_distance and actor_active_distanceOsm2OdrSettings: proj_string, center_map, generate_traffic_lights, all_junctions_with_traffic_lights, set_osm_way_types, and set_traffic_light_excluded_way_typesset_wheel_steer_direction() function to change the bone angle of each wheel of a vehicleget_wheel_steer_angle() function to get the steer angle of a vehicle wheelscattering_intensity , mie_scattering_scale , rayleigh_scattering_scale to PythonAPI for changing weather attributesoffsetactor.set_enable_gravity() function to enable/disable the gravity affecting the actorload_map_layer and unload_map_layer to control map layers on new maps that support sublevelingget_environment_objectscall to get all the placed objects in the levelenable_environment_objectscall to enable/disable objects of the levelhorizontal_fov parameter to lidar sensor to allow for restriction of its field of viewWorldSettings.deterministic_ragdolls to enable deterministic or physically based ragdollswaypoint.get_landmarks() causing some landmarks to be missed when s = 0actor.set_simulate_physics() for pedestrians and vehicleslaneChange record in converted OSM maps--config parameter in make packageconfig.py to read the .osm files in proper utf-8 encodingactor.set_velocity() to actor.set_target_velocity()actor.set_angular_velocity() to actor.set_target_velocity()exposure_mode is now set to histogram by defaultcarla.Osm2Odr.convert() function and carla.Osm2OdrSettings class to support Open Street Maps to OpenDRIVE conversionworld.freeze_all_traffic_lights() and traffic_light.reset_group()client.stop_replayer() to stop the replayerworld.get_vehicles_light_states() to get all the car light states at onceactor.enable_constant_velocity() / actor.disable_constant_velocity())actor.add_angular_impulse() to add angular impulse to any actoractor.add_force() and actor.add_torque()transform.get_right_vector() and transform.get_up_vector()RailTrack, GuardRail, TrafficLight, Static, Dynamic, Water and Terrainlidar.ray_cast_semantic)open3D_lidar.py, a more friendly LiDAR visualizermake plugins)platform.dist() with recommended distro.linux_distribution()manual_control.py scripts (sensor listening was not stopped before destroying)spawn_npc_sumo.py script computing not allowed routes for a given vehicle classget_traffic_light() would always return NoneUpdate.sh from failing when the root folder contains a space on itWheelPhysicsControl.hhistogram exposure mode)debug.draw_line() is calledGetLeftLaneMarking() from a possible runtime errorMap: get_all_landmarks, get_all_landmarks_from_id and get_all_landmarks_of_typespiral, poly3, and paramPoly3get_waypoint(location) performanceBoundingBox: contains(), get_local_vertices() and get_world_vertices(transform)map.get_waypoint_xodr(road_id, lane_id, s)carla.Weather: fog_density, fog_distance, and (ground) wetnesscarla.client.generate_opendrive_world(opendrive) that loads a map with custom OpenDRIVE basic physical topologyweather.py: allows weather changes using the new weather parameters.BIN for pedestrian navigationlocal_planner.py: agent will now stop when it reaches the desired destinationis_within_distance_ahead()-i to start_replaying.py to replay a session ignoreing the hero vehiclesrange is now set in meters, not in centimetershorizontal_angle is now received in radians, not in degreescarla.GnssEvent renamed to carla.GnssMeasurementcarla.IMUMeasurementcarla.RadarMeasurement and carla.RadarDetectionmanual_control.py with a lens disortion effect examplemanual_control.py with IMU and Radar realtime visualizationcout that interfiered with other python modulesautomatic_control.py failing because the Num Lock key-opengl flag to launch with OpenGL-wshow_recorder_file_info.py)frame_count and frame_number as frame, old members are kept as deprecatedworld.wait_for_tick() now returns a carla.WorldSnapshotworld.on_tick(callback) now receives a carla.WorldSnapshotis_intersection, use is_junction insteadjunction_id that returns de OpenDrive identifier of the current junctionworld.get_actor(id) to find a single actor by idcarla.WeatherParameters.Default for the default (tailor-made for each town) weather profileWorldSnapshot that contains a list of ActorSnapshot, allows capturings a "still image" of the world at a single frameworld.tick() now synchronizes with the simulator and returns the id of the newly started frameworld.apply_settings(settings) now synchronizes with the simulator and returns the id of the frame when the settings took effectworld.remove_on_tick(id) to allow removing on tick callbackscarla.WorldSettingsis_invincible to walkersno_rendering_mode.pyclient_bounding_boxes.py to show bounding boxes client-sidelane_type is now an enum, carla.LaneTypecarla.LaneMarking is not an enum anymore, extended with color, type, lane change, and widthmap.get_waypoint accepts an extra optional flag argument lane_type for filtering lane typescarla.Map can be constructed off-line out of XODR files, carla.Map(town_name, xodr_content)id property to waypoints, uniquely identifying waypoints up to half centimetre precisionmap.transform_to_geolocation to transform Location to GNSS GeoLocationclient.apply_batch_sync that sends commands in batch and waits for server responsespawn_npc.py to spawn vehicles in batchActorList.Filter(...)client.tick()client.load_world(name), client.reload_world(), and client.get_available_maps()lane_change, lane_type, get_right_lane() and get_left_lane()manual_control_steeringwheel.py to control agents using Logitech G29 steering wheels (and maybe others)manual_control.py scriptworld.map_name from API, use world.get_map().name insteadno_rendering_mode.py to improve performance and interfaceworld.get_actors() right after creating the worldno_rendering_mode.pymanual_control.py and no_rendering_mode.py to prevent crashes when used in "no rendering mode"world.get_actors()world.get_actors() returns an ActorList object with filter functionality and lazy initialization of actorscarla.Map and carla.Waypoint classes for querying info about the road layout
map.get_spawn_points() to retrieve the recommended spawn points for vehiclesmap.get_waypoint(location) to query the nearest waypointmap.generate_waypoints(distance) to generate waypoints all over the map at an approximated distancemap.get_topology() for getting a list the tuples of waypoints that define the edges of the road graphwaypoint.next(distance) to retrieve the list of the waypoints at a distance that can be driven from this waypointparent attributes to actors, not None if the actor is attached to another actorsemantic_tags to actors containing the list of tags of all of its componentsactor.set_simulate_physics(enabled=True)vehicle.bounding_box propertyvehicle.get_vehicle_control()world.wait_for_tick() for blocking the current thread until a "tick" message is receivedworld.on_tick(callback) for executing a callback asynchronously each time a "tick" message is receivedcarla.Timestamp object containing, frame count, delta time of last tick, global simulation time, and OS timestampactor.get_transform(), don't need to connect with the simulator, which makes these calls quite cheapworld.debug.draw_*)carla.Worldcarla.Image (pixels) and carla.LidarMeasurement (locations)carla.Vector3D for (x, y, z) objects that are not a carla.Locationclient.ping(), client.get_server_version() accomplishes the samecontains_X() methods to has_X()client.set_timeout(seconds) to use seconds (float) instead of millisecondsactor.set_transform() broken for attached actors-carla-settings fails to load absolute paths (by @harlowja)-quality-level=Lowdoublemake check targets