diff --git a/Docs/bp_library.md b/Docs/bp_library.md
index 2066a8dc7..e07ec6a91 100644
--- a/Docs/bp_library.md
+++ b/Docs/bp_library.md
@@ -1,292 +1,718 @@
Blueprint Library
+The Blueprint Library ([`carla.BlueprintLibrary`](/python_api/#carlablueprintlibrary-class)) is a summary of all [`carla.ActorBlueprint`](/python_api/#carla.ActorBlueprint) and its attributes ([`carla.ActorAttribute`](/python_api/#carla.ActorAttribute)) available to the user in CARLA.
+
+Here is an example code for printing all actor blueprints and their attributes:
+```py
+blueprints = [bp for bp in world.get_blueprint_library().filter('*')]
+for blueprint in blueprints:
+ print(blueprint.id)
+ for attr in blueprint:
+ print(attr)
+```
+
+Check out our [blueprint tutorial](/python_api_tutorial/#blueprints).
### walker
-- walker.pedestrian.0001
-
-- walker.pedestrian.0002
-
-- walker.pedestrian.0003
-
-- walker.pedestrian.0004
-
-- walker.pedestrian.0005
-
-- walker.pedestrian.0006
-
-- walker.pedestrian.0007
-
-- walker.pedestrian.0008
-
-- walker.pedestrian.0009
-
-- walker.pedestrian.0010
-
-- walker.pedestrian.0011
-
-- walker.pedestrian.0012
-
-- walker.pedestrian.0013
-
-- walker.pedestrian.0014
-
+- **walker.pedestrian.0001**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0002**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0003**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0004**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0005**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0006**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0007**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0008**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0009**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0010**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0011**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0012**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0013**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
+- **walker.pedestrian.0014**
+ - **Attributes:**
+ - `gender` (String)
+ - `is_invincible` (Bool) – Modifiable
+ - `age` (String)
+ - `role_name` (String) – Modifiable
### static
-- static.prop.advertisement
-
-- static.prop.atm
-
-- static.prop.barbeque
-
-- static.prop.barrel
-
-- static.prop.bench01
-
-- static.prop.bench02
-
-- static.prop.bench03
-
-- static.prop.bike helmet
-
-- static.prop.bikeparking
-
-- static.prop.bin
-
-- static.prop.box01
-
-- static.prop.box02
-
-- static.prop.box03
-
-- static.prop.briefcase
-
-- static.prop.brokentile01
-
-- static.prop.brokentile02
-
-- static.prop.brokentile03
-
-- static.prop.brokentile04
-
-- static.prop.busstop
-
-- static.prop.chainbarrier
-
-- static.prop.chainbarrierend
-
-- static.prop.clothcontainer
-
-- static.prop.clothesline
-
-- static.prop.colacan
-
-- static.prop.constructioncone
-
-- static.prop.container
-
-- static.prop.creasedbox01
-
-- static.prop.creasedbox02
-
-- static.prop.creasedbox03
-
-- static.prop.dirtdebris01
-
-- static.prop.dirtdebris02
-
-- static.prop.dirtdebris03
-
-- static.prop.doghouse
-
-- static.prop.fountain
-
-- static.prop.garbage01
-
-- static.prop.garbage02
-
-- static.prop.garbage03
-
-- static.prop.garbage04
-
-- static.prop.garbage05
-
-- static.prop.garbage06
-
-- static.prop.gardenlamp
-
-- static.prop.glasscontainer
-
-- static.prop.gnome
-
-- static.prop.guitarcase
-
-- static.prop.ironplank
-
-- static.prop.kiosk_01
-
-- static.prop.mailbox
-
-- static.prop.maptable
-
-- static.prop.mobile
-
-- static.prop.motorhelmet
-
-- static.prop.pergola
-
-- static.prop.plantpot01
-
-- static.prop.plantpot02
-
-- static.prop.plantpot03
-
-- static.prop.plantpot04
-
-- static.prop.plantpot05
-
-- static.prop.plantpot06
-
-- static.prop.plantpot07
-
-- static.prop.plantpot08
-
-- static.prop.plasticbag
-
-- static.prop.plasticchair
-
-- static.prop.plastictable
-
-- static.prop.platformgarbage01
-
-- static.prop.purse
-
-- static.prop.shop01
-
-- static.prop.shoppingbag
-
-- static.prop.shoppingcart
-
-- static.prop.shoppingtrolley
-
-- static.prop.slide
-
-- static.prop.streetbarrier
-
-- static.prop.streetfountain
-
-- static.prop.streetsign
-
-- static.prop.streetsign01
-
-- static.prop.streetsign04
-
-- static.prop.swing
-
-- static.prop.swingcouch
-
-- static.prop.table
-
-- static.prop.trafficcone01
-
-- static.prop.trafficcone02
-
-- static.prop.trafficwarning
-
-- static.prop.trampoline
-
-- static.prop.trashbag
-
-- static.prop.trashcan01
-
-- static.prop.trashcan02
-
-- static.prop.trashcan03
-
-- static.prop.trashcan04
-
-- static.prop.trashcan05
-
-- static.prop.travelcase
-
-- static.prop.vendingmachine
-
-- static.prop.wateringcan
-
-- static.trigger.friction
-
+- **static.prop.advertisement**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.atm**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.barbeque**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.barrel**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.bench01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.bench02**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.bench03**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.bike helmet**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.bikeparking**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.bin**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.box01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.box02**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.box03**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.briefcase**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.brokentile01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.brokentile02**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.brokentile03**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.brokentile04**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.busstop**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.chainbarrier**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.chainbarrierend**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.clothcontainer**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.clothesline**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.colacan**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.constructioncone**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.container**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.creasedbox01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.creasedbox02**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.creasedbox03**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.dirtdebris01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.dirtdebris02**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.dirtdebris03**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.doghouse**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.fountain**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.garbage01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.garbage02**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.garbage03**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.garbage04**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.garbage05**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.garbage06**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.gardenlamp**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.glasscontainer**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.gnome**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.guitarcase**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.ironplank**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.kiosk_01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.mailbox**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.maptable**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.mobile**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.motorhelmet**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.pergola**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plantpot01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plantpot02**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plantpot03**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plantpot04**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plantpot05**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plantpot06**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plantpot07**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plantpot08**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plasticbag**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plasticchair**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.plastictable**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.platformgarbage01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.purse**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.shop01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.shoppingbag**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.shoppingcart**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.shoppingtrolley**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.slide**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.streetbarrier**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.streetfountain**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.streetsign**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.streetsign01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.streetsign04**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.swing**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.swingcouch**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.table**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.trafficcone01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.trafficcone02**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.trafficwarning**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.trampoline**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.trashbag**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.trashcan01**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.trashcan02**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.trashcan03**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.trashcan04**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.trashcan05**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.travelcase**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.vendingmachine**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.prop.wateringcan**
+ - **Attributes:**
+ - `size` (String)
+ - `role_name` (String) – Modifiable
+- **static.trigger.friction**
+ - **Attributes:**
+ - `extent_y` (Float) – Modifiable
+ - `extent_z` (Float) – Modifiable
+ - `extent_x` (Float) – Modifiable
+ - `friction` (Float) – Modifiable
+ - `role_name` (String) – Modifiable
### controller
-- controller.ai.walker
-
+- **controller.ai.walker**
+ - **Attributes:**
+ - `role_name` (String) – Modifiable
### sensor
-- sensor.camera.depth
-
-- sensor.camera.rgb
-
-- sensor.camera.semantic_segmentation
-
-- sensor.lidar.ray_cast
-
-- sensor.other.collision
-
-- sensor.other.gnss
-
-- sensor.other.lane_invasion
-
-- sensor.other.obstacle
-
+- **sensor.camera.depth**
+ - **Attributes:**
+ - `fov` (Float) – Modifiable
+ - `image_size_y` (Int) – Modifiable
+ - `sensor_tick` (Float) – Modifiable
+ - `image_size_x` (Int) – Modifiable
+ - `role_name` (String) – Modifiable
+- **sensor.camera.rgb**
+ - **Attributes:**
+ - `motion_blur_max_distortion` (Float) – Modifiable
+ - `motion_blur_intensity` (Float) – Modifiable
+ - `gamma` (Float) – Modifiable
+ - `enable_postprocess_effects` (Bool) – Modifiable
+ - `fov` (Float) – Modifiable
+ - `image_size_y` (Int) – Modifiable
+ - `image_size_x` (Int) – Modifiable
+ - `motion_blur_min_object_screen_size` (Float) – Modifiable
+ - `sensor_tick` (Float) – Modifiable
+ - `role_name` (String) – Modifiable
+- **sensor.camera.semantic_segmentation**
+ - **Attributes:**
+ - `fov` (Float) – Modifiable
+ - `image_size_y` (Int) – Modifiable
+ - `sensor_tick` (Float) – Modifiable
+ - `image_size_x` (Int) – Modifiable
+ - `role_name` (String) – Modifiable
+- **sensor.lidar.ray_cast**
+ - **Attributes:**
+ - `lower_fov` (Float) – Modifiable
+ - `upper_fov` (Float) – Modifiable
+ - `rotation_frequency` (Float) – Modifiable
+ - `points_per_second` (Int) – Modifiable
+ - `range` (Float) – Modifiable
+ - `channels` (Int) – Modifiable
+ - `sensor_tick` (Float) – Modifiable
+ - `role_name` (String) – Modifiable
+- **sensor.other.collision**
+ - **Attributes:**
+ - `role_name` (String) – Modifiable
+- **sensor.other.gnss**
+ - **Attributes:**
+ - `role_name` (String) – Modifiable
+- **sensor.other.lane_invasion**
+ - **Attributes:**
+ - `role_name` (String) – Modifiable
+- **sensor.other.obstacle**
+ - **Attributes:**
+ - `debug_linetrace` (Bool) – Modifiable
+ - `hit_radius` (Float) – Modifiable
+ - `distance` (Float) – Modifiable
+ - `sensor_tick` (Float) – Modifiable
+ - `only_dynamics` (Bool) – Modifiable
+ - `role_name` (String) – Modifiable
### vehicle
-- vehicle.audi.a2
-
-- vehicle.audi.etron
-
-- vehicle.audi.tt
-
-- vehicle.bh.crossbike
-
-- vehicle.bmw.grandtourer
-
-- vehicle.bmw.isetta
-
-- vehicle.carlamotors.carlacola
-
-- vehicle.chevrolet.impala
-
-- vehicle.citroen.c3
-
-- vehicle.diamondback.century
-
-- vehicle.dodge_charger.police
-
-- vehicle.ford.mustang
-
-- vehicle.gazelle.omafiets
-
-- vehicle.harley-davidson.low rider
-
-- vehicle.jeep.wrangler_rubicon
-
-- vehicle.kawasaki.ninja
-
-- vehicle.lincoln.mkz2017
-
-- vehicle.mercedes-benz.coupe
-
-- vehicle.mini.cooperst
-
-- vehicle.nissan.micra
-
-- vehicle.nissan.patrol
-
-- vehicle.seat.leon
-
-- vehicle.tesla.model3
-
-- vehicle.toyota.prius
-
-- vehicle.volkswagen.t2
-
-- vehicle.yamaha.yzf
-
+- **vehicle.audi.a2**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.audi.etron**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.audi.tt**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.bh.crossbike**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `driver_id` (Int) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.bmw.grandtourer**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.bmw.isetta**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.carlamotors.carlacola**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.chevrolet.impala**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.citroen.c3**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.diamondback.century**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `driver_id` (Int) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.dodge_charger.police**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.ford.mustang**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.gazelle.omafiets**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `driver_id` (Int) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.harley-davidson.low rider**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `driver_id` (Int) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.jeep.wrangler_rubicon**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.kawasaki.ninja**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `driver_id` (Int) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.lincoln.mkz2017**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.mercedes-benz.coupe**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.mini.cooperst**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.nissan.micra**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.nissan.patrol**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.seat.leon**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.tesla.model3**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.toyota.prius**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.volkswagen.t2**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `sticky_control` (Bool) – Modifiable
+ - `object_type` (String)
+ - `color` (RGBColor) – Modifiable
+ - `role_name` (String) – Modifiable
+- **vehicle.yamaha.yzf**
+ - **Attributes:**
+ - `number_of_wheels` (Int)
+ - `object_type` (String)
+ - `sticky_control` (Bool) – Modifiable
+ - `driver_id` (Int) – Modifiable
+ - `role_name` (String) – Modifiable
diff --git a/Docs/cameras_and_sensors.md b/Docs/cameras_and_sensors.md
index f593a47a3..eb2b86b4e 100644
--- a/Docs/cameras_and_sensors.md
+++ b/Docs/cameras_and_sensors.md
@@ -35,7 +35,7 @@ type of data. However, the data produced by a sensor comes always tagged with:
| Sensor data attribute | Type | Description |
| --------------------- | ------ | ----------- |
| `frame` | int | Frame number when the measurement took place |
-| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the epispode |
+| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the episode |
| `transform` | carla.Transform | Transform in world coordinates of the sensor at the time of the measurement |
Most sensor data objects, like images and lidar measurements, have a function
@@ -91,7 +91,7 @@ objects.
| Sensor data attribute | Type | Description |
| --------------------- | ---- | ----------- |
| `frame` | int | Frame number when the measurement took place |
-| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the epispode |
+| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the episode |
| `transform` | carla.Transform | Transform in world coordinates of the sensor at the time of the measurement |
| `width` | int | Image width in pixels |
| `height` | int | Image height in pixels |
@@ -119,7 +119,7 @@ objects.
| Sensor data attribute | Type | Description |
| --------------------- | ---- | ----------- |
| `frame` | int | Frame number when the measurement took place |
-| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the epispode |
+| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the episode |
| `transform` | carla.Transform | Transform in world coordinates of the sensor at the time of the measurement |
| `width` | int | Image width in pixels |
| `height` | int | Image height in pixels |
@@ -158,7 +158,7 @@ objects.
| Sensor data attribute | Type | Description |
| --------------------- | ---- | ----------- |
| `frame` | int | Frame number when the measurement took place |
-| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the epispode |
+| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the episode |
| `transform` | carla.Transform | Transform in world coordinates of the sensor at the time of the measurement |
| `width` | int | Image width in pixels |
| `height` | int | Image height in pixels |
@@ -226,7 +226,7 @@ objects.
| Sensor data attribute | Type | Description |
| -------------------------- | ---------- | ----------- |
| `frame` | int | Frame number when the measurement took place |
-| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the epispode |
+| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the episode |
| `transform` | carla.Transform | Transform in world coordinates of the sensor at the time of the measurement |
| `horizontal_angle` | float | Angle in XY plane of the lidar this frame (in degrees) |
| `channels` | int | Number of channels (lasers) of the lidar |
@@ -268,7 +268,7 @@ object for each collision registered
| Sensor data attribute | Type | Description |
| ---------------------- | ----------- | ----------- |
| `frame` | int | Frame number when the measurement took place |
-| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the epispode |
+| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the episode |
| `transform` | carla.Transform | Transform in world coordinates of the sensor at the time of the measurement |
| `actor` | carla.Actor | Actor that measured the collision ("self" actor) |
| `other_actor` | carla.Actor | Actor against whom we collide |
@@ -300,7 +300,7 @@ object for each lane marking crossed by the actor
| Sensor data attribute | Type | Description |
| ----------------------- | ----------- | ----------- |
| `frame` | int | Frame number when the measurement took place |
-| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the epispode |
+| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the episode |
| `transform` | carla.Transform | Transform in world coordinates of the sensor at the time of the measurement |
| `actor` | carla.Actor | Actor that invaded another lane ("self" actor) |
| `crossed_lane_markings` | carla.LaneMarking list | List of lane markings that have been crossed |
@@ -319,7 +319,7 @@ objects.
| Sensor data attribute | Type | Description |
| ---------------------- | ----------- | ----------- |
| `frame` | int | Frame number when the measurement took place |
-| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the epispode |
+| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the episode |
| `transform` | carla.Transform | Transform in world coordinates of the sensor at the time of the measurement |
| `latitude` | double | Latitude position of the actor |
| `longitude` | double | Longitude position of the actor |
@@ -347,6 +347,9 @@ objects.
| Sensor data attribute | Type | Description |
| ---------------------- | ----------- | ----------- |
+| `frame` | int | Frame number when the measurement took place |
+| `timestamp` | double | Timestamp of the measurement in simulation seconds since the beginning of the episode |
+| `transform` | carla.Transform | Transform in world |
| `actor` | carla.Actor | Actor that detected the obstacle ("self" actor) |
| `other_actor` | carla.Actor | Actor detected as obstacle |
-| `distance ` | float | Distance from actor to other_actor |
+| `distance` | float | Distance from actor to other_actor |
diff --git a/Docs/configuring_the_simulation.md b/Docs/configuring_the_simulation.md
index 110107d28..13cc5b3fd 100644
--- a/Docs/configuring_the_simulation.md
+++ b/Docs/configuring_the_simulation.md
@@ -4,12 +4,6 @@ Before you start running your own experiments there are few details to take into
account at the time of configuring your simulation. In this document we cover
the most important ones.
-!!! tip
- Use [PythonAPI/util/config.py][configlink] to configure the simulator
- from the command-line.
-
-[configlink]: https://github.com/carla-simulator/carla/blob/master/PythonAPI/util/config.py
-
Changing the map
----------------
@@ -41,7 +35,7 @@ Vulkan _(if installed)_ is the default graphics API used by Unreal Engine and CA
It consumes more memory but performs faster.
On the other hand, OpenGL is less memory consuming but performs slower than Vulkan.
-!!!note
+!!! note
Vulkan is an experimental build so it may have some bugs when running the simulator.
OpenGL API can be selected with the flag `-opengl`.
@@ -192,10 +186,38 @@ at the example [synchronous_mode.py][syncmodelink].
Command-line options
--------------------------
+!!! important
+ Some of the command-line options are not available in `Linux` due to the "Shipping" build. Therefore, the use of
+ [`config.py`][configlink] script is needed to configure the simulation.
+
+[configlink]: https://github.com/carla-simulator/carla/blob/master/PythonAPI/util/config.py
+
+Some configuration examples:
+
+```sh
+> ./config.py --no-rendering # Disable rendering
+> ./config.py --map Town05 # Change map
+> ./config.py --weather ClearNoon # Change weather
+...
+```
+
+To check all the available configurations, run the following command:
+
+```sh
+> ./config.py --help
+```
+
+Commands directly available:
+
* `-carla-rpc-port=N` Listen for client connections at port N, streaming port is set to N+1 by default.
* `-carla-streaming-port=N` Specify the port for sensor data streaming, use 0 to get a random unused port.
* `-quality-level={Low,Epic}` Change graphics quality level.
- * `-no-rendering` Disable rendering.
* [Full list of UE4 command-line arguments][ue4clilink] (note that many of these won't work in the release version).
+Example:
+
+```sh
+> ./CarlaUE4.sh -carla-rpc-port=3000
+```
+
[ue4clilink]: https://docs.unrealengine.com/en-US/Programming/Basics/CommandLineArguments
diff --git a/Docs/cpp_reference.md b/Docs/cpp_reference.md
new file mode 100644
index 000000000..8fb8aa75d
--- /dev/null
+++ b/Docs/cpp_reference.md
@@ -0,0 +1,37 @@
+
+C++ Reference
+We use Doxygen to generate the documentation of our C++ code:
+
+[Libcarla/Source](http://carla.org/Doxygen/html/dir_b9166249188ce33115fd7d5eed1849f2.html)
+[Unreal/CarlaUE4/Source](http://carla.org/Doxygen/html/dir_733e9da672a36443d0957f83d26e7dbf.html)
+[Unreal/CarlaUE4/Carla/Plugins](http://carla.org/Doxygen/html/dir_8fc34afb5f07a67966c78bf5319f94ae.html)
+
+The generated documentation is available at this link ****
+
+!!! note
+ Document updates are done automatically by GitHub.
+
+### Create doxygen documentation
+
+!!! important
+ [Doxygen](http://www.doxygen.nl/index.html) is required to generate the documentation
+ and [Graphviz](https://www.graphviz.org/) for the graph drawing toolkit.
+
+1- Install doxygen and graphviz with the following command:
+
+```sh
+# linux
+> sudo apt-get install doxygen graphviz
+```
+
+2- Once installed, go to the project root folder where the _Doxyfile_ file is situated and
+run the following command:
+
+```sh
+> doxygen
+```
+
+It will start to build the documentation webpage.
+The resulting webpage can be found at Doxygen/html/
+
+3- Open _index.html_ in a browser. Now you have your local cpp documentation!
diff --git a/Docs/how_to_build_on_windows.md b/Docs/how_to_build_on_windows.md
index a007b0c2a..d2fe1afb5 100644
--- a/Docs/how_to_build_on_windows.md
+++ b/Docs/how_to_build_on_windows.md
@@ -11,13 +11,15 @@
Be sure that these programs are added to your environment path, so you can use them from your command prompt.
!!! important
- If make complins about missing libintl3.dll or/and libiconv2.dll please donwload the [dependencies](http://gnuwin32.sourceforge.net/downlinks/make-dep-zip.php) and extract the bin contento into the make installation path.
+ If make complains about missing libintl3.dll or/and libiconv2.dll please donwload the [dependencies](http://gnuwin32.sourceforge.net/downlinks/make-dep-zip.php) and extract the bin contento into the make installation path.
Also:
- [Unreal Engine](https://www.unrealengine.com/download) (v4.22.x)
- [Visual Studio](https://www.visualstudio.com/downloads/) (2017)
+Make sure all the modules of the **requirements.txt** files are installed.
+
Environment Setup
In order to build CARLA you must **enable the x64 Visual C++ Toolset**. The Windows 8.1 SDK is also required for installation.
I recommend to use this environment for everything you do in this tutorial.
@@ -39,10 +41,10 @@ and get in the created folder:
cd carla
```
-Download Carla contents
+Download CARLA contents
Depending on the Carla version that you are unsing download one of the links that you can find in `\Util\ContentVersions.txt` and extract the content to `Unreal\CarlaUE4\Content\Carla`, if the path doesn't exist, create it.
-# Build Carla
+# Build CARLA
---
Once you have downloaded the repo and extract the Carla contents you can start with the automatic build. The process may take a while, it will download and install the necessary libraries (Boost, RPCLib and googletest). Expect 20-40 minutes, depending on your hardware and internet connection. If you get any error comment on [GitHub #647](https://github.com/carla-simulator/carla/issues/647) issue or just ask on the [Windows Discord channel](https://discord.gg/42KJdRj).
@@ -68,16 +70,16 @@ Example of building Carla 0.9.0 for first time:
4) make launch
```
-# Update Carla
+# Update CARLA
---
Every new release of CARLA we release a new package with the latest changes in the CARLA assets. To download the latest version and recompile CARLA, run:
```cmd
1) make clean # Deletes all the binaries and temporals generated by the build system
-2) git pull # Download the las Carla modifications
+2) git pull # Download the last CARLA modifications
3) Download the latest version of assets (if needed)
-4) make launch # Build and launch Carla
+4) make launch # Build and launch CARLA
```
# Possible build errors
diff --git a/Docs/index.md b/Docs/index.md
index d12617d3b..ea8cfccd5 100644
--- a/Docs/index.md
+++ b/Docs/index.md
@@ -21,7 +21,8 @@
Advanced topics
* [Python API reference](python_api.md)
- * [Blueprint Library] (bp_library.md)
+ * [C++ Reference](cpp_reference.md)
+ * [Blueprint Library](bp_library.md)
* [Running without display and selecting GPUs](carla_headless.md)
* [Running in a Docker](carla_docker.md)
* [How to make a new map with RoadRunner](how_to_make_a_new_map.md)
diff --git a/Docs/python_api.md b/Docs/python_api.md
index c273757e5..fb667097b 100644
--- a/Docs/python_api.md
+++ b/Docs/python_api.md
@@ -128,16 +128,6 @@
- [**as_str**(**self**)](#carla.ActorAttribute.as_str) _Method_
- [**as_color**(**self**)](#carla.ActorAttribute.as_color) _Method_
- [**\__eq__**(**self**, **other**)](#carla.ActorAttribute.__eq__) _Method_
- - [**\__eq__**(**self**, **other**)](#carla.ActorAttribute.__eq__) _Method_
- - [**\__eq__**(**self**, **other**)](#carla.ActorAttribute.__eq__) _Method_
- - [**\__eq__**(**self**, **other**)](#carla.ActorAttribute.__eq__) _Method_
- - [**\__eq__**(**self**, **other**)](#carla.ActorAttribute.__eq__) _Method_
- - [**\__eq__**(**self**, **other**)](#carla.ActorAttribute.__eq__) _Method_
- - [**\__ne__**(**self**, **other**)](#carla.ActorAttribute.__ne__) _Method_
- - [**\__ne__**(**self**, **other**)](#carla.ActorAttribute.__ne__) _Method_
- - [**\__ne__**(**self**, **other**)](#carla.ActorAttribute.__ne__) _Method_
- - [**\__ne__**(**self**, **other**)](#carla.ActorAttribute.__ne__) _Method_
- - [**\__ne__**(**self**, **other**)](#carla.ActorAttribute.__ne__) _Method_
- [**\__ne__**(**self**, **other**)](#carla.ActorAttribute.__ne__) _Method_
- [**\__nonzero__**(**self**)](#carla.ActorAttribute.__nonzero__) _Method_
- [**\__bool__**(**self**)](#carla.ActorAttribute.__bool__) _Method_
@@ -587,7 +577,7 @@ Class that defines the attachment options. See [`world.spawn_actor`](#[carla.Wo
---
## carla.BlueprintLibrary _class_
-Class that provides access to blueprints.
+Class that provides access to [blueprints](../bp_library/).
Methods
- **find**(**self**)
@@ -879,40 +869,10 @@ Class that defines an attribute of a [carla.ActorBlueprint](#carla.ActorBlueprin
- **as_color**(**self**)
- **\__eq__**(**self**, **other**)
- **Parameters:**
- - `other` (_bool_)
-- **\__eq__**(**self**, **other**)
- - **Parameters:**
- - `other` (_int_)
-- **\__eq__**(**self**, **other**)
- - **Parameters:**
- - `other` (_float_)
-- **\__eq__**(**self**, **other**)
- - **Parameters:**
- - `other` (_str_)
-- **\__eq__**(**self**, **other**)
- - **Parameters:**
- - `other` (_[carla.Color](#carla.Color)_)
-- **\__eq__**(**self**, **other**)
- - **Parameters:**
- - `other` (_[carla.ActorAttribute](#carla.ActorAttribute)_)
+ - `other` (_bool / int / float / str / [carla.Color](#carla.Color) / [carla.ActorAttribute](#carla.ActorAttribute)_)
- **\__ne__**(**self**, **other**)
- **Parameters:**
- - `other` (_bool_)
-- **\__ne__**(**self**, **other**)
- - **Parameters:**
- - `other` (_int_)
-- **\__ne__**(**self**, **other**)
- - **Parameters:**
- - `other` (_float_)
-- **\__ne__**(**self**, **other**)
- - **Parameters:**
- - `other` (_str_)
-- **\__ne__**(**self**, **other**)
- - **Parameters:**
- - `other` (_[carla.Color](#carla.Color)_)
-- **\__ne__**(**self**, **other**)
- - **Parameters:**
- - `other` (_[carla.ActorAttribute](#carla.ActorAttribute)_)
+ - `other` (_bool / int / float / str / [carla.Color](#carla.Color) / [carla.ActorAttribute](#carla.ActorAttribute)_)
- **\__nonzero__**(**self**)
- **\__bool__**(**self**)
- **\__int__**(**self**)
diff --git a/Docs/python_api_tutorial.md b/Docs/python_api_tutorial.md
index fda53598d..130b7c6db 100644
--- a/Docs/python_api_tutorial.md
+++ b/Docs/python_api_tutorial.md
@@ -60,7 +60,7 @@ blueprints also has an ID that uniquely identifies it and all the actor
instances created with it. Examples of IDs are "vehicle.nissan.patrol" or
"sensor.camera.depth".
-The list of all available blueprints is kept in the **blueprint library**
+The list of all available blueprints is kept in the [**blueprint library**](/bp_library)
```py
blueprint_library = world.get_blueprint_library()
@@ -231,7 +231,7 @@ Where:
- *clutch_strength*: The clutch strength of the vehicle. Measured in Kgm^2/s
- *final_ratio*: The fixed ratio from transmission to wheels.
-- *forward_gears*: List of `GearPhysicsControl` objects.
+- *forward_gears*: List of [`GearPhysicsControl`](python_api.md#carla.GearPhysicsControl) objects.
- *mass*: The mass of the vehicle measured in Kg
- *drag_coefficient*: Drag coefficient of the vehicle's chassis
@@ -416,7 +416,7 @@ the map to provide a list of recommended locations for spawning vehicles,
[`map.get_spawn_points()`](python_api.md#carla.Map.get_spawn_points).
However, the real power of this map API comes apparent when we introduce
-waypoints. We can tell the map to give us a waypoint on the road closest to our
+[`waypoints`](python_api.md#carla.Waypoint). We can tell the map to give us a waypoint on the road closest to our
vehicle
```py
@@ -426,11 +426,35 @@ waypoint = map.get_waypoint(vehicle.get_location())
This waypoint's [`transform`](python_api.md#carla.Waypoint.transform) is located on a drivable lane, and it's oriented
according to the road direction at that point.
+Waypoints have their unique identifier [`carla.Waypoint.id`](python_api.md#carla.Waypoint.id) based on the hash of its
+[`road_id`](python_api.md#carla.Waypoint.road_id), [`section_id`](python_api.md#carla.Waypoint.section_id),
+[`lane_id`](python_api.md#carla.Waypoint.lane_id) and [`s`](python_api.md#carla.Waypoint.s).
+They also provide more information about lanes, such as the [`lane_type`](python_api.md#carla.Waypoint.lane_type) of the current waypoint
+and if a [`lane_change`](python_api.md#carla.Waypoint.lane_change) is possible and in which direction.
+
+```py
+# Nearest waypoint on the center of a Driving or Sidewalk lane.
+waypoint = map.get_waypoint(vehicle.get_location(),project_to_road=True, lane_type=(carla.LaneType.Driving | carla.LaneType.Sidewalk))
+# Get the current lane type (driving or sidewalk).
+lane_type = waypoint.lane_type
+# Get available lane change.
+lane_change = waypoint.lane_change
+```
+
+Surrounding lane markings _(right / left)_ can also be accessed through the waypoint API. Therefore, it is possible to know all the information
+provided by a [`carla.LaneMarking`](python_api.md#carla.LaneMarking), like the lane marking [`type`](python_api.md#carla.LaneMarkingType) and its
+[`lane_change`](python_api.md#carla.LaneChange) availability.
+
+```py
+# Get right lane marking type
+right_lm_type = waypoint.right_lane_marking.type
+```
+
Waypoints also have function to query the "next" waypoints; this method returns
a list of waypoints at a certain distance that can be accessed from this
waypoint following the traffic rules. In other words, if a vehicle is placed in
this waypoint, give me the list of posible locations that this vehicle can drive
-to. Let's see a practical example
+to. Let's see a practical example:
```py
# Retrieve the closest waypoint.
@@ -460,7 +484,7 @@ roads
waypoint_tuple_list = map.get_topology()
```
-this method returns a list of pairs (tuples) of waypoints, for each pair, the
+This method returns a list of pairs (tuples) of waypoints, for each pair, the
first element connects with the second one. Only the minimal set of waypoints to
define the topology are generated by this method, only a waypoint for each lane
for each road segment in the map.
diff --git a/PythonAPI/docs/blueprint.yml b/PythonAPI/docs/blueprint.yml
index 24c673ecd..5e0d4867c 100644
--- a/PythonAPI/docs/blueprint.yml
+++ b/PythonAPI/docs/blueprint.yml
@@ -112,73 +112,13 @@
- def_name: __eq__
params:
- param_name: other
- type: bool
- doc: >
- # --------------------------------------
- - def_name: __eq__
- params:
- - param_name: other
- type: int
- doc: >
- # --------------------------------------
- - def_name: __eq__
- params:
- - param_name: other
- type: float
- doc: >
- # --------------------------------------
- - def_name: __eq__
- params:
- - param_name: other
- type: str
- doc: >
- # --------------------------------------
- - def_name: __eq__
- params:
- - param_name: other
- type: carla.Color
- doc: >
- # --------------------------------------
- - def_name: __eq__
- params:
- - param_name: other
- type: carla.ActorAttribute
+ type: bool / int / float / str / carla.Color / carla.ActorAttribute
doc: >
# --------------------------------------
- def_name: __ne__
params:
- param_name: other
- type: bool
- doc: >
- # --------------------------------------
- - def_name: __ne__
- params:
- - param_name: other
- type: int
- doc: >
- # --------------------------------------
- - def_name: __ne__
- params:
- - param_name: other
- type: float
- doc: >
- # --------------------------------------
- - def_name: __ne__
- params:
- - param_name: other
- type: str
- doc: >
- # --------------------------------------
- - def_name: __ne__
- params:
- - param_name: other
- type: carla.Color
- doc: >
- # --------------------------------------
- - def_name: __ne__
- params:
- - param_name: other
- type: carla.ActorAttribute
+ type: bool / int / float / str / carla.Color / carla.ActorAttribute
doc: >
# --------------------------------------
- def_name: __nonzero__
@@ -270,7 +210,7 @@
- class_name: BlueprintLibrary
# - DESCRIPTION ------------------------
doc: >
- Class that provides access to blueprints.
+ Class that provides access to [blueprints](../bp_library/).
# - METHODS ----------------------------
methods:
- def_name: find
diff --git a/mkdocs.yml b/mkdocs.yml
index ba2a1c90e..744e62093 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -17,6 +17,7 @@ nav:
- 'How to build on Windows': 'how_to_build_on_windows.md'
- Advanced topics:
- 'Python API reference': 'python_api.md'
+ - 'C++ reference' : 'cpp_reference.md'
- 'Blueprint Library': 'bp_library.md'
- 'Running without display and selecting GPUs': 'carla_headless.md'
- 'Running in a Docker': 'carla_docker.md'