Autopilot-Notes:CARLA仿真平台入门到精通的6个步骤

📅 2026/7/4 8:00:43
Autopilot-Notes:CARLA仿真平台入门到精通的6个步骤
Autopilot-NotesCARLA仿真平台入门到精通的6个步骤【免费下载链接】Autopilot-Notes自动驾驶笔记以解析各模块知识点、整合行业优秀解决方案进行阐述以帮助自己及有需要的读者包含深度学习、deeplearning、无人驾驶、BEV、Transformer、ADAS、CVPR、特斯拉AI DAY、大模型、chatgpt等内容.项目地址: https://gitcode.com/gh_mirrors/aut/Autopilot-Notes想要掌握自动驾驶仿真技术吗CARLA仿真平台是学习自动驾驶算法的最佳工具 作为开源自动驾驶仿真平台CARLA提供了完整的仿真环境支持从传感器模拟到算法测试的全流程开发。本文将带你从零开始通过6个简单步骤快速掌握CARLA仿真的核心技能。为什么选择CARLA仿真平台CARLACar Learning to Act是由英特尔实验室开发的开源自动驾驶仿真平台已成为学术界和工业界最受欢迎的仿真工具之一。它提供真实的城市环境、多种传感器模拟和灵活的Python API接口是学习自动驾驶技术的绝佳选择。 核心优势完全开源免费无需付费即可使用所有功能真实物理引擎基于Unreal Engine 4提供逼真的物理效果丰富的传感器支持RGB相机、LiDAR、RADAR、GPS、IMU等多种传感器灵活的场景构建可自定义天气、光照、交通流等环境条件强大的Python API便于算法开发和测试 步骤一快速安装与配置Ubuntu系统安装# 安装依赖 sudo apt-get update sudo apt-get install wget software-properties-common # 下载CARLA wget https://carla-releases.s3.us-east-005.backblazeb2.com/Linux/CARLA_Latest-release.tar.gz tar -xzf CARLA_Latest-release.tar.gz cd CARLA_*/ # 启动仿真器 ./CarlaUE4.shDocker安装推荐# 拉取镜像 docker pull carlasim/carla:0.9.15 # 运行容器 docker run -it --gpus all --rm \ -v /tmp/carla:/carla/L \ -p 2000:2000 \ carlasim/carla:0.9.15 \ /bin/bash -c ./CarlaUE4.shWindows系统安装从CARLA官网下载安装包.exe格式解压到指定目录运行CarlaUE4.exe安装完成后CARLA服务器将在localhost:2000端口启动可以通过Python客户端连接。![CARLA传感器配置](https://raw.gitcode.com/gh_mirrors/aut/Autopilot-Notes/raw/6d8c7ca722181eabea754764a461e80da97ea496/ch02_硬件/2.1 传感器/imgs/2.1.2.1.jpg?utm_sourcegitcode_repo_files) 步骤二掌握Python API基础连接CARLA服务器import carla import time # 建立连接 client carla.Client(localhost, 2000) client.set_timeout(10.0) # 获取世界对象 world client.get_world() blueprint_library world.get_blueprint_library() print(f成功连接到地图: {world.get_map().name})创建第一辆自动驾驶车辆# 选择车辆蓝图 vehicle_bp blueprint_library.filter(vehicle.tesla.model3)[0] # 获取生成点 spawn_points world.get_map().get_spawn_points() spawn_point spawn_points[0] # 生成车辆 vehicle world.spawn_actor(vehicle_bp, spawn_point) # 设置自动驾驶模式 vehicle.set_autopilot(True)基础车辆控制# 手动控制车辆 control carla.VehicleControl( throttle0.5, # 油门 0-1 steer0.0, # 转向 -1~1 brake0.0, # 刹车 0-1 hand_brakeFalse, reverseFalse ) vehicle.apply_control(control)![自动驾驶传感器融合](https://raw.gitcode.com/gh_mirrors/aut/Autopilot-Notes/raw/6d8c7ca722181eabea754764a461e80da97ea496/ch02_硬件/2.1 传感器/imgs/2.1.2.2.jpg?utm_sourcegitcode_repo_files) 步骤三配置传感器套件CARLA支持多种传感器模拟这是自动驾驶感知系统的核心。RGB相机配置# 创建RGB相机 camera_bp blueprint_library.find(sensor.camera.rgb) camera_bp.set_attribute(image_size_x, 1920) camera_bp.set_attribute(image_size_y, 1080) camera_bp.set_attribute(fov, 110) # 安装到车辆 camera_transform carla.Transform( carla.Location(x1.5, y0.0, z2.4), # 前视位置 carla.Rotation(pitch-15) # 俯仰角 ) camera world.spawn_actor(camera_bp, camera_transform, attach_tovehicle) # 图像采集回调 def camera_callback(image): image.save_to_disk(foutput/{image.frame}.png) camera.listen(camera_callback)LiDAR激光雷达配置# 创建LiDAR传感器 lidar_bp blueprint_library.find(sensor.lidar.ray_cast) lidar_bp.set_attribute(range, 100) # 探测范围100米 lidar_bp.set_attribute(points_per_second, 100000) # 每秒10万个点 lidar_transform carla.Transform(carla.Location(z2.5)) lidar world.spawn_actor(lidar_bp, lidar_transform, attach_tovehicle) def lidar_callback(data): points data.get_array() print(f采集到点云数量: {len(points)}) lidar.listen(lidar_callback)GNSS定位传感器# 创建GNSS传感器 gnss_bp blueprint_library.find(sensor.other.gnss) gnss world.spawn_actor( gnss_bp, carla.Transform(carla.Location(z1.0)), attach_tovehicle ) def gnss_callback(data): print(f位置: 纬度{data.latitude}, 经度{data.longitude}, 海拔{data.altitude}) gnss.listen(gnss_callback)![激光雷达工作原理](https://raw.gitcode.com/gh_mirrors/aut/Autopilot-Notes/raw/6d8c7ca722181eabea754764a461e80da97ea496/ch02_硬件/2.1 传感器/imgs/2.1.2.3.jpg?utm_sourcegitcode_repo_files)️ 步骤四构建真实交通场景生成交通流import random def spawn_traffic(world, blueprint_library, num_vehicles50): 生成交通车辆 vehicles [] vehicle_bps blueprint_library.filter(vehicle.*) for i in range(num_vehicles): # 随机选择车辆类型 bp random.choice(vehicle_bps) # 随机选择生成点 spawn_point random.choice(world.get_map().get_spawn_points()) try: vehicle world.spawn_actor(bp, spawn_point) vehicle.set_autopilot(True) # 设置自动驾驶 vehicles.append(vehicle) except: continue return vehicles # 生成50辆交通车辆 traffic_vehicles spawn_traffic(world, blueprint_library, 50)添加行人# 生成行人 walker_bp blueprint_library.filter(walker.pedestrian.*) walker_controller_bp blueprint_library.find(controller.ai.walker) spawn_point carla.Transform( carla.Location(x-6, y0, z1.5), carla.Rotation(yaw-90) ) walker world.spawn_actor(walker_bp[0], spawn_point) controller world.spawn_actor(walker_controller_bp, carla.Transform(), attach_towalker) # 控制行人移动 controller.start() controller.go_to_location(carla.Location(x10, y0, z1.5)) controller.set_max_speed(1.4) # 最大速度1.4米/秒动态天气系统# 设置不同天气条件 weather world.get_weather() # 晴天 weather.sun_altitude_angle 90 weather.cloudiness 10 weather.precipitation 0 weather.fog_density 0 world.set_weather(weather) # 雨天 weather.sun_altitude_angle 30 weather.cloudiness 90 weather.precipitation 80 weather.fog_density 20 world.set_weather(weather) # 雾天 weather.sun_altitude_angle 15 weather.cloudiness 70 weather.precipitation 20 weather.fog_density 80 world.set_weather(weather)![毫米波雷达传感器](https://raw.gitcode.com/gh_mirrors/aut/Autopilot-Notes/raw/6d8c7ca722181eabea754764a461e80da97ea496/ch02_硬件/2.1 传感器/imgs/2.1.3.1.jpg?utm_sourcegitcode_repo_files) 步骤五数据采集与处理多传感器同步采集import os # 创建数据保存目录 output_dir /data/carla_dataset os.makedirs(output_dir, exist_okTrue) # 传感器列表 sensors {} # RGB相机数据采集 camera.listen(lambda img: img.save_to_disk(f{output_dir}/camera/{img.frame}.png)) # LiDAR数据采集 lidar.listen(lambda data: data.save_to_disk(f{output_dir}/lidar/{data.frame}.ply)) # IMU数据采集 imu_bp blueprint_library.find(sensor.other.imu) imu world.spawn_actor(imu_bp, carla.Transform(), attach_tovehicle) imu_data [] def imu_callback(data, imu_listimu_data): imu_list.append({ frame: data.frame, accelerometer: [data.accelerometer.x, data.accelerometer.y, data.accelerometer.z], gyroscope: [data.gyroscope.x, data.gyroscope.y, data.gyroscope.z] }) imu.listen(lambda data: imu_callback(data)) # 采集60秒数据 import time vehicle.set_autopilot(True) time.sleep(60) # 保存IMU数据 import json with open(f{output_dir}/imu.json, w) as f: json.dump(imu_data, f, indent2)传感器数据同步# 启用同步模式 settings world.get_settings() settings.fixed_delta_seconds 0.05 # 50ms时间步长 settings.synchronous_mode True world.apply_settings(settings) # 主循环同步采集 for frame in range(1000): # 采集1000帧 world.tick() # 推进仿真时间 # 在这里处理所有传感器数据 # 所有传感器的回调函数会在world.tick()后同步执行 time.sleep(0.05) # 等待50ms![GPS定位系统](https://raw.gitcode.com/gh_mirrors/aut/Autopilot-Notes/raw/6d8c7ca722181eabea754764a461e80da97ea496/ch02_硬件/2.1 传感器/imgs/2.1.5.1.jpg?utm_sourcegitcode_repo_files) 步骤六实战应用与优化端到端自动驾驶测试import pygame import numpy as np # 初始化Pygame显示 pygame.init() display pygame.display.set_mode((1280, 720)) clock pygame.time.Clock() # 图像处理回调 image_array [] def camera_callback(image): array np.frombuffer(image.raw_data, dtypenp.dtype(uint8)) array array.reshape((image.height, image.width, 4)) image_array.append(array[:, :, :3]) camera.listen(camera_callback) # 主显示循环 try: while True: for event in pygame.event.get(): if event.type pygame.QUIT: raise StopIteration if image_array: img image_array.pop(0) img img[:, :, ::-1] # BGR转RGB surface pygame.surfarray.make_surface(img.swapaxes(0, 1)) display.blit(surface, (0, 0)) pygame.display.flip() clock.tick(30) # 30FPS finally: # 清理资源 vehicle.destroy() camera.destroy() pygame.quit()性能优化技巧# 降低画质提高帧率 ./CarlaUE4.sh -quality-levelLow # 无窗口模式运行服务器模式 ./CarlaUE4.sh -carla-server -RenderOffScreen # 使用OpenGL渲染兼容性更好 ./CarlaUE4.sh -opengl常见问题解决连接超时问题client carla.Client(localhost, 2000) client.set_timeout(20.0) # 增加超时时间到20秒地图切换# 切换到不同城镇 world client.load_world(Town02) # Town01-Town12可选资源清理# 正确销毁Actor def cleanup(): for actor in world.get_actors(): if actor.is_alive: actor.destroy() 学习资源与进阶路径项目内相关资源官方文档ch08_工具/8.2 仿真/8.2.1 Carla仿真/readme.md - 完整的CARLA使用指南传感器知识ch02_硬件/2.1 传感器/ - 深入了解各类传感器原理每日前沿ch10_每日前沿/2026-02-24.md - 最新的CARLA仿真技术动态进阶学习建议掌握Python API深入理解carla.Client的所有方法学习传感器融合结合ch01_基础/1.3 滤波/中的滤波算法实践强化学习参考ch01_基础/1.10 强化学习/实现自动驾驶决策参与开源项目在CARLA社区贡献代码和案例 核心要点总结步骤关键技能学习目标1️⃣环境安装掌握CARLA在不同系统的安装方法2️⃣Python API理解客户端连接和基础控制3️⃣传感器配置学会配置多种传感器并采集数据4️⃣场景构建创建复杂的交通环境和天气条件5️⃣数据处理实现多传感器同步采集和存储6️⃣实战应用开发端到端自动驾驶测试系统 快速入门小贴士从简单开始先使用Town01地图熟悉基本操作逐步增加复杂度先实现单传感器再扩展到多传感器融合利用官方示例CARLA自带丰富的Python示例代码加入社区关注CARLA GitHub仓库和论坛获取最新资讯实践出真知多动手编写代码调试和优化通过这6个步骤你已经掌握了CARLA仿真平台的核心技能 无论是学术研究还是工业应用CARLA都能为你提供强大的仿真支持。现在就开始你的自动驾驶仿真之旅吧提示所有代码示例都可以在项目中的ch08_工具/8.2 仿真/8.2.1 Carla仿真/目录找到完整实现。【免费下载链接】Autopilot-Notes自动驾驶笔记以解析各模块知识点、整合行业优秀解决方案进行阐述以帮助自己及有需要的读者包含深度学习、deeplearning、无人驾驶、BEV、Transformer、ADAS、CVPR、特斯拉AI DAY、大模型、chatgpt等内容.项目地址: https://gitcode.com/gh_mirrors/aut/Autopilot-Notes创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考