UE4中使用自动驾驶模拟——Carla

  • 1.简述
  • 2.简单配置使用
  • 3.编译的步骤&坑
  • 4.深入理解
    • Tips

1.简述

在之前的文章里,使用了Airsim来仿真模拟无人机飞行,UE4中使用飞控仿真插件——AirSim
,Airsim本身也是支持自动驾驶模拟的,使用方法无太大不同,为了学习探索这两者的区别,在这里记录一下carla的使用。
Carla主要通过Server-Client方式使车辆与虚拟世界进行交互,这样就可以在本机运行,也可以部署多个客户端同时运行。Client API采用Python编写,Client向Server发送command和meta-command,command为控制车辆的转向、加速和刹车,meta-command,针对的是Server的行为,主要有重启模拟器、改变环境特征、修改传感器组等。
CARLA包含三个模块的自动驾驶:① 经典的规则化无人驾驶 ② 端对端模仿学习无人驾驶 ③端对端强化学习无人驾驶,
CARLA支持感知和控制两个模块,包含城市堵路(有汽车,建筑物,行人和道路指示标志)
CARLA提供世界和智能体的接口,客户端API是python命令控制,以类似插槽(socket)的方式连接智能体和服务器。客户端client发送命令和下层指令,直接命令包括转向,加速和刹车,下层命令包括控制服务器的行为和重置仿真器,改变仿真环境和修改传感器参数。CARLA可以调整视觉信息质量和速度。CARLA有两个城镇,TOWN1用来训练,TOWN2用来测试。CARLA包含许多传感器,有RGB摄像头,提供深度信息的摄像头(该深度信息和语义分割,CARLA已经做好了,语义分割有12个种类:道路,道路线,交通灯,行人等等)GPS定位传感器,速度加速度传感器和碰撞传感器等等。
官方文档
Github地址

2.简单配置使用

下载和安装参考官方即可,把github上的clone到本地。

这里以windows为例,运行\CarlaUE4.exe,再在cmd执行命令行程序CARLA\PythonAPI\examples\ >python spawn_npc.py -n 80,执行后可以看见车辆行人加载到地形之中。

值得注意的是,想要完整的使用carla的功能,还需要下载安装python的其他完整模块,这里整理了完整的安装步骤,参考以下:
pygame module
使用pip包管理工具更加方便,可以参考
numpy matplotlib scipy

还可以一次获得所有依赖项

pip install -r PythonClient/requirements.txt

进入CARLA\PythonAPI\examples\ 可以尝试使用示例运行控制。
截至目前为止,可以实现可执行程序ue的运行,python的所有示例功能控制,如果只需要改pythonAPI进行开发,那么到这里已经足够。但是想自己更换场景/模型/算法等,肯定要从源码从头编译了,想要深入肯定少不了自己编译一遍。

3.编译的步骤&坑

由于carla是C/S架构的,它分别支持并提供了Linux构建,Windows构建.
这里以windows为例(推荐ubantu),去官网安装好cmake,git,make等所需软件,发现按照官网操作还是一堆坑,要么编译缺CarlaDependencies模块要么不识别cmake,而且,翻遍了国内外的论坛文章等,这里记录一下减少大家的弯路:

  • 首先要确保版本对上,我这里使用vs2017(把其他版本vs卸载干净),python3.7,carla0.9.10,UE4.24,Cmake3.9以上,并配好环境变量,自己测试确保能用

  • 彻底删除vs:Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\layout运行.\InstallCleanup.exe -full。

  • 打开VS x64命令行工具 到根目录carla-master输入make setup (如果从网上下载过build文件夹,可以跳过此步)

  • 克隆最新资产库:git clone https://bitbucket.org/carla-simulator/carla-content Unreal/CarlaUE4/Content/Carla覆盖原content即可

  • 到工程根目录,按顺序 make LibCarlamake PythonAPI 编译库文件-

  • 右键点击CarlaUE4.uproject 菜单选项生成sln,用VS2017进行编译源码,如果遇到报错,找到Version.h.in这个文件,拷贝到Unreal\CarlaUE4\Plugins\Carla\CarlaDependencies\include\carla 下面,改名Version.h

