运行carla需要的硬件配置

运行carla需要的硬件配置,第1张

直接使用Carla模拟环境打开之后就是下面这样的一副画面,其实如果只是想试用一下Carla的话,直接点击左边的Quick started然后下载最新版本的已编译的文件就好了。大概1g多吧,建议网速好的时候下。下载后直接照着第二个的Running the simulator去执行就好,正常都可以跑起来。友情提示:退出是ALT+F4(来自一开始按Esc按到要哭的我),后退则是先按Q再按W按键相关在这个链接:Carla键盘输入二、想修改Carla的地图再编译运行这个问题其实也困扰了我很久,但其实在how to build Calra on Linux中其实已经讲了很多,只是一开始没搞太懂。大家照着指令一路做下来,只要仔细阅读了说明就没问题。值得注意的是第二步那个Build Unreal Engine,由于这个仓库是私有的,你必须把你的github账号和www.unrealengine.com.这个网址上的账号关联起来才能去下载东西。关联了之后会发邮件给你,确认邮箱之后再敲对应的指令输入自己的账号密码之后就可以下载我们需要的UnrealEngine这个引擎了。后面的setup到make那三条指令耗时相对比较长,可以走开做点别的事。一直执行到UE4_ROOT=~/UnrealEngine_4.18 ./Rebuild.sh这一步的时候我们就可以看到整个模拟环境了,而且可以进行修改。到这一步基本整个准备工作基本就做完了,接下来我们可以随时通过引擎去修改地图而不需要花很多时间,只要通过cd Unreal/CarlaUE4~/UnrealEngine_4.18/Engine/Binaries/Linux/UE4Editor “$PWD/CarlaUE4.uproject”在Carla文件夹的位置执行这两条指令就可以了。但是更改完之后要怎么生成相应的新的工程内,这个问题也是困扰了我很久。因为下载下来的编译好的工程中是有个CarlaUE4.sh可以直接运行,但是我们整个操作下来,并没有生成这样的文件。最终我在Q&A 找到了答案,可以看到其中的How can I create a binary version of CARLA?这个问题,这里面就给了两个方法。1、在打开编辑器的情况下,打包项目。2、直接运行package.sh来打包。经过亲身实验。。。第一种方法一觉睡醒还没好。第二种方法只用了十几分钟。打包后在终端上会告诉你生成的可运行文件在哪里,你对应地去打开来直接运行就好。我的是放在一个Dist的文件夹中。这样子你就可以根据自己需要修改地图后再生成对应的新的项目来运行。友情提示:Building Carla里面Setup.sh那一步可能要翻墙,而且里面会下载一个11.15g的压缩包。只能说大家看自己怎么弄下。我记得我4月第一次下载的时候还可以不翻而且很快。不知道为什么六月的时候重新下载就不行了。三、如何修改控制行人或者其他车辆这是个好问题,也是Carla在github上的维护团队正在做的事情,貌似从今年1月到现在,一直不断有类似的问题提出,但是一直没有很好的解决方案。团队貌似后来也烦了,宣布正在进行大版本更新,我也很期待能不能出来一个更方便控制相应模块,然后可以搭建自己所需要的场景的版本。

carla 为自动驾驶仿真平台,有服务器端和客户端两侧。仿真模拟是运行在服务器侧,而收取仿真中数据、修改仿真中事物状态的操作则是在客户端进行,客户端将操作指令通过IP地址和端口传送到服务器侧,实现修改。

这其实与前段和后端的做法及其类似。后端数据全部存储在远程的服务器中,在前端发出读取、修改后端数据的指令,指令通过 rpc 等措施传输到远程后端,实现对服务器中数据的修改。

在官方中是这样介绍World的, The world is an object representing the simulation. ,即为展示仿真的一个对象。

Carla是进行自动驾驶仿真模拟的平台。在自动驾驶的仿真中,需要构建一块区域,如乡村、城市等,来完成自动驾驶的仿真模拟。而构建的这个区域就是 world ,就像是一个独立的世界,在这个世界内完成仿真模拟的所有工作。在这个世界中存在多个事物,如车、行人、交通灯等,而这些事物又分别有自己的状态、信息等。

