Carla 地图

article/2025/9/30 8:19:23

1. 介绍

Carla在0.9.11中扩展了地图功能,增加了许多有意思的扩展功能。
包括在地图上控制指定建筑物的渲染,加载不同的图层等。

We have extended the maps API to provide the ability to toggle on and off every environment object individually. We also have new versions of all our maps, in which users can load and unload the different elements of the map by layers.

加载不同的地图图层(仅在以Opt结尾的地图中可用)。
转载自Carla
控制指定建筑物的渲染。
转载自Carla
除此在外。Carla_0911还更新了许多新的功能,感兴趣的读者可以参考Carla的版本更新公告。

2. 地图

Carla中地图由建筑物以及道路文件组成。道路文件以OpenDRIVE文件格式定义。

1. 切换地图

加载地图或者重新加载当前地图都会初始化当前Carla World对象。

# 加载Town01
world = client.load_world('Town01')
# 重新加载当前地图
world = client.reload_world()

使用get_available_maps获取可用地图。

print(client.get_available_maps())

2. 路标(Landmarks)

Carla使用路标表示OpenDRIVE中定义的交通标志,可以使用对应的API进行操作,有关的类有:

  • carla.Landmark
    carla.LandmarkOrientation
    carla.LandmarkType
  • carla.Waypoint
  • carla.Map
  • carla.World

3. 路点(Waypoints)

Carla使用carla.Waypoints类表示路点。每个路点都包含一个carla.Transform变量,用于说明路点在地图上的位置以及路点相对于所在车道的方向。成员变量road_id,section_id,lane_id和s对应于OpenDRIVE文件中的道路描述,路点的id通过计算这四个值的哈希组合得到的。

一个路点中记录了它所在车道的信息。这些信息包括该车道的左右车道标记,车道是否在路口内,车道类型,车道宽度和是否允许车辆在该车道内变道。

# 使用路点获取车道信息
inside_junction = waypoint.is_junction()
width = waypoint.lane_width
right_lm_color = waypoint.right_lane_marking.color

4. 车道(Lanes)

Carla使用carla.LaneType类表示OpenDRIVE中定义的车道类型,使用carla.LaneMarking类表示车道内的道路标记。道路标记包含以下成员比变量:

  • color:颜色
  • lane_change:该车道是否允许左转,右转
  • type:车道类型
  • width:车道宽度
# 获取车道类型
lane_type = waypoint.lane_type
# 获取左侧车道标记的类型。
left_lanemarking_type = waypoint.left_lane_marking.type()
# 是否允许车道变更。
lane_change = waypoint.lane_change

5. 路口(Junctions)

Carla使用carla.Junction类表示OpenDRIVE中定义的路口。类中包含了一个bounding_box,用于识别路口中的车道和车辆,使用get_waypoints方法获取bounding_box内车道的起点和终点。

waypoints_junc = my_junction.get_waypoints()

Each pair is located at the start and end points of the junction boundaries.

6. 建筑物(Environment Objects)

CARLA使用enable_environment_objects方法控制指定建筑物的渲染。示例如下:

# 获取地图中的建筑物
world = client.get_world()
env_objs = world.get_environment_objects(carla.CityObjectLabel.Buildings)# 获取指定建筑物的ID
building_01 = env_objs[0]
building_02 = env_objs[1]
objects_to_toggle = {building_01.id, building_02.id}# 取消渲染
world.enable_environment_objects(objects_to_toggle, False)
# 开启渲染
world.enable_environment_objects(objects_to_toggle, True)

3. 地图图层

Carla地图具有不同的图层,每层图层代表不同的含义。具体如下:

  • NONE 只渲染由道路,人行道,交通信号灯和交通标志组成的最小图层
  • Buildings 建筑物图层
  • Decals 墙砖(?)图层
  • Foliage 植被图层
  • Ground 地面图层
  • ParkedVehicles 停放的车辆
  • Particles 粒子特效
  • Props 道具
  • StreetLights 路灯
  • Walls 墙壁
  • All 渲染所有图层

