快速安装Carla
Carla的下载安装其实非常简单,步骤如下:
在Carla的github网站上找到想用的版本,我这里用的是0.9.5windows版本。并下载到指定的任意硬盘。
(这里并不需要按照官方文档build on windows的步骤进行安装,除非要自己创建地图,否则UnrealEngine基本用不上。)
打开CarlaUE4.exe
非想用命令行的输入: 将carla所在文件夹的目录地址换成cmd并输入:
CarlaUE4.exe
开启carla的终端,用WASD和鼠标调整视角可以得到下图
打开终端之后,默认的地图是Town03,后文会提到如何用其他内置地图,除此之外,运行carla之后也不会有任何的actor,需要用Python程序进行控制才可以。其实到这里,已经算装好了carla,后续的python编程才是重点!
运行示例程序
好在carla给了一系列的参考程序,这些程序在路径 .\CARLA_0.9.5\PythonAPI\examples下。本节运行下spawn_npc.py和manual_control.py文件。 (注意!!运行之前需要安装好必要的Python包,最重要的是pygame:pip install pygame)
spawn_npc.py 在cmd中运行:python spawn_npc.py -n 100 (这里的100也可以是任意小于200的整数,因为生成点一次最多只能有200个) 结果如下:
manual_control.py cmd中输入: python manual_control.py 由于该程序基于Pygame开发的,所以运行之后可以得到pygame的界面:
手动控制的键盘指令见cmd中提示。
Carla简单介绍
安装了carla之后,需要了解下carla的基本内容,它是基于游戏引擎Unreal Engine开发的,主要有两个组成部分,一个是模拟器部分,另外一部分就是用Python脚本对模拟器进行人为控制(比如控制车辆的运动,获取传感器的数据)
由于是基于模拟器开发的,所以carla对电脑的硬件还是有要求的。 推荐配置是:
四核Intel或者AMD处理器,2.5GHZ或更快;NVIDIA GeForce 470 GTX及以上;8GB RAM10GB硬盘空间另外,据官网信息,carla还有很多高级功能,之后也许会用到RoadRunner和Unreal Engine模拟器DIY整个城市的地图(可惜RoadRunner是收费的软件),还是一步步来,先在carla给定的地图上搭好一些危险场景。
如何用Python控制Carla
1. PythonAPI基本介绍
carla文档中提供了丰富的Python API的库函数。我这里按照PythonAPI tutorial中的内容大概整理一下如何开始编程。
首先是如下基本上固定的代码片段,try/exept的部分是要找到carla的库,该库在路径:\CARLA_0.9.5\PythonAPI\carla\dist下,只有成功找到该代码库,才能执行import carlaimport glob
import os
import sys
try:
sys.path.append(glob.glob('../carla/dist/carla-*%d.%d-%s.egg' % (
sys.version_info.major,
sys.version_info.minor,
'win-amd64' if os.name == 'nt' else 'linux-x86_64'))[0])
except IndexError:
pass
import carla
成功导入carla库之后,需要先连接上localhost 2000端口,再按照下文的三个元素抽象层级的顺序进行编程。1) world 2) blueprint 3) actor
必须要先获取world的数据,才能得到所有actor的blueprint(包含了actor的具体名称,包括各种牌子的车辆,行人,一些传感器)。这一部分的代码如下:
client = carla.Client('localhost',2000)
client.set_timeout(5.0)
world = client.get_world()
blueprint_library = world.get_blueprint_library()
##Search for specific actor and get its blueprint.
vehicle_bp = blueprint_library.filter(name)[0]
#print(blueprint_library.filter('model3'))
print(vehicle_bp)
4.2 程序1:更换不同的Town Map
在正式生成车辆之前,我们可以选择更改地图,API中提供了更改地图的方式:world = client.load_world('Town04'),使用Town04的地图的原因是它显示了类似于高速公路的工况,很适合用于建立危险场景。 代码如下:(接在上文的import carla的后面)
...
import random
import time
TOWN = 'Town04'
client = carla.Client('localhost',2000)
client.set_timeout(10)
world = client.load_world(TOWN)
Town04景象:
也可以更换其他的内置地图(0.9.5版本提供了Town01~Town07七张地图)
4.3 程序2:在特定的位置生成Vehicle
接下来就可以正式生成一个Actor了,生成之前我们需要指定特定位置,我选择了$\text{Location} =(x=-115.4, y=4.0, z=11),\ \ \text{Rotation}=(pitch=0, yaw=180, roll=0)$并且选择生成颜色比较鲜艳的奥迪tt以方便找到它的生成地点。
指定特定位置的代码语句如下:
#Import the library Transform used to explicitly spawn an actor
from carla import Transform, Location, Rotation
...
spawn_point = Transform(Location(x=-115.4, y=4.0, z=11),
Rotation(pitch=0, yaw=180, roll=0))
vehicle = world.spawn_actor(vehicle_bp, spawn_point)
这里的from carla import Transform, Location, Rotation是为了使用carla库中的函数Transform,这里标注一下,因为我之前在调用这个函数的时候cmd提示没有找到该函数,思考了下才发现没import。
生成了车辆之后,我们就可以给车控制指令(throttle, steer等),控制车辆的Python API是:
...
vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=0.0))
我们可以修改throttle和steer的数值,如果按以上代码(车辆一直直行)的话,车辆最终会发生碰撞,该处需要根据道路点不断改进。
最后如果我们不需要生成的actor之后,我们可以用代码把原来生成的车辆关闭,语句如下: (注意!!当执行多个脚本文件的时候,服务器是不会自动清理掉上一个脚本生成的actor的,所以需要手动清除)
finally:
for actor in actor_list:
actor.destroy()
print("All cleaned up!")
链接:https://blog.csdn.net/qq_41871826/article/details/101476719
参考:
Carla官网Introduction - Self-driving cars with Carla and Python part 1Carla与Python的强化学习视频系列
7、简单的事情重复做博彩问答,重复的动作快乐做,不吃饭,不回家博彩问答,打到翻盘为止,甚至可以通宵达旦。说明有坚持到底,就是胜利的良好心态。