第二章 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/ 该文档由深蓝学院自动驾驶仿真课程教研组整理发布,切勿用于本课程之外的其它用途