Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A few changes for 0.9.1 #915

Merged
merged 83 commits into from
Oct 26, 2018
Merged

A few changes for 0.9.1 #915

merged 83 commits into from
Oct 26, 2018

Conversation

nsubiron
Copy link
Collaborator

@nsubiron nsubiron commented Oct 26, 2018

Description

Massive PR with lots of changes required for 0.9.1.

User-side improvements
  • New map Town03, now set as default map.
  • Support for Python 3 on Linux.
  • Add "dynamic_weather.py" script that changes the weather in real-time.
  • More improvements to "manual_control.py", support for changing weather, the camera view, and the vehicle.
  • Add an option to command-line to change quality level when launching the simulator.
API changes
  • API methods for retrieving and changing weather conditions and lighting, world.get_weather() and world.set_weather(params). Add carla.WeatherParametes class that parametrizes the weather conditions, and add weather presets to it: carla.WeatherParametes.ClearNoon, etc.

  • Remove client.ping(), client.get_server_version() accomplishes the same.

  • Add support for requesting the list of actors alive in the current world, world.get_actors(). Returns an ActorList object, behaves like a list but has filter functionality and lazy initialization of Actors.

  • Add id (id of current episode) and map name to carla.World class

  • Rename contains_X() methods to has_X().

  • Add semantic_tags to Actors containing the list of tags of all of its components (these tags match the tags retrieved by the semantic segmentation sensor).

  • Add a "tick" message containing info of all the actors in the scene, this is executed in the background and cached. This way calls to actor.get_transform() or actor.get_location() do not need to connect with the simulator, but can access the cached info. This makes these calls quite cheap.

  • Add world.wait_for_tick() and world.on_tick(callback) methods for synchronizing the client with simulator updates. Both methods return/pass a carla.Timestamp object containing, frame count, delta time of last tick, global simulation time, and OS timestamp.

  • Add actor.get_velocity() and actor.get_acceleration(), these are also cached so its quite cheap to get them.

  • Add bounding boxes to vehicles, vehicle.bounding_box property.

  • Function to enable/disable simulating physics on an actor, actor.set_simulate_physics(enabled=True).

  • Expose traffic lights and signs as actors. Traffic lights have a specialized actor class that has the traffic light state (red, green, yellow) as property.

  • Add methods for accessing and modifying individual items in carla.Image (pixels) and carla.LidarMeasurement (locations).

  • Add collision event sensor, "sensor.other.collision", that triggers a callback on each collision to the actor it is attached to. The callback receives a carla.CollisionEvent containing the actor it collided to and the normal impulse of the collision.

  • Add carla.Vector3D to generalize carla.Location.

Other C++ improvements
  • Add multi-streams for streaming simultaneously to multiple clients (used by the "tick" message).
  • Refactor of client-side code:
    • Add Simulator class shared by all the API objects that decides whether to call the server or retrieve a cached value. Leave detail::Client for pure networking operations only.
    • Add concept of episode to facilitate restarting episodes and changing map in the future.
    • Add EpisodeProxy that allows access to Simulator only if the episode hasn't changed.
    • More geom classes, geom::Vector3D and geom::BoundingBox.
    • More synchronization classes, AtomicSharedPtr, RecurrentSharedFuture, CallbackList.
    • Add ActorVariant for lazy initialization of Actors.
    • Add CachedActorList for caching Actor descriptions and reduce call to the server.
  • Small refactor of quality level related stuff and ported to new game mode.
  • Adjust camera gamma to 2.4 (by @TheNihilisticRobot).
  • Add MsgPack class and functions to serialize rpc objects into/from Buffer.
  • Add AWorldObserver sensor and its serializer for serializing all the actors registered in the episode and sending the "tick" message.
  • Add ACollisionSensor and its serializer for detecting collisions.
  • Add not_spawnable tag for sensors that cannot be spawned by the client (e.g. world observer).
  • Allow vehicles without color attribute, to support vehicles that cannot change its color.
  • Archive Python eggs on Jenkins
  • Fine grained targets in Makefile, compilation times reduced by compiling only what's necessary.
  • Add uncrustify config file for formatting UE4 C++ code.
  • Add support for ".gtest" file, each line of this file is passed to GTest executables as arguments when running make check targets. Very handy for filtering test while developing.
  • Update Content assets package link, which solves a lot of issues related with the assets.
Fixes
  • Fix wildcard filtering issues, now "vehicle.*" or "bmw" patterns work too.
  • Fix actor.set_transform() broken for attached actors.
  • Fix None is a reserved keyword in Python 3, rename carla.ColorConverter.None to carla.ColorConverter.Raw.
  • Workaround for setup.py to link against libcarla_client again (Linux only)
  • Fix leaking objects in simulation when despawning a vehicle. Now pawn's controller is destroyed if necessary when destroying an Actor.
  • Suppress exceptions in destructors.

Issues that fixes

Where has this been tested?

  • Platform(s): Ubuntu 16.04
  • Python version(s): 2.7 and 3.5
  • Unreal Engine version(s): 4.19

Possible Drawbacks

Definitively.


This change is Reviewable

@nsubiron nsubiron added this to the 0.9.1 milestone Oct 26, 2018
@nsubiron nsubiron self-assigned this Oct 26, 2018
@ghost ghost added the review label Oct 26, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment