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

2023-10-30

一、Carla的基本概念

 

人工智能、5G和V2X技术的不断发展使得自动驾驶成为可能。近几年,自动驾驶发展迅速,在科技新闻上经常可以看到自动驾驶的身影,而从事自动驾驶相关软、硬件研究的高效研究所和公司也越来越多,既有传统的汽车巨头,也有新兴的电动车巨鳄,既有互联网巨头,也有初创企业,自动驾驶可谓是风口是上的风口。

自动驾驶的落地需要使用大量的数据训练模型,同时也需要完成大量的不同驾驶环境的验证。然而大量的训练数据和环境验证全部都使用实车进行测试是不现实的,因为涉及到成本问题,周期问题,更重要的是很多场景在现实环境中并不能复现,比如前方的车辆突然失控。因此科学家和从业人员希望能够通过计算机实现环境的仿真。这篇博客将介绍一个应用于自动驾驶环境仿真的软件CarlaCarla是英特尔实验室和巴塞罗那的计算机视觉中心联合开发的开源项目。此外,从业人员和学习者没有条件使用真实的环境极性学习,仿真环境也给他们提供了一个深入学习自动驾驶领域的机会。

1. 架构

对于学习和使用Carla而言,第一件事情就是掌握Carla环境的架构。在Carla的官方文档中https://carla.readthedocs.io/en/latest/用下边这样一张图直观的说明了Carla环境的构架,以及应该如何去使用这个框架。

如下图所示,Carla是一服务器/客户端形式的架构,所谓的服务器就是仿真环境本身(Simulator),为图中左侧部分,Simulator是仿真环境的主体,所有在真实的汽车驾驶环境中具有的东西都在里边有体现,包括:车辆,行人,路桥,信号灯,指示牌,天气,建筑等等,Simulator的目的就是实现一个真实的世界。

而作为世界的参与者,像车辆,行人,信号灯,以及天气光线等等这些在真实的世界中是移动和变化的,要模拟真实的环境,其实就是要模拟这些变化,比如要让一台车超速行驶,比如想让天气是雨天等等,这就是客户端的作用了。除此之外,环境还提供了各种传感器(摄像头,雷达等等),我们可以将传感器配备到车辆上,用于数据收集和自动驾驶的训练以及车辆的控制。Carla环境会将所有必要的用来控制世界参与者的接口都暴露出来了(以Python的形式,也有C++),供客户端来调用,一方面客户端可以读取到环境的数据,另一方面客户端可以像环境中的各种参与者发送控制命令控制他们的行动和变化。

到这里,我们对怎么使用这个环境已经有一个比较清晰的认识了,那就是,将服务器环境(即仿真器)启动,然后就不用理会它了,剩下的所有的代码和算法其实都是使用Python库来作为客户端通过调用API的方式跟仿真器交互。

2. 运行服务器(仿真器)