There is a minimum layout that cannot be toggled off and consists of roads, sidewalks, traffic lights and traffic signs.

# 渲染最小图层,建筑物图层以及地图中停放的车辆
world = client.load_world('Town01_Opt', carla.MapLayer.Buildings | carla.MapLayer.ParkedVehicles)# 取消渲染建筑物图层
world.unload_map_layer(carla.MapLayer.Buildings)# 渲染建筑物图层   
world.load_map_layer(carla.MapLayer.Buildings)

4. 示例代码

以下代码将在Carla中创建一个自定义的测试场景,并在测试车辆的周围添加动态障碍物。

import glob
import os
import sys
import random
import os
try:sys.path.append(glob.glob('../carla/dist/carla-*%d.%d-%s.egg' % (sys.version_info.major,sys.version_info.minor,'win-amd64' if os.name == 'nt' else 'linux-x86_64'))[0])
except IndexError:pass
import carladef main():try:client = carla.Client('localhost', 2000)client.set_timeout(10.0)world = client.get_world()carla_map = world.get_map()maps = client.get_available_maps()blueprint_library = world.get_blueprint_library()# 创建车辆并开启自动驾驶ego_vehicle_bp = blueprint_library.find('vehicle.mercedes-benz.coupe')ego_vehicle_bp.set_attribute('color', '0, 0, 0')transform = random.choice(world.get_map().get_spawn_points())ego_vehicle = world.spawn_actor(ego_vehicle_bp, transform)ego_vehicle.set_autopilot(True)#创建动态障碍物next_vehicle_bp = blueprint_library.find('vehicle.mercedes-benz.coupe')next_vehicle_bp.set_attribute('color', '0, 255, 0')transform = random.choice(world.get_map().get_spawn_points())next_vehicle = world.spawn_actor(next_vehicle_bp, transform)next_vehicle.set_autopilot(False)previous_vehicle_bp = blueprint_library.find('vehicle.mercedes-benz.coupe')previous_vehicle_bp.set_attribute('color', '0, 0, 255')transform = random.choice(world.get_map().get_spawn_points())previous_vehicle = world.spawn_actor(previous_vehicle_bp, transform)previous_vehicle.set_autopilot(False)right_vehicle_bp = blueprint_library.find('vehicle.mercedes-benz.coupe')transform = random.choice(world.get_map().get_spawn_points())right_vehicle = world.spawn_actor(right_vehicle_bp, transform)right_vehicle.set_autopilot(False)while(True):spectator = world.get_spectator()transform = ego_vehicle.get_transform()spectator.set_transform(carla.Transform(transform.location + carla.Location(z=100),carla.Rotation(pitch=-90)))# 获取ego_vehicle当前所在道路的路点信息waypoint = carla_map.get_waypoint(ego_vehicle.get_location(),project_to_road=True, lane_type=(carla.LaneType.Driving))try:# 获取当前路点前方12m处的路点信息next_waypoint = waypoint.next(12.0)# 首先获取当前路点所在车道的右车道中的等价路点# 然后获取等价路点后方12m处的路点信息previous_waypoint = waypoint.get_right_lane().previous(12.0)# 同上,获取当前路点前方24m处的等价路点right_waypoint = waypoint.get_right_lane().next(24.0)#设置动态障碍物的位置next_vehicle.set_transform(next_waypoint[0].transform)previous_vehicle.set_transform(previous_waypoint[0].transform)right_vehicle.set_transform(right_waypoint[0].transform)except:print("next_waypoint: ",len(next_waypoint))print("previous_waypoint:", len(previous_waypoint))passfinally:actor_list = world.get_actors()# 根据ego_vehicle的id从actor_list中查找ego_vehiclevehicle = actor_list.find(ego_vehicle.id)print(vehicle)# 回收场景中的所有车辆vehicle_list = list(actor_list.filter('vehicle.*'))client.apply_batch([carla.command.DestroyActor(x) for x in vehicle_list])if __name__ == '__main__':try:main()except KeyboardInterrupt:print(' - Exited by user.')