Command Description
make help Prints all available commands.
make launch Launches CARLA server in Editor window.
make PythonAPI Builds the CARLA client.
make package Builds CARLA and creates a packaged version for distribution.
make clean Deletes all the binaries and temporals generated by the build system.
make rebuild make clean and make launch both in one command.

  • 编译成功最后会启动UE4,大功告成:

4.深入理解

简单记录一些架构
对于UE4而言,carla中的actor包括了:

  • 汽车。
  • 路人。
  • 传感器。
  • 观察者。
  • 交通标志和交通灯。

传感器包括了:

  • 相机(RGB,深度和语义分割)。
  • 碰撞检测器。
  • Gnss传感器。
  • IMU传感器。
  • 激光雷达雷射。
  • 车道入侵检测器。
  • 障碍物检测器。
  • 雷达。
  • RSS。

道路,车道和路口由Python API管理,可从客户端访问。它们与航路点类一起使用,为车辆提供导航路径。
交通标志和交通灯可作为carla.Landmark对象使用,其中包含有关其OpenDRIVE定义的信息。此外,在运行时,模拟器会使用OpenDRIVE文件上的信息自动生成停止,屈服和交通信号灯对象。这些在道路上放置了边界框。一旦进入边界框,车辆就会意识到它们。

所以,由此而知运行架构如下图,传感器运行在UE4内部,并将数据一直发送到Python客户端,。
传感器actor
负责测量和/或模拟数据的actor:使用UE4框架在Carla插件中运行。用户可以作为Sensor actor访问。

串行器
对象包含用于对传感器生成的数据进行序列化和反序列化的方法。在LibCarla中运行,服务器和客户端均如此。

传感器数据
代表传感器生成的数据的对象。这是将在C ++和Python API中传递给最终用户的对象。

知道了架构,可以更清晰的阅读源码和各个模块的功能联系。
—————————————————————————————————
思考一下如何更换验证算法?我们以汽车动力学算法模型为例:
阅读源码,内部的汽车动力学模型都是UE内集成的,可以通过代码找到,PxVehicleWheels.cpp这个文件,是NVIDIA提供给UE内部汽车使用的。并在UE里暴露一些变量,Carla中的PythonAPI也是如此,通过控制这些变量来达到不同车辆的效果:


如此,我们可以参照汽车模板的链接方式,再集成其他各式各样的动力学模型进UE中,例如飞机坦克等等。

思考一下如何在carla框架里自定义API
同理,在carla的架构中,想要添加PythonAPI也参考代码自定义API即可。注意上面server和client端的联系图,自行补充默认参数设置和头文件的相关声明。可以参考源码自己来增改,或参考这篇博文的步骤。


Tips

如果默认vs是2017版本的,其他项目(比如Airsim使用2019),这时如何强制ue选择版本呢?
  1. Edit -> Editor preferences -> General -> Source code ; Edit -> Project Settings -> Platforms -> Windows -> Toolchain ->CompilerVersion
  2. 如果默认update_from_git.bat文件生成了VS 2017项目,则可能需要C:\Program Files\Epic Games\UE_4.24\Engine\Binaries\DotNET\UnrealBuildTool.exe使用命令行选项手动运行该工具-projectfiles -project=<your.uproject> -game -rocket -progress -2019。

如果pip超时,可以使用代理

pip install --index-url https://pypi.douban.com/simple 库名
和之前命令比较,中间加了--index-url https://pypi.douban.com/simple


