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

article/2025/9/30 8:54:52

在这里插入图片描述

CARLA基本介绍

CARLA是一个开源的自动驾驶模拟器。它是从头开始构建的,用作模块化和灵活的API,以解决自动驾驶问题中涉及的一系列任务。 CARLA的主要目标之一是帮助自动驾驶研发民主化,它是一种易于用户使用和定制的工具。为此,模拟器必须满足一般驾驶问题(例如学习驾驶策略,训练感知算法等)内不同用例的要求。 CARLA基于Unreal Engine来运行模拟,并使用OpenDRIVE标准(今天为1.4)定义道路和城市环境。通过使用Python和C ++处理的API授予对模拟的控制权,该API随项目的发展而不断增长。

为了简化开发,培训和验证驾驶系统的过程,CARLA演变成由社区围绕主要平台构建的项目生态系统。在这种情况下,重要的是要了解有关CARLA如何工作的一些知识,以便充分理解其功能。

CARLA模拟器

CARLA仿真器由可扩展的客户端-服务器体系结构组成。

服务器负责与仿真本身相关的所有事情:传感器渲染,物理计算,世界状态及其参与者的更新等等。 由于它旨在获得逼真的结果,因此最合适的方法是使用专用GPU运行服务器,尤其是在处理机器学习时。

客户端由一些客户端模块组成,这些客户端模块控制场景中演员的逻辑并设置世界条件。 这可以通过利用CARLA API(Python或C ++)来实现,CARLA API是在服务器和客户端之间进行中介的层,该层不断地发展以提供新的功能。

在这里插入图片描述

  • 交通流管理:除了用于学习的系统外,还内置了一个控制车辆的系统。它作为CARLA提供的指挥者,以逼真的行为再现城市般的环境。

  • 传感器:车辆依靠它们来发布周围环境的信息。在CARLA中,它们是附着在车辆上的一种特殊的行为体,它们接收到的数据可以被检索和存储,以简化这一过程。目前该项目支持不同类型的传感器,从摄像头到雷达、激光雷达等等。

  • 记录器:此功能用于为世界上的每个演员一步步重演模拟。它允许访问世界上任何地方的时间线中的任何时刻,是一个很好的追踪工具。

  • ROS bridge和Autoware实施方法:作为一个普遍化的问题,CARLA项目结和致力于将模拟器整合到其他学习环境中。

  • 开放性资产:CARLA为城市环境的不同地图提供便利,并对天气条件进行控制,同时提供一个蓝图库,其中有大量的行为者可供使用。然而,这些元素可以定制,并且可以按照简单的准则生成新的元素。

  • 场景运行器:为了简化车辆的学习过程,CARLA提供了一系列描述不同情况的路线,供大家迭代。这些也为CARLA挑战赛奠定了基础,开放给大家测试自己的解决方案,并进入排行榜。

CARLA 简单上手

CARLA的快速上手指南请参考官方文档https://carla.readthedocs.io/en/latest/getting_started/

  1. CARLA 目前仅支持 Linux 和 Windows,需要去下载相应的版本。在本文写作的时间,Windows 仅支持到 0.9.5 版本,Linux 支持到0.9.6。
  2. 需要 安装 numpy 和 pygame.
  3. 下载解压文件夹之后,Windows 环境下直接运行 “CarlaUE4.exe” 文件,linux 环境下 终端命令: “./CarlaUE4.sh” 即可打开模拟器。

模拟器就是一个小镇的环境,有道路,建筑,街道,交通灯等等。不过目前是没有行人和车辆的。需要运行 python 脚本代码。

python spawn_npc.py -n 80

也可以运行这个脚本添加天气变量(天黑,下雨,刮风等)

python dynamic_weather.py

当然也可以体验一下手动驾驶汽车的感觉,仅需要运行这个脚本就可以了。

python manual_control.py

在这里插入图片描述
如上图所示,可以像玩游戏一样手动操作窗口中汽车前进、后退、转弯和刹车等动作,同时环境的及时反馈也可以收集到。可以感应到周围车辆的大小,交通灯信号,是否有撞击等等。

当然你也可以用快捷键 P 让汽车处于自动驾驶状态。不过需要注意的是,此时汽车的自动驾驶并不是通过机器学习得到的模型,而是通过对模拟器中设置的汽车行驶交通规则实现的。

注意如果在运行脚本的时候出现导入 carla 失败的错误,请检测python版本。在PythonAPI\carla\dist 目录中可以看到相应的python 版本的.egg 文件。笔者使用的是0.9.5 版本 carla 其中 Windows 10 需要使用 python 3.7. Linux 需要使用 python 3.5.

Python 控制汽车快速上手