5. 参考资料:

图片来源于Carla版本公告
Carla官方文档——地图
Carla-PythonAPI


http://chatgpt.dhexx.cn/article/yhxvYlUJ.shtml

相关文章

Carla内容简介

最近学长安排了新的任务,开始学习Carla仿真软件。这个软件之前在自己电脑安装一次,各种坑,坑到我怀疑人生,大概装了两三天才装上,之后因为毕设就没动过了,时隔小一年又重新开始学。。。(后续有时…

Carla学习2:carla安装与使用

文章目录 0. 建议1. carla学习相关链接1.1 官方资料1.1 学习教程 2. Carla安装2.1 服务器端2.1.1 下载预编译版本(也可以使用下载源码并编译) 2.1.2 启动服务器端及服务器端显示导航2.3 客户端2.3.1 创建python环境2.3.2 安装carla 的pythonAPI所需要的依…

【仿真】Carla介绍与使用 [1] (附代码手把手讲解)

0. 参考与前言 主要介绍无人驾驶的仿真环境CARLA,开源社区维护,以下为相关参考链接: Carla官方文档 建议后续找的时候 先按好版本号,有些功能/api 是新版本里有的,Carla官方github Youtube PythonWindow 0.9.5 主要是…

自动驾驶仿真平台Carla从入门到放弃

一、Carla的基本概念 人工智能、5G和V2X技术的不断发展使得自动驾驶成为可能。近几年,自动驾驶发展迅速,在科技新闻上经常可以看到自动驾驶的身影,而从事自动驾驶相关软、硬件研究的高效研究所和公司也越来越多,既有传统的汽车巨头…

介绍一款开源的自动驾驶仿真模拟器-Carla

大家好,我是李慢慢。 不管你是一个自动驾驶的算法工程师,还是仿真工程师,不管你是业界大佬还是小白,我都建议你了解甚至使用一下这个软件。 目录: 0、前言 1、Carla简介 2、Carla的官方资源 3、Carla的安装 4、Ca…

Carla 使用神经网络训练自动驾驶车辆---模型搭建及训练

Carla 使用神经网络训练自动驾驶车辆—模型搭建及训练 上一节已经搭建好了一个carla仿真环境,并且进行了数据采集 现在需要使用采集到的摄像头图片和转角数据进行模型训练 创建dataset类 import numpy as np import config from torch.utils.data import Dataset…

Carla自动驾驶仿真一:快速安装与运行Carla

文章目录 前言一、Carla运行效果二、Carla运行资源1、官方推荐2、环境配置1)Carla 0.9.14下载2)Python依赖安装 3)运行Demo 三、运行前注意事项 前言 网上有不少的Windows版本的Carla的安装教程,这里简单记录下自己安装过程 一、…

Carla 安装详细教程 —— Ubuntu 20.04 安装 Carla

Carla 安装详细教程 —— Ubuntu 20.04 安装 Carla 简介 自动驾驶算法的调试和效果评测首先要在仿真环境中去做,因此,一个强大、灵活的仿真环境是开发、测试过程中必不可少的要素。我们在查找可用的仿真工具时主要关注以下几个特性: 开源&…

[carla入门教程]-1 安装carla环境

本专栏教程将记录我从安装carla到调用carla的pythonAPI进行车辆操控的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制. 第一节 carla 仿真环境的安装 准备工作: 在本节教程之前,需要大家安装ubuntu18.04以上的系统,并且安装对…

自动驾驶——Carla 模拟器简介

