CARLA 0.9.3: No-rendering mode, pedestrians control and new towns

Posted by @marcgpuig on January 31, 2019

We are happy to announce CARLA 0.9.3!

Get CARLA 0.9.3

Let’s take a look at the highlights of this release!

New Towns

Town04 is the largest map CARLA ever had, almost three times larger than Town03. It includes a freeway, connection ramps with different heights and a small town. This allows the user to create a huge amount of different scenarios. Town05 includes a small freeway and a lot of different street layouts with more junctions.

We’ve created specific assets just for the freeway of these two maps to make them more realistic.

town04_1 town04_2

Figure 1. Views of the new Town04: Freeway.

town05

Figure 2. View of the new Town05.

New Pedestrians

We created new models for pedestrians, in both genders. These are more realistic and cheap to render thanks to a new more optimized mesh. They include new animations and textures.

You can try to control them using the manual_control.py.

Can be run like this:

> ./manual_control.py --filter=walker

Try to jump with space and run with shift ;)

No Rendering Mode

No Rendering Mode is a 2D map visualization tool that displays vehicles, traffic lights, speed limits, pedestrians, roads and other useful information that occurs in a town map. The main purpose of this tool is to improve the server framerate since the rendered frame won’t need to be transferred to the client. This includes:

  • Map mode: Users can visualize the entire map of a town and all its vehicles, traffic signals, pedestrians, roads information and navigate through it.

no-rendering_2

Figure 3. The whole Town03 from the Map mode with some cars driving around.

  • Hero mode: Users can visualize a vehicle that is being controlled from the manual_control.py script and its vehicles, traffic signals and pedestrians around a specific radius. Therefore, in order to make use of this mode, it is necessary to spawn a vehicle by running the manual_control.py script.

no-rendering_1

Figure 4. Hero mode sample view, the orange circle defines the visible zone of the car in this case.

  • HUD: Some relevant information is shown about the town and for hero mode, additional information related to the hero vehicle such as the vehicle id or its speed are displayed.

To run the simulator in no-rendering mode you should load a “CarlaSettings.ini” with the following content

[CARLA/Server]
DisableRendering=true

save this file, and launch the simulator with

./CarlaUE4.sh -carla-settings=CarlaSettings.ini

Traffic Light Controls

This release enables the user to access and modify traffic lights in the simulation. The traffic light class has been updated in the Python API with new functions. These allow a traffic light’s state to be accessed and modified in Python along with the times for each state. The user can now also freeze any or all traffic light(s) in the scene. It is now possible to retrieve the traffic light impacting a vehicle from the Vehicle class and change its state allowing the vehicle to proceed.

The following code snippet demonstrates the above:

def tick(self, world, clock):
    tl = world.player.get_traffic_light()
    if tl != None and tl.get_state() != carla.TrafficLightState.Green:
        tl.set_state(carla.TrafficLightState.Green)

New sensors

We’ve added two new sensors in our list.

  • Obstacle detector: A simple raycast sensor that will allow your agent to detect if there is something in front of it, and what is it. You can also choose between detecting everything in the world or just dynamic objects (useful for cars).

  • Global Navigation Satellite System: Good news if you want to use an alternative geographic information system. Now you can attach a GNSS to a car to get its geolocation. This geolocalization is based on the geo-reference define in the OpenDrive file associated with each map.

PythonAPI changes

We added a few methods to interact with the actor’s physics:

  • set_velocity allows the user to modify the linear velocity of a given actor.
  • set_angular_velocity grants the user the ability to set the angular velocity of an actor.
  • get_angular_velocity lets the user read the angular velocity of an actor.
  • add_impulse gives the user the posibility of adding an impulse as a vector in the world axis.

We also renamed vehicle.get_vehicle_control() to vehicle.get_control(), to follow the naming convention we set for the walkers, much more clear and less redundant.

Full list of changes

  • Upgraded to Unreal Engine 4.21
  • Upgraded Boost to 1.69.0
  • New Town04 (biggest so far), includes a freeway, new bridge and road barrier, a nicer landscape based on height-map, and new street props
  • New Town05, adding more variety of intersections for the scenario runner
  • Redesigned pedestrian models and animations (walk and idle) for male and female characters
  • Added sensor for detecting obstacles (ray-cast based)
  • Added sensor GNSS (GPS)
  • Basic agent integrated with global router
  • Added a few methods to manage an actor:
    • set_velocity: for setting the linear velocity
    • set_angular_velocity: for setting the angular velocity
    • get_angular_velocity: for getting the angular velocity
    • add_impulse: for applying an impulse (in world axis)
  • Renamed vehicle.get_vehicle_control() to vehicle.get_control() to be consistent with walkers
  • Added new mesh for traffic lights
  • Added new pine tree assets, with their LODs finely tuned for performance
  • Added point transformation functionality for LibCarla and PythonAPI
  • Added “sensor_tick” attribute to sensors (cameras and lidars) to specify the capture rate in seconds
  • Added Export/Import map tools
  • Added get_forward_vector() to rotation and transform, retrieves the unit vector on the rotation’s X-axis
  • Added support for Deepin in PythonAPI’s setup.py
  • Added support for spawning and controlling walkers (pedestrians)
  • Updated BasicAgent to allow setting target_speed and handle US-style traffic lights properly
  • OpenDriveActor has been rewritten using the Waypoint API, this has fixed some bugs
  • Remove crash reporter from packaged build
  • Improved simulator fatal error handling, now uses UE4 fatal error system
  • LibCarla server pipeline now compiles with exceptions disabled for better performance and compatibility with UE4
  • Fixed TCP accept error, too many open files while creating and destroying a lot of sensors
  • Fixed lost error messages in client-side, now when a request fails it reports the reason
  • Fixed global route planner to handle round about turns and made the code consistent with local planner
  • Fixed local planner to avoid premature route pruning at path overlaps
  • Fixed autopilot direction not properly initialized that interfered with the initial raycast direction
  • Fixed crash when an actor was destroyed but not de-registered, e.g. falling out of world bounds