为了便于进后机器学习的需要,本文我们快速在模拟器中创建一辆汽车,并让他直线行驶,通过摄像头将感知到的图片显示出来。之后我们便可用摄像头收集到的图像信息以及汽车在环境中的反馈训练(强化学习)模型,完成自动驾驶的任务。详细指南请参考官方 Python API 指南。

  1. 初始化环境。创建 Client 连接模拟器的服务器,并通过 “blueprint” 创建一个汽车blueprint。
 # set up the environmentclient = carla.Client("localhost", 2000)client.set_timeout(2.0)world = client.get_world()blueprint_library = world.get_blueprint_library()bp = blueprint_library.filter("model3")[0]
  1. 初始化汽车,在模拟器世界中,随机出现一辆汽车

     spawn_point = random.choice(world.get_map().get_spawn_points())vehicle = world.spawn_actor(bp,spawn_point)
    
  2. 控制汽车,当然你可以用自动驾驶模式"vehicle.set_autopilot(True)"让汽车根据模拟器制定的规则行驶,不过我们在这里让汽车直行

     vehicle.apply_control(carla.VehicleControl(throttle=1.0,steer=0.0)) # car go straightactor_list.append(vehicle)
    
  3. 设置摄像头

     cam_bp = blueprint_library.find("sensor.camera.rgb")cam_bp.set_attribute("image_size_x", "{}".format(IM_WIDTH))cam_bp.set_attribute("image_size_y", "{}".format(IM_HEIGHT))cam_bp.set_attribute("fov","110") #"fov" feel of viewspawn_point = carla.Transform(carla.Location(x=2.5,z=0.7)) #locate the camerasensor = world.spawn_actor(cam_bp, spawn_point, attach_to = vehicle)actor_list.append(sensor)
    
  4. 获取摄像头图片,这里通过 .listen 的 lambda 函数传回数据。当然不要忘了设计一个延时。

     sensor.listen(lambda data: process_img(data))time.sleep(25)	
    

其中通过 process_img() 方法传回摄像头图像

def process_img(image):i = np.array(image.raw_data)# print(i.shape)i2 = i.reshape((IM_HEIGHT,IM_WIDTH,4)) #4 changels "rgba"i3 = i2[:,:,:3] # 3 changels "rgb"cv2.imshow("",i3)cv2.waitKey(1)return i3/255.0

这里需要注意的是,摄像头得到的图片有4个通道 “rgba”,需要将第四个通道去掉,并用opencv 的 cv2.imshow() 将摄像头捕捉到的图片 归一化之后回传回来。

最后,我们运行一下这个python 脚本获取汽车直线前进,摄像头所“看到” 的画面。汽车直行然后撞在了隧道的墙壁上。

在这里插入图片描述


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

相关文章

高通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我看的是这个…

SQLyog(旗舰版)下载

安装导航(以及常见问题的解决方案): https://docs.qq.com/doc/DS0VSV2toQXd0dWtN (如图所示:)

关于SQLyog 下载 无限试用

1: 关于SQLyog下载 获知最新版本: 最新版本的SQLyog可以通过GitHub查看SQLyog Community Edition(社区版)的最新版本号获取。 参阅:https://github.com/webyog/sqlyog-community/wiki/Downloads 获取下载链接: x64链接…

SQLyog的下载与安装

1、下载安装包 SQLyog下载链接 2、安装 2.1、选择语言,默认即可 2.2、下一步即可 2.2、接受协议并下一步 2.3、选择选项 2.4、选定安装目录 2.5、安装完成 3、连接Mysql服务 看到这个界面就连接成功了。

sqlyog

一、SQLYog下载 sqlyog百度云链接(永久有效):百度网盘 请输入提取码 密码:t906 注册码链接:百度网盘 请输入提取码 密码:e35u 二、sqlyog安装 1、将下载好的压缩包进行解压之后点击双击安装程序下拉选择…

SQLyog 下载地址

SQLyog - DownloadSQLyog, free and safe download. SQLyog latest version: Administrate MySQL Databases With Ease Using a Graphical Interface. MySQL is probably the worldhttps://sqlyog.en.softonic.com/

数据库客户端安装(SQLYog)

一、官网下载sqlyog 网址: SQLyog - Download (softonic.com)https://sqlyog.en.softonic.com/ 二、安装 1、双击exe文件 2、选择安装的语言 3、选择I do 的那个选项,再按next 4、选择如下的 5、默认的安装路径 6、更改路径为:D:\softwa…

MySql下载和安装Sqlyog下载安装

1 下载&安装 视频教程: https://www.bilibili.com/video/BV1Qf4y1T7Hx?p3 1.1 下载 https://downloads.mysql.com/archives/community/ 点开上面的链接就能看到如下界面: 选择选择和自己系统位数相对应的版本点击右边的 Download ,此时会进到另…

MyBatis快速入门——第三章、DML语句操作

MyBatis快速入门——第三章、DML语句操作 目录 在接口类中添加【UsersMapper.java】 修改【com.item.mapper.UsersMapper.】 【action.java】 在接口类中添加【UsersMapper.java】 /*** 添加* param nickName* param sex* param age* param introduce* return*/int AddInfo…

泛微 DML语句 存储过程

这是我写的第一个存储过程,纪念一下,开发兄弟在侧口述~, 存储过程在SQL中设置 CREATE PROCEDURE MAX_WLBM_TOOATABLEREQUESTID VARCHAR (100),YXCS INTAS BEGINIF (YXCS0) BEGIN insert into uf_MaxIDToRequestid (LCID,MAX_YTWL,MAX_YERT)…

sql语句之DML语句

1.SELECT 语句 SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。 SELECT 列名称 FROM 表名称 或 SELECT * FROM 表名称例如: eg:SELECT LastName,FirstName FROM Persons(从Persons表中查Las…