CARLA基本介绍 CARLA是一个开源的自动驾驶模拟器。它是从头开始构建的,用作模块化和灵活的API,以解决自动驾驶问题中涉及的一系列任务。 CARLA的主要目标之一是帮助自动驾驶研发民主化,它是一种易于用户使用和定制的工具。为此,模…

高通8953调试I2S小记

在调通i2s后,发现设备做蓝牙免提时没有声音。后来发现QUIN通路高通竟然没调试过蓝牙免提,这部分代码都没有!经过一番折腾。总算把驱动搞好了。但在实际过程中老是报如下错误: [ 2018.164783] msm_pcm_routing_prepare: setting i…

高通8953启动流程

本文来自于:[添加链接描述 嵌入式工程师有必要了解芯片启动过程,在分析、调试各种问题时都有可能涉及这方面知识。同时,这部分知识复杂,涉及到芯片内部架构,启动各个阶段软件代码执行顺序,启动模式等等。以常用的MSM89…

高通8953平台串口配置入门

目录 一、 串口概述二、 平台串口介绍三、 Device tree如何配置串口四、 bootloader如何配置串口五、bootloader中串口相关代码六、 kernel中串口驱动文件:七、 调试中遇到的问题八、 串口回环测试九、参考文档 一、 串口概述 RS232、RS422、RS485都是串行数据接口…

windows 10安装sqlyog详细步骤

sqlyog下载链接: 链接: https://pan.baidu.com/s/1D_iRna8V90omfHsKHyeBtg 提取码: bqht 复制这段内容后打开百度网盘手机App,操作更方便哦 1. 下载完以后解压,双击SQLyog-12.0.9-0.x64 2. 如下图,选择Ok 3 . 如图,点…

SQLyog下载与安装

SQLyog卸载与安装 声明SQLyog卸载SQLyog安装一、SQLyog下载二、正式安装SQLyog 课后习题即答案 声明 SQLyog卸载 用360直接卸载 SQLyog安装 一、SQLyog下载 1.百度搜索SQLyog官网并进入。 2.下载,稍等片刻,即在浏览器下载列表中看到下载成功。 …

MySQL下载与安装、mysql服务启动与停止、mysql使用cmd命令行登录、SQLyog下载与安装,sqlyog登录与操作mysql

文章目录 1.MySQL下载与安装1.1 下载地址1.2 打开官网,点击DOWNLOADS1.3 点击 MySQL Community Server1.4 在General Availability(GA) Releases中选择适合的版本 2.配置MySQL8.03.配置MySQL8.0 环境变量4.服务的启动与停止4.1 使用图形界面工具4.1.1 打开windows服…

MySQL连接工具(SQLyog、Navicat)下载安装

目录 ❤ SQLyog 下载 安装 双击下载的文件 选择Chinese后点击OK ​编辑 点击“下一步” 选择“我接受”后点击“下一步” 点击“下一步” 修改安装位置(尽量不要安装在C盘),点击“安装” ​编辑 安装后点击“下一步” 点击“完…

【小白】SQLyog下载安装配置篇全攻略

我是第一次使用 SQLyog 这款对于MySQL数据库的可视化图形管理工具,本篇是我对于SQLyog安装配置的过程和总结,仅供大家参考。 如下: 了解SQLyog: SQLyog 是一个快速而简洁的图形化管理MYSQL数据库的工具,它能够在任何地点有效地管理…

python+pycharm+mysql+sqlyog下载安装

目录 工具包详情 Python pycharm mysql sqlyog 工具包详情 工具包包括python安装包,pycharm安装包,mysql安装包,sqlyog安装包及注册码 Python 首先是python安装,较为简单,只需要打开然后选择Add to PATH即可&…

SQLyog——下载2058问题

前言:本文记录了我今天下载和安装SQLyog的过程,主要问题就出在了SQLyog链接这部分——2058号问题。写下来一方面希望我的文章能有所帮助,另一方面记录一下自己的生活。感谢文中链接的作者。 1.先下载安装SQLyog 下载安装SQLyog我看的是这个…