news 2026/4/16 10:51:37

自动驾驶—CARLA仿真(8)tutorial demo

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动驾驶—CARLA仿真(8)tutorial demo

测试用例

PythonAPI/examples/tutorial.py
这是一个基础传感器数据采集示例,演示如何:

  1. 在仿真中生成一辆主车并启用自动驾驶
  2. 为主车挂载一个深度摄像头(Depth Camera)
  3. 将摄像头捕获的图像自动保存到磁盘
  4. 动态调整车辆位置并批量生成 NPC 车辆

适用于数据集生成、传感器调试、自动化测试等场景。

保存的depth图如下:


🔑 主要模块解析

1.客户端连接与世界获取
client=carla.Client('localhost',2000)world=client.get_world()
  • 连接到远程 CARLA 服务器
  • 获取当前仿真世界实例

✅ 这是所有 CARLA 脚本的起点。


2.主车生成与配置
bp=random.choice(blueprint_library.filter('vehicle'))ifbp.has_attribute('color'):color=random.choice(bp.get_attribute('color').recommended_values)bp.set_attribute('color',color)transform=random.choice(world.get_map().get_spawn_points())vehicle=world.spawn_actor(bp,transform)vehicle.set_autopilot(True)
  • 随机选择车辆模型(如 Tesla、Dodge 等)
  • 随机设置车身颜色
  • 在地图出生点生成车辆
  • 启用自动驾驶(由 TrafficManager 控制)

💡 注意:车辆被加入actor_list以确保后续销毁。


3.深度摄像头挂载与图像保存
camera_bp=blueprint_library.find('sensor.camera.depth')camera_transform=carla.Transform(carla.Location(x=1.5,z=2.4))camera=world.spawn_actor(camera_bp,camera_transform,attach_to=vehicle)cc=carla.ColorConverter.LogarithmicDepth camera.listen(lambdaimage:image.save_to_disk('_out/%06d.png'%image.frame,cc))
  • 创建深度摄像头,安装在车头前方(x=1.5m, z=2.4m)
  • 使用对数深度着色器LogarithmicDepth),将深度值映射为灰度图像
  • 注册回调函数:每帧图像自动保存为_out/000001.png,_out/000002.png

✅ 这是传感器数据自动采集的核心机制


4.动态调整主车位置
location=vehicle.get_location()location.x+=40vehicle.set_location(location)
  • 将主车沿 X 轴向前移动 40 米
  • 注意:此操作会瞬移车辆(不经过物理运动),常用于快速定位

⚠️ 此操作仅适用于测试,真实驾驶中应通过控制指令移动。


5.批量生成 NPC 车辆
transform.location+=carla.Location(x=40,y=-3.2)transform.rotation.yaw=-180.0for_inrange(10):transform.location.x+=8.0npc=world.try_spawn_actor(bp,transform)ifnpcisnotNone:npc.set_autopilot(True)
  • 在主车前方道路线性排列生成 10 辆 NPC 车
  • 使用try_spawn_actor()避免因碰撞导致崩溃
  • 所有 NPC 启用自动驾驶,形成简单交通流

✅ 演示了可控的交通场景构建方法


6.资源安全清理
finally:camera.destroy()client.apply_batch([carla.command.DestroyActor(x)forxinactor_list])
  • 使用finally块确保无论是否异常,所有 Actor 都被销毁
  • 采用批量销毁命令apply_batch)提高效率

✅ 这是 CARLA 脚本的最佳实践,防止仿真环境残留。


修改demo:添加观察者视角

原测试用例使用默认观察者视角,随着主车、NPC位置的变动,导致在默认视角看不到车辆;因此,我们就可以修改设置下观察者视角;
在 vehicle = world.spawn_actor(…) 之后添加:

spectator = world.get_spectator() vehicle_location = vehicle.get_transform().location spectator.set_transform(carla.Transform( vehicle_location + carla.Location(z=50), # 高空俯视 carla.Rotation(pitch=-90) # 垂直向下看 ))

或更真实的跟随视角:

# 第三人称跟随 spectator.set_transform(carla.Transform(vehicle.get_transform().location+carla.Location(x=-10,z=5),vehicle.get_transform().rotation))

✅ 总结

该脚本是 CARLA最基础但完整的数据采集范例,展示了:

  1. 如何生成并控制车辆
  2. 如何挂载传感器并保存数据
  3. 如何构建简单交通场景
  4. 如何安全管理仿真资源
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 17:17:46

电子音乐制作进阶指南:10款专业音效插件深度评测与实战技巧

《2025年电子音乐制作工具使用趋势报告》显示:职业制作人平均每首作品会使用7.3个专业音效插件进行声音塑形,其中合成器类插件使用率高达89%。当基础音色无法满足创作需求时,这些专业工具就像调色盘里的特殊颜料,能让作品瞬间拥有…

作者头像 李华
网站建设 2026/4/16 1:00:32

5、Qt模型视图框架:从基础到高级应用

Qt模型视图框架:从基础到高级应用 1. 模型 - 视图框架概述 模型和视图是常见的设计模式,通过将数据分离到模型中,并通过视图将模型呈现给用户,能创建出健壮且可复用的设计。模型用于描述列表、表格和树等结构: - 列表 :一维的数据向量。 - 表格 :具有多列的列表…

作者头像 李华
网站建设 2026/4/16 10:19:03

【dz-927】基于stm32的温湿度检测设计

基于stm32的温湿度检测设计 摘要 在农业种植、家庭园艺等场景中,环境温湿度、土壤湿度及光照等参数的稳定对植物生长至关重要。传统的人工监测与调控方式不仅耗时费力,还难以实现精准控制,易导致植物因环境不适出现生长问题。因此&#xff0c…

作者头像 李华
网站建设 2026/4/16 10:14:41

专题:2025医疗行业核心洞察报告:AI医疗、医疗器械、投融资与新药|附380+份报告PDF、数据、可视化模板汇总下载

原文链接:https://tecdat.cn/?p44586 原文出处:拓端抖音号拓端tecdat 医疗健康行业正处于硬科技驱动的范式变革期,AI深度赋能、医疗器械全球化、创新药技术突破与投融资结构重构四大核心趋势交织,推动产业从“规模扩张”向“价值…

作者头像 李华
网站建设 2026/4/16 3:37:02

为什么不采用级联删除而选择软删除

在数据库设计中,如果涉及级联删除的问题,不要通过外键的方式来进行操作,需要使用事务的方式来进行操作,为什么不采用外键的方式主要有以下两点:在数据库中,外键会关联主键,在主键进行删除的同时…

作者头像 李华
网站建设 2026/4/16 10:20:08

传统开发成本过高?低代码平台如何降低企业数字化转型预算

在数字化浪潮席卷各行各业的今天,“成本太高” 成为阻碍企业尤其是中小企业数字化转型的首要难题。传统开发模式下,人力薪资、漫长周期、维护损耗等成本层层叠加,一套常规业务系统的开发投入动辄数十万甚至上百万,让不少企业望而却…

作者头像 李华