附上整个程序的代码
import 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
import random
import time
actor_list = [] #创建一个actor列表
try: #封装一下
client = carla.Client('127.0.0.1', 2000) #创建一个客户端
client.set_timeout(2.0) #如果2s未通信上,报错
world = client.get_world() #获取仿真世界
blueprint_library = world.get_blueprint_library() #获取一个蓝图库
bp = blueprint_library.filter('model3')[0] #创建一个model3
print(bp)
transform = random.choice(world.get_map().get_spawn_points())#随机抓取一个点
vehicle = world.spawn_actor(bp, transform) #将上一个点生成一辆车
vehicle.set_autopilot(True) #vehicle进入自动驾驶
actor_list.append(vehicle) # 把vehicle放进actor列表
location = vehicle.get_location() #定义车辆的位置
print(location) #定义车辆的起始位置
time.sleep(120) #让车跑120s
finally:
for actor in actor_list: #将actor_list中的
actor.destroy() #将所有的actor都销毁
print("所有的演员都over!")
实现环境
技巧 (网格线的位置为(0,0,0,))
成果展示
具体代码解释
1.将一些通用库和动态模型引入所编写的代码文件
import 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
import random
import time
2.创建一个对象列表方便控制
actor_list = [] #创建一个actor列表
3.需要一个客户端,与carlaUE4.exe服务器通信。这里很重要
client = carla.Client('127.0.0.1', 2000) #创建一个客户端
(ps:因为大家大分部用的都是自己的电脑,即本地计算机的IP地址,故这里的localhost填“127.0.0.1”)
4.设置客户端与服务器的链接超时时间
client.set_timeout(2.0) #如果2s未通信上,报错
5.创建世界
world = client.get_world() #获取仿真世界
6.获取蓝图库blueprints,从蓝图库中提取模型
blueprint_library = world.get_blueprint_library() #引入蓝图库
bp = blueprint_library.filter('model3')[0] #创建一个model3中第一个模型
7.放置模型(车辆)的位置
transform = random.choice(world.get_map().get_spawn_points())#随机抓取一个点
vehicle = world.spawn_actor(bp, transform) #将上一个点生成一辆车
8. 设置模型在仿真世界的动作,将模型加入对象列表
vehicle.set_autopilot(True) #vehicle进入自动驾驶
actor_list.append(vehicle) # 把vehicle放进actor列表
9.小编个人认为满世界找车辆不太容易,就打印出了车辆的位置(不是必须的)
print(vehicle.get_location()) # 打印第一辆车的位置
10.销毁车辆和一切对象
for actor in actor_list: #将actor_list中的
actor.destroy() #将所有的actor都销毁