UE4中使用自动驾驶模拟——Carla
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 LibCarla
,make 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选择版本呢?
- Edit -> Editor preferences -> General -> Source code ; Edit -> Project Settings -> Platforms -> Windows -> Toolchain ->CompilerVersion
- 如果默认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相关推荐
- 自动驾驶模拟器Carla之python编程-(1)简介
欢迎来到涵盖Carla的系列教程,这是一个开放源代码的自动驾驶环境,还附带了与之交互的Python API. Carla拥有环境(服务器),然后具有代理(客户端). 这种服务器/客户端架构意味着我们可 ...
- 基于Unity的自动驾驶模拟总结(Apollo)
什么是Apollo平台 阿波罗是百度的全栈开放开源的自动驾驶软件平台. 上图是Apollo 3.5版本的架构图,我们可以看到阿波罗是从下往上的全栈式的平台,从硬件到各种感知器,到我们自主开发的Cybe ...
- 基于深度学习网络在Airsim中的自动驾驶
**Airsim仿真平台介绍及模型建立** Airsim是一款基于Unreal Engine构建的无人机.汽车等模拟器的开源平台,并且可以跨平台的通过PX4飞行控制器进行仿真控制,在物理和视觉上逼真的 ...
- 中美自动驾驶最新融资情况:千万级与十亿级美元的距离
https://www.toutiao.com/a6679005032412611084/ 中美是目前自动驾驶最为火热的两个国家,恰好也是世界GDP排名前两位的国家,无论是中国还是美国,除了科技巨头和 ...
- 盘点中美自动驾驶卡车领域公司, 先进的技术和落地的场景
雷锋网(公众号:雷锋网)新智驾按:相比起自动驾驶乘用车,自动驾驶卡车是更容易落地的场景,也是更容易商业化的场景.美国卡车运输行业是美国经济的重要组成部分,目前规模约为7000亿美元.数字反映出巨大的经 ...
- 自动驾驶模拟工具CARLA的安装
最近研究了一下自动驾驶的模拟器Airsim和CARLA,准备搭建一个学习环境来学习自动驾驶的相关知识. Airsim最初是微软推出的一个模拟飞行的平台,之后增加了模拟驾驶的内容,这个平台据网上的资料是 ...
- 手握智算中心“绿洲”,毫末跑在中美自动驾驶长跑第一线
作者 | 白日梦想家 编辑 | 王博 2022年过去,数据驱动成为自动驾驶演进共识.沿着数据驱动这条路线,自动驾驶加速迈入智算时代. 智算中心应运而生. 实际上,将智算引入自动驾驶的开先河者是特斯拉, ...
- 自动驾驶模拟软件Carla---环境搭建和编译
安装 1. 源码编译 1.1 安装需求 x64系统 30-50GB内存 GPU4GB显存 1.2 必须安装软件 cmake -打包交叉编译 Git - python - 3.6.5(原本的电脑的版本) ...
- 自动驾驶模拟器Carla之python编程-(3)获取汽车摄像头数据
在上节我们已经创建了一个可以形式的特斯拉model3,在本节,我们将给汽车上添加摄像头. 了解更多有关各种传感器以及如何使用它们的信息:Carla Sensors.现在,我将仅展示如何使用RGB相机. ...
最新文章
- 装完Windows 7后开启硬盘AHCI模式的方法
- 120.数据缓存cache的基本概念
- python刷题_11.学习Python,刷题才能让你感受到快(差)乐(距)!
- Mountain Number FZU-2109数位dp
- matlab length_MATLAB入门
- 剑指Offer30-包含min函数的栈(单调栈)
- 有趣 的java代码_[分享]几段有趣的JAVA代码
- js获取引用的css样式,js获取css样式方法
- 局域网共享设置软件_局域网软件(支持文件共享)
- 数据结构实验一 顺序表的插入、删除
- 制作一个实时渲染的markdown编辑器YaliEditor
- 初二计算机英语作文,初二英语作文带翻译
- 在Java中不允许使用使用一下字母组合作为文件名(不区分):CON,PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1,LPT2
- 12、Hadoop框架MapReduce 统计人数、总分、关联
- 苹果开发者账号注册申请流程
- 计算机毕业设计android的手机点名签到学生请假考勤系统app(源码+系统+mysql数据库+Lw文档)
- MySQL 中 不等于 会过滤掉 Null 的问题
- 梁静茹晒巨肚孕照引惊叹 被疑怀双胞胎
- android摇骰子源代码,Android实现微信摇骰子游戏
- 内蒙古大学本科毕业论文答辩PPT模板
热门文章
- 苹果32位(A6)设备配置gcc教程
- Java怎么实现录屏工具
- UI之PS操作(一)操作(一)
- Chrome浏览器检查设备不可用(chrome://inspect/#devices)
- 【项目管理】如何进行项目变更管理?
- WIN7右下角的声音图标不见了
- 华为鸿蒙系统定位,传华为鸿蒙系统正小规模测试 新系统将已定位低端市场为主...
- 【读者群答疑】怎样解决将使用OpenPyXl包的程序打包到apk时公式无法返回值的问题?
- 程序员怎样优雅度过35岁中年危机?深夜思考
- 关于argmin和argmax的一点说明