Improved Pedestrians

New pedestrians are joining our library of assets.
In addition to improving the looks of our previous citizens we are working on our future generations, boys and girls
will populate our streets.

Figure 1. Improved pedestrian.

Figure 2. New kids.

Last, we are working on pedestrian variations, we’ve planned different haircuts and clothing for each. Also, each piece
of cloth will have different patterns and fabrics, new fashion trends and lots of styles.

Figure 3. Cloth variations.

Figure 4. Pedestrian cloth variations.

New skeleton control interface

Now all pedestrian actors have the same standard skeleton hierarchy, the same animation clips will behave similarly
and fit them all.

Figure 5. Pedestrian skeleton dance.

We have extended the API to allow users to take control of all the parts of a walker skeleton.

The location and rotation of each transform are relative to their parent. Therefore when a parent bone’s transform
is modified, the transforms of the child bones in model space will also be changed accordingly. Check it out in our
documentation!

Snapshots!

Now it is possible to know the state of every actor in the world at a certain frame. No need for synchronous mode
to be active!

The world snapshot contains a timestamp and a list of actor snapshots.

# Retrieve a snapshot of the world at this point in time.
world_snapshot=world.get_snapshot()# Wait for the next tick and retrieve the snapshot of the tick.
world_snapshot=world.wait_for_tick()# Register a callback to get called every time we receive a new snapshot.
world.on_tick(lambdaworld_snapshot:do_something(world_snapshot))

Code example 2. Retrieving a world snapshot.

Actor snapshots contain the data about the physical state of the actor, and it is possible to retrieve the
actual actor through its id.

Updated Synchronous mode

We have made a few modifications to the synchronous mode.

Now tick and apply_settings synchronize automatically with the server so there is no need that users manually
wait for tick. Therefore the old recipe using wait_for_tick is no longer working on synchronous mode.Old user scripts using that recipe will be affected!

The next command will read the JSON file and take each asset and place it inside the Content in Unreal Engine.
It also creates a Package1.Package.json file inside used for defining its props in the blueprint library,
exposing them in the Python API and also exporting those assets if needed.

> make import

Exporting

The following command will create the distribution packages compressed in a .tar.gz file for each cooked package
and place it in Carla/dist/ folder.

> make package ARGS="--packages=Package1,Package2"

Finally, you could use these distribution packages in the CARLA distribution by simply moving them to the CARLA
Import folder and executing the ImportAssets.sh script.

CARLA docker build

We’ve added a new way to compile CARLA: In a docker!

We use ue4-docker to use Unreal Engine inside Docker, that’s why images produced by the python package
that contain UE4 Engine Tools, are prohibited from public distribution. The tutorial can be found in our
documentation!

New python API reference

Finally, we have added a new section to our documentation. It is indeed the new python API reference, a compendium
of all the client-side API methods.

Vulkan support

It is possible to run CARLA with Vulkan (experimental) or OpenGL. Vulkan performs faster than OpenGL but, as it is an experimental build,
there may be some graphical or memory consuming bugs that may affect the user experience when working with CARLA.

Vulkan will prevent CARLA to run off-screen and in Docker, so to run them it is needed to use OpenGL. Therefore the -opengl flag must be activated.

Disclaimer: Despite being an experimental build, Vulkan is the preferred API to run CARLA simulator.