同时,这个 world 也可以理解为一个抽象层,在这个抽象层中提供了一系列方法,可用于获取该 world 的当前状态、改变这个 world 的天气、孵化产生相关的 actor 等。

client ,意为客户端,客户端是用户运行的一个模块,一个 client 可以凭借一个终端,通过一个IP地址和指定端口与服务器交互。

在 carla 中,在服务器上运行仿真,就是进行 world 侧程序的运行。与服务器交互就是指与 client 与 world 做出交互,即仿真运行在服务器上,表现为一个独立的区域,即为 world 。在这个 world 中有许多个事物,比如车、行人、交通灯等;而 client 为一个模块,用户可以通过 client 与 world 进行交互,从而达到改变 world 及 world 中某些事物的状态、获取相关信息等任务。

在一个仿真中,有且只能有一个 world ,就像世界,只有一个;而可以同时运行多个 client ,多个 client 分别与这个world进行交互。

一个 actor 可以指在仿真世界中的任何事物,如车、行人、传感器、交通灯等。

blueprint 是指已经布置好的用来产生 actor 的设计。一般来说,一个model都包含生命力和一系列的属性,一些属性可以实现用户定制化,而其他一些属性则不能。已经构建了 Blueprint library ,在这库中包含了所有可用的 blueprint 和信息。

地图是仿真中 world 的面貌,大部分为城镇。在 carla 自带的模块中共有八个地图。

道路、小巷和道路交叉口等都可以通过 client 来调用 Python API 来进行管理,也通过类 waypoint 来为车辆添加路径导航。

交通标志和交通灯则作为 carla.Landmark 的对象来进行修改。

传感器用来收集仿真世界的数据资料,传感器需要公式来清楚的定义如何去从管理数据。

crala的这个特性使得可以使用它来记录或者复现之前的仿真场景,所有发生的事件都被记录在 recoder file 之中。

所有的数据都写在服务器端的二进制文件里,但recoder是通过 carla.client 来管理的。

重要 直至回访截止,车辆都会被设置成自动驾驶模式,但是行人会停止。

recoder file 包括了与“角色”相关的信息:

停止recorder也很简单粗暴:

注意 估计来说,50个交通灯和100辆车记录一个小时大概需要200M的磁盘空间。

回放可以在仿真过程中的任何时间开启,除了需要log file的路径外,这种方法也需要一些其他参数。

time factor会决定回访的速度,它可以在不停止回复的情况下随时进行更改。

重要 如果 time_factor>2.0 ,“角色”的位置插值是不可用的,并只能更新。行人的的动画则不受time factor的影响。

记录的细节可以通过使用简单的API调用来检索,默认的话,只检索注册了事件的帧,将参数设定为 show_all 会返回所有帧的所有信息。关于存储数据的细节请参阅 这里 .

车辆必须有与之绑定的 collision dectector 来记录碰撞。这是可以被查询的,使用参数可以过滤碰撞相关“角色”的类型,例如: h 确定 role_name = hero 的“角色”,通常与用户管理的车辆是相关的。下面是一些查询可用的具体的“角色”类型设置。

输出总结了碰撞的时间、类型、ID以及相关“角色”的描述。

重要 由于是 hero 或 ego 来注册碰撞,所以它通常会是 Actor 1 。

碰撞可以通过使用recorder并设定时间发生前的时间来复现。

在本案例中,回放如下。

检测记录中车辆的拥堵,“角色”的拥堵是用过在一定时间下没有移动超过一定距离来定义的。这种定义使用者可以在查询时来决定。

注意 有些时候车俩在红绿等前的等待时间可能比预期要久,也可能会被认为是拥堵。

下面的例子假设车辆在60s内移动不超过1m即为拥堵。

输出是按持续时间来分类的,即是车辆在拥堵状态下移动最小距离耗费的时间。

173 车辆在 36 秒时停止了 336 秒,可以通过复现 36 秒之前的一些时间来进行回放。

官方在 PythonAPI/examples 路径下提供了一些脚本,可以帮助recorder的使用。

现在是时候进行一下实验了,使用recorder去回放一个仿真过程,追踪发生的时间,并试着修改一下源码看下效果,有神马问题都可以去carla的论坛提问。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/532065.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-24
下一篇2023-06-24

发表评论

登录后才能评论

评论列表(0条)

    保存