大家好,我是李慢慢。
不管你是一个自动驾驶的算法工程师,还是仿真工程师,不管你是业界大佬还是小白,我都建议你了解甚至使用一下这个软件。
目录:
0、前言
1、Carla简介
2、Carla的官方资源
3、Carla的安装
4、Carla的使用
自动驾驶算法的调试和效果评测首先要在仿真环境中去做,因此,一个强大、灵活的仿真环境是开发、测试过程中必不可少的要素。我们在查找可用的仿真工具时主要关注以下几个特性:
开源,免费;
包含高速场景;
可以便捷的控制、切换场景的环境,且场景、环境尽可能的丰富与真实;
可以便捷的控制、切换场景内移动物体(如车辆、行人等)的行为模式,且行为模式尽可能的丰富与真实;
第1条基本上把商用的软件排除掉了,如PreScan,VTD等······。事实上,在论文库的检索过程中,CARLA的出现频率是最高的,因此本文将介绍该软件及其安装和使用方法。
Carla 是一个开源的模拟器,可以模拟真实的交通环境,行人行为,汽车传感器信号等等。如下图所示,模拟器使用C++ 和虚幻 (Unreal) 引擎构成,使用者可以通过 Python API 使用 Python 脚本代码对模拟器的环境进行操作和控制。Carla 的底层架构如下图所示。

Carla 是一个自动驾驶仿真框架。具有如下特点:
环境基于 Unreal Engine 4 开发;
完全开源;
包含 C++ 和 Python 全部开放接口;
以 Carla 仿真环境为核心构建的仿真生态链逐步支持各种自动驾驶仿真标准或规则,比如支持 OpenDrive 和 OpenScenario 标准,支持 Responsibility Sensitive Safety(RSS);
以 Carla 仿真环境为核心构建的仿真生态链逐步支持各种自动驾驶工具或者框架比如 ROS, SUMO,PTV-Vissim 等;
产品更新迭代速度相对较快;
有英特尔,丰田,通用等大公司支持;
Carla的官网:
http://carla.org/

Carla官方文档:
https://carla.readthedocs.io/en/latest/

Carla中文站:
国内的一个网站,会有一些资料及咨询,大家也可以看看。
https://bbs.carla.org.cn

Carla源码下载:
https://github.com/carla-simulator/carla/releases

上面的链接很难打开,更难下载,如果有需要的,可以后访问如下网盘链接下载:
Carla下载百度网盘链接:
https://pan.baidu.com/s/1fi7gZPHwzVhOaZjn00oSTA
百度网盘提取码:clmm
注:网盘里有最新的版本,含Windows版、Ubuntu版、预编译版、源代码版等等。后期将陆续放进去最新的地图、软件版本等内容,敬请期待,持续关注。若链接失效,请后台联系。
首先,Carla的安装是个巨麻烦的事情。请诸君做好心理准备,特别是Ubuntu下的编译版,请您至少预留2天时间,准备好一个性能极好的电脑(CPU、GPU、内存都要好,可从官方教程查看硬件需求),且网速足够好,才能搞定。具体的安装过程,请一步一步按照官网的教程来,网上的野路子贼多,坑也贼多,只有官方教程才是最终解决方案。
我这里偷个懒,直接使用了Windows的预编译版,下载下来压缩包,解压后双击即可使用。
下载并解压:

双击即可打开:

打开后的样子:

Carla用于自动驾驶仿真,核心语言是Python,徒手编写程序还是很难的,但我们不用重复造轮子,跟着examples里提供的案例,我们很快就能学会自己编写脚本来进行仿真。
如下是官方自带的python脚本案例,用来讲解Carla的Python API如何使用:

想要运行这些脚本,还需要简单安装一些特殊的python库,好在这些库都写在了【requirements.txt】文件里,我们运行下这个文件就行,如下:

安装代码:
pip install -r requirements.txt

安装完成后,就可以运行示例代码了,比如:
python automatic_control.py

会打开一个如下的界面,程序随机创建一辆车,在地图中随机自动驾驶:

我在b站以前录制了两个视频,大家也可去b站搜了看看:
Carla软件的下载安装及初始界面介绍
Carla:运行官方自带的案例-快捷方式介绍

后期也可能会继续录制视频,发布一些更简单的脚本,大家持续关注哦。
本期先分享到这里,学习愉快。
瑞斯拜。
本文转载自微信公众号-车路慢慢,原文链接如下
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功
假设我在Store的模型中有这个非常简单的方法:defgeocode_addressloc=Store.geocode(address)self.lat=loc.latself.lng=loc.lngend如果我想编写一些不受地理编码服务影响的测试脚本,这些脚本可能已关闭、有限制或取决于我的互联网连接,我该如何模拟地理编码服务?如果我可以将地理编码对象传递到该方法中,那将很容易,但我不知道在这种情况下该怎么做。谢谢!特里斯坦 最佳答案 使用内置模拟和stub的rspecs,你可以做这样的事情:setupdo@subject=MyCl
在ruby中,你可以这样做:classThingpublicdeff1puts"f1"endprivatedeff2puts"f2"endpublicdeff3puts"f3"endprivatedeff4puts"f4"endend现在f1和f3是公共(public)的,f2和f4是私有(private)的。内部发生了什么,允许您调用一个类方法,然后更改方法定义?我怎样才能实现相同的功能(表面上是创建我自己的java之类的注释)例如...classThingfundeff1puts"hey"endnotfundeff2puts"hey"endendfun和notfun将更改以下函数定
我有一个gem,它有一个根据Rails.env的不同行为的方法:defself.envifdefined?(Rails)Rails.envelsif...现在我想编写一个规范来测试这个代码路径。目前我是这样做的:Kernel.const_set(:Rails,nil)Rails.should_receive(:env).and_return('production')...没关系,只是感觉很丑。另一种方法是在spec_helper中声明:moduleRails;end而且效果也很好。但也许有更好的方法?理想情况下,这应该有效:rails=double('Rails')rails.sho
我想知道是否可以通过自动创建数组来插入数组,如果数组不存在的话,就像在PHP中一样:$toto[]='titi';如果尚未定义$toto,它将创建数组并将“titi”压入。如果已经存在,它只会推送。在Ruby中我必须这样做:toto||=[]toto.push('titi')可以一行完成吗?因为如果我有一个循环,它会测试“||=”,除了第一次:Person.all.eachdo|person|toto||=[]#with1billionofperson,thislineisuseless999999999times...toto.push(person.name)你有更好的解决方案吗?