Uploaded by 方兆国

第2章 CARLA联合仿真环境搭建

advertisement
第二章 Carla联合仿真环境搭建
0. CARLA仿真器特性
基于UE4开发的开源无人驾驶仿真器
PythonAPI
自动驾驶传感器
用于规划和控制的快速仿真
地图生成
交通场景仿真
ROS集成
自动驾驶baseline
0.9.15新特性
新的车型以及地图
基于Omniverse的素材导入
基于OSM的三维场景生成
1. CARLA的安装方式
源码编译安装
Docker 安装
预编译包安装
2. CARLA仿真器环境搭建与车辆配置
该文档由深蓝学院自动驾驶仿真课程教研组整理发布,切勿用于本课程之外的其它用途
2.1 软件安装与准备
apollo v8.0.0: https://github.com/ApolloAuto/apollo/tree/v8.0.0
CARLA 0.9.14: https://carla.org/2022/12/23/release-0.9.14/
2.2 环境&车辆配置
import carla
import random
import time
#客户端连接
actor_list = []
carla_client = carla.Client('172.17.0.1', 2000)
carla_client.set_timeout(4.0)
#切换地图
carla_client.load_world("Town01")
world = carla_client.get_world()
#添加动态天气
weather = carla.WeatherParameters(cloudiness=10.0, precipitation=10.0,
sun_altitude_angle=20.0)
world.set_weather(weather)
# 添加车辆
bp_lib = world.get_blueprint_library()
vehicle_bp = bp_lib.find('vehicle.tesla.model3')
spawn_points = world.get_map().get_spawn_points()
transform_v = random.choice(spawn_points)
vehicle = world.spawn_actor(vehicle_bp, transform_v)
actor_list.append(vehicle)
print('created %s' % vehicle.type_id)
# 设定视角
spectator = world.get_spectator()
transform = carla.Transform(vehicle.get_transform().transform(carla.Location(x=-4,
z=2.5)), vehicle.get_transform().rotation)
spectator.set_transform(transform)
#添加传感器
camera_bp = bp_lib.find('sensor.camera.rgb')
camera_transform = carla.Transform(carla.Location(x=1.5, z=2.4))
camera = world.spawn_actor(camera_bp, camera_transform, attach_to=vehicle)
actor_list.append(camera)
camera.listen(lambda image: image.save_to_disk('out/%06d.png' % image.frame))
camera.stop()
print('created %s' % camera.type_id)
# 随机添加车辆位置
仿真测试
该文档由深蓝学院自动驾驶仿真课程教研组整理发布,切勿用于本课程之外的其它用途
for _ in range(0, 10):
transform = random.choice(spawn_points)
bp = random.choice(bp_lib.filter('vehicle'))
npc = world.try_spawn_actor(bp, transform)
if npc is not None:
actor_list.append(npc)
npc.set_autopilot(True, 6000)
print('created %s' % npc.type_id)
time.sleep(1)
vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=-1.0))
vehicle.set_autopilot(True, 6000)
print('destroying actors')
camera.destroy()
client.apply_batch([carla.command.DestroyActor(x) for x in actor_list])
print('done.')
2.3 手动控制车辆
python manual_control.py
3. CARLA&Apollo联合仿真
为什么需要联合仿真?
CARLA Apollo Bridge: https://github.com/guardstrikelab/carla_apollo_bridge?tab=readme-ov-file
244 stars 截至 2023/12/27
4. 总结
Carla doc:https://carla.readthedocs.io/en/latest/
该文档由深蓝学院自动驾驶仿真课程教研组整理发布,切勿用于本课程之外的其它用途
Download