UE4中使用自动驾驶模拟——Carla相关推荐

  1. 自动驾驶模拟器Carla之python编程-(1)简介

    欢迎来到涵盖Carla的系列教程,这是一个开放源代码的自动驾驶环境,还附带了与之交互的Python API. Carla拥有环境(服务器),然后具有代理(客户端). 这种服务器/客户端架构意味着我们可 ...

  2. 基于Unity的自动驾驶模拟总结(Apollo)

    什么是Apollo平台 阿波罗是百度的全栈开放开源的自动驾驶软件平台. 上图是Apollo 3.5版本的架构图,我们可以看到阿波罗是从下往上的全栈式的平台,从硬件到各种感知器,到我们自主开发的Cybe ...

  3. 基于深度学习网络在Airsim中的自动驾驶

    **Airsim仿真平台介绍及模型建立** Airsim是一款基于Unreal Engine构建的无人机.汽车等模拟器的开源平台,并且可以跨平台的通过PX4飞行控制器进行仿真控制,在物理和视觉上逼真的 ...

  4. 中美自动驾驶最新融资情况:千万级与十亿级美元的距离

    https://www.toutiao.com/a6679005032412611084/ 中美是目前自动驾驶最为火热的两个国家,恰好也是世界GDP排名前两位的国家,无论是中国还是美国,除了科技巨头和 ...

  5. 盘点中美自动驾驶卡车领域公司, 先进的技术和落地的场景

    雷锋网(公众号:雷锋网)新智驾按:相比起自动驾驶乘用车,自动驾驶卡车是更容易落地的场景,也是更容易商业化的场景.美国卡车运输行业是美国经济的重要组成部分,目前规模约为7000亿美元.数字反映出巨大的经 ...

  6. 自动驾驶模拟工具CARLA的安装

    最近研究了一下自动驾驶的模拟器Airsim和CARLA,准备搭建一个学习环境来学习自动驾驶的相关知识. Airsim最初是微软推出的一个模拟飞行的平台,之后增加了模拟驾驶的内容,这个平台据网上的资料是 ...

  7. 手握智算中心“绿洲”,毫末跑在中美自动驾驶长跑第一线

    作者 | 白日梦想家 编辑 | 王博 2022年过去,数据驱动成为自动驾驶演进共识.沿着数据驱动这条路线,自动驾驶加速迈入智算时代. 智算中心应运而生. 实际上,将智算引入自动驾驶的开先河者是特斯拉, ...

  8. 自动驾驶模拟软件Carla---环境搭建和编译

    安装 1. 源码编译 1.1 安装需求 x64系统 30-50GB内存 GPU4GB显存 1.2 必须安装软件 cmake -打包交叉编译 Git - python - 3.6.5(原本的电脑的版本) ...

  9. 自动驾驶模拟器Carla之python编程-(3)获取汽车摄像头数据

    在上节我们已经创建了一个可以形式的特斯拉model3,在本节,我们将给汽车上添加摄像头. 了解更多有关各种传感器以及如何使用它们的信息:Carla Sensors.现在,我将仅展示如何使用RGB相机. ...

最新文章

  1. 装完Windows 7后开启硬盘AHCI模式的方法
  2. 120.数据缓存cache的基本概念
  3. python刷题_11.学习Python,刷题才能让你感受到快(差)乐(距)!
  4. Mountain Number FZU-2109数位dp
  5. matlab length_MATLAB入门
  6. 剑指Offer30-包含min函数的栈(单调栈)
  7. 有趣 的java代码_[分享]几段有趣的JAVA代码
  8. js获取引用的css样式,js获取css样式方法
  9. 局域网共享设置软件_局域网软件(支持文件共享)
  10. 数据结构实验一 顺序表的插入、删除
  11. 制作一个实时渲染的markdown编辑器YaliEditor
  12. 初二计算机英语作文,初二英语作文带翻译
  13. 在Java中不允许使用使用一下字母组合作为文件名(不区分):CON,PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1,LPT2
  14. 12、Hadoop框架MapReduce 统计人数、总分、关联
  15. 苹果开发者账号注册申请流程
  16. 计算机毕业设计android的手机点名签到学生请假考勤系统app(源码+系统+mysql数据库+Lw文档)
  17. MySQL 中 不等于 会过滤掉 Null 的问题
  18. 梁静茹晒巨肚孕照引惊叹 被疑怀双胞胎
  19. android摇骰子源代码,Android实现微信摇骰子游戏
  20. 内蒙古大学本科毕业论文答辩PPT模板

热门文章

  1. 苹果32位(A6)设备配置gcc教程
  2. Java怎么实现录屏工具
  3. UI之PS操作(一)操作(一)
  4. Chrome浏览器检查设备不可用(chrome://inspect/#devices)
  5. 【项目管理】如何进行项目变更管理?
  6. WIN7右下角的声音图标不见了
  7. 华为鸿蒙系统定位,传华为鸿蒙系统正小规模测试 新系统将已定位低端市场为主...
  8. 【读者群答疑】怎样解决将使用OpenPyXl包的程序打包到apk时公式无法返回值的问题?
  9. 程序员怎样优雅度过35岁中年危机?深夜思考
  10. 关于argmin和argmax的一点说明