Carla核心概念1:客户端

世界与客户端是CARLA的两个基本要素,是操作模拟器及其参与者的必要抽象。

一、client

客户端是用户运行以请求模拟中的信息或更改的模块。客户端使用IP和特定端口运行,通过终端与服务器进行通信。可以同时运行多个客户端。高级的多客户端管理需要彻底理解CARLA和同步。

客户端是CARLA体系结构中的主要元素之一。它们通过脚本连接到服务器、检索信息和命令更改。客户端识别自己,并与世界连接,然后与模拟操作。

除此之外,客户端还可以访问高级CARLA模块、特性,并应用命令批量。本节将只讨论命令批量。这对于生成大量actor等基本内容非常有用。其余的特性更复杂,将在高级步骤中各自的页面中讨论。

在Python API的carla.Client中学习类的特定方法和变量。

1.Client creation

客户端的创建需要两件事:标识它的IP地址,以及与服务器通信的两个TCP端口。第三个可选参数是设置工作线程的数量。默认设置为all(0)。Python API参考中的客户端包含一个片段,展示了在运行脚本时如何将这些参数解析为参数。

client = carla.Client('localhost', 2000)

默认情况下,CARLA使用本地主机IP和端口2000进行连接,但这些可以随意更改。在本例中,第二个端口将始终是n+1, 即2001。

服务器可以连接多个客户端,因为通常有多个脚本同时运行。在具有先进CARLA特性的多客户端方案中工作,如流量管理器,必然会使通信变得更加复杂。

2.World connection

world = client.get_world()

客户端还可以获得可用地图的列表来更改当前的地图。这将摧毁当前的世界并创造一个新的世界。

print(client.get_available_maps())
...
world = client.load_world('Town01')
# client.reload_world() creates a new instance of the world with the same map. 

每一个世界对象有一个id和生命周期,每次当客户端调用load_world() 或者 reload_world()

的时候,之前的世界将会被销毁。并且建立一个新的世界。虚幻引擎在这个过程中没有重新启动。

3.Using commands

命令是一些最常见的CARLA方法的适配,可以批量应用。例如,command.SetAutopilot等同于Vehicle. set_autopilot(),启用车辆的自动驾驶。但是,使用Client.apply_batch或Client.apply_batch_sync(),可以在一个模拟步骤中应用命令列表。这对于通常应用于数百个元素的方法非常有用。

下面的例子使用批量销毁一组车辆。

client.apply_batch([carla.command.DestroyActor(x) for x in vehicles_list])

4.Other client utilities

客户端对象的主要目的是获取或更改世界,并应用命令。不过,它还提供了对一些附加特性的访问。

流量管理器。这个模块负责每一辆自动驾驶的车辆,以重现城市交通。

录音机。允许重新制定以前的模拟。使用快照总结每帧的模拟状态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值