Carla是开源项目,因此可从它的GitHub仓库中下载最新的仿真器,Carla是基于UnrealEngine实现的,目前Linux和Windows版本。此外,由于Carla需要渲染3D模型,因此Carla需要一定性能的GPU。(我的台式机C24小方糖用的GPU是1050ti,卑微的在读博士打工仔。:sob:

下载CARLA_0.9.11.zip 后将其解压,以Windows环境为例,将包含下边这些文件夹和文件,通过双击CalaUE4.exe就可以启动服务器环境了,官方也提供了一些客户端实现的例子,在PythonAPI文件夹中可以找到。

启动之后会出现如下图所示的3D环境,在环境中只有静态的物体,比如建筑、道路,用户可以通过按住鼠标左键并移动鼠标来切换视角,并使用ASWD来前进后退来观察这个环境,但是并不能跟环境交互。如前边所说,跟仿真环境的交互,需要使用PythonAPI以客户端的形式来进行。

3. 客户端

使用Carla环境的过程其实就是实现各种满足我们目标的客户端的过程。在下载到的Carla包中有一个PythonAPI的文件夹,里边的内容包括:

  • carla文件夹 - 包含carla python库,即Python对Carla接口的封装,由于这个库还没有放到PyPi,因此不能使用pip的方式安装,只能手动安装carla python库到Python环境中
  • examples文件夹 - 包含示例代码,可以运行和阅读文件夹中的代码来学习Carla的使用
  • util文件夹 - 提供了一些方便的脚本,用于配置carla环境

3.1 carla库的安装

carla\dist文件夹中包含了egg格式的文件,名称类似于:carla-0.9.11-py3.7-win-amd64.egg,这个就是carla的python库,我们需要手动安装一下,运行以下命令来实现安装。

3.2 执行示例代码

当库安装完毕以后,我们可以运行其中一个代码来直观的感受下。这是运行PythonAPI\examples中automatic_control.py的效果,automatic_control.py文件实现了自动驾驶的demo。

自动驾驶 carla仿真 Demo


 

参考文献:

  1. https://pythonlibrary.net/2020/04/05/carla-autonomous-driving-simulator-intro/
  2. https://pythonlibrary.net/2020/04/12/carla-autonomous-driving-simulator-core-concepts/
  3. https://pythonlibrary.net/2020/04/18/carla-autonomous-driving-simulator-vehicle-detection/
  4. https://pythonlibrary.net/2020/05/09/carla-autonomous-driving-simulator-traffic-manager/
  5. http://carla.org/

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动驾驶仿真平台Carla从入门到放弃 的相关文章

随机推荐

  • 移动通信关键技术-多址技术和复用技术

    移动通信网络简介 现在是2017年 4G已经使用很多年了 那么回顾一下移动通信的历史发展 1G 以AMPS ATCS为代表的模拟通信系统 主要技术是FDMA 主要业务是语音业务 2G 以GSM为代表的数字通信 主要技术TDMA是 IS 95
  • android任意函数绘制_Android布局优化技巧大盘点

    欢迎关注专栏 里面定期分享Android和Flutter架构技术知识点及解析 还会不断更新的BATJ面试专题 欢迎大家前来探讨交流 如有好的文章也欢迎投稿 Android高级进阶 zhuanlan zhihu com 开始 继上一篇卡顿优化
  • mysql leave iterator_c++迭代器(iterator)详解

    1 迭代器 iterator 是一中检查容器内元素并遍历元素的数据类型 1 每种容器类型都定义了自己的迭代器类型 如vector vector iterator iter 这条语句定义了一个名为iter的变量 它的数据类型是由vector定
  • 自作JavaScript飞机大战小游戏

    不会canvas画板标签小朋友们的福音来啦 用标签也能制作简单小游戏哦 飞机大战GitHub源码链接 https github com shunyue1320 fjdz git 做游戏就要有素材的啦 以下是在爱给网找到的素材 首先3个页面的
  • MobileNet(二)

    MobileNets MobileNetv1 深度可分离卷积 深度学习的经典网络模型 如ResNet VGG GooogleNet等已经达到了不错的效果 但存在一个问题 即模型庞大 参数较多 计算量较大 在一些实际的场景如移动或嵌入式设备中
  • git 查看远程地址 与 远程地址的设置

    一 查看远程地址 git remote v 如果绑定好远程地址的话 会有两条地址 fetch 和 push 那么 fetch 表示我们要获取到的地址 push则表示我们要推送的地址 二 远程地址的设置 1 添加远程地址 git remote
  • Prometheus 集成 Node Exporter

    文章首发于公众号 程序员果果 地址 https mp weixin qq com s 40ULB9UWbXVA21MxqnjBxw 简介 Prometheus 官方和一些第三方 已经把一些常用数据库 系统 中间件等的指标数据的采集做成了一个
  • 图像处理常用插值方法总结

    常用的插值方法 1 最邻近元法 这是最简单的一种插值方法 不需要计算 在待求象素的四邻象素中 将距离待求象素最近的邻象素灰度赋给待求象素 设i u j v i j为正整数 u v为大于零小于1的小数 下同 为待求象素坐标 则待求象素灰度的值
  • 矩阵运算库

    gt Android Java矩阵计算的架包Jama Jama是一个基本的线性代数Java包 包括一个基本的Matrix类和5个矩阵分解类 Matrix类提供了基本的线性代数数值运算的功能 不同的构造函数可以构造双精度和浮点精度的二维数组
  • 什么是DHCP?有什么优缺点

    DHCP 代表动态主机配置协议 它是存在于应用层的网络管理协议 在它的帮助下 可以将 Internet 协议 IP 地址动态分配给网络上的任何设备或节点 以便它们可以使用该 IP 进行通信 网络管理员的任务是为网络中的所有设备手动分配大量
  • STM32组合设备实现USB转双串口

    USB转双串口 核心技术就在于组合设备 USB Composite 的实现 组合设备的实现 其核心技术在于描述符的实现 下面我们先给出描述符 设备描述符 C 纯文本查看 复制代码 00001 00002 00003 00004 00005
  • IDEA 获取类的相对路径和绝对路径

    1 相对路径 结果 action HelloAction 2 绝对路径 结果 E javaProject JavaEEProject day08 Struts2 test01 src action HelloAction java 转载于
  • 登录注册与Cookie

    很多时候 我们登录一个网站的第一步是注册用户 然后登录 这个高频次的操作前端与后端是如何交互完成登录成功页面跳转的呢 今天我们来聊一聊登录注册的那些事 登录注册的流程 如上图 第一步 用户在注册页面将自己的账号密码邮箱等等信息传给服务器 第
  • 小熊派STM32-OTA+IOT教程

    近期在准备一个物联网课程 主要是针对STM32OTA升级 这次使用的是小熊派物联网开发板 项目地址 https gitee com wenzhengclub bearpi iot ota 其实这个开发板去年我就拿到手了 只是一直没有机会和时
  • Colaboratory下载Kaggle数据

    快捷链接 Colaboratory网址 Kaggle网址 Kaggle获取不了验证码的可以留言 进入Kaggle的账户 新建一个API Token 就会下载一个kaggle json文件 同时出现下面提示 这个在本地运行的时候 需要将kag
  • SQL: STUFF()和FOR XML PATH的使用

    STUFF param1 startIndex length param2 将param1中自startIndex SQL中都是从1开始 而非0 起 删除length个字符 然后用param2替换删掉的字符 示例 select STUFF
  • Gcov/Lcov生成覆盖率遇到的一系列问题(ubuntu18.04)

    1 lcov安装 sudo apt get install lcov 此时安装的lcov版本号是1 13 2 lcov使用 生成覆盖率关联的库在编译时需要加上以下标志位 set CMAKE CXX FLAGS CMAKE CXX FLAGS
  • Docker 使用及常用命令(一)

    一 Docker 基本概念 Docker 是一个开源的应用容器引擎 依赖于已存在并运行的 Linux 内核环境 它允许开发者将应用及其依赖包打包到一个轻量级 可移植的容器中 发布到任何流行的 Linux 机器上 容器相互之间不存在任何接口
  • 稳压二极管串联电阻计算

    稳压二极管是稳压电路的一种方式 但是提供负载的动力与二极管自身的功率有关 例如ZMM 5V 功率1W 最小的反向稳压管的电流5mA 最大的反向稳压管电流 Izmax P U 1W 5v 200mA 当稳压管流向最大电流200mA 则流过串联
  • 自动驾驶仿真平台Carla从入门到放弃

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