news 2026/7/15 7:26:46

自动驾驶—CARLA仿真(29)传感器(Sensors and data)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动驾驶—CARLA仿真(29)传感器(Sensors and data)

传感器使用详解

carla.Sensor类定义了一种特殊的参与者(actor),能够测量并流式传输数据。

  • 这些数据是什么?
    数据类型因传感器种类而异。所有传感器数据均继承自通用的carla.SensorData类。

  • 何时获取数据?
    要么在每个仿真步(simulation step)获取,要么在特定事件触发时获取,具体取决于传感器类型。

  • 如何获取数据?
    每个传感器都提供一个listen()方法,用于接收和处理数据。

尽管各类传感器存在差异,但它们的使用方式基本一致。


设置(Setting)

与所有其他参与者一样,首先需从蓝图库中查找传感器蓝图,并设置特定属性。这对传感器至关重要——其属性将直接影响所获得的结果。具体属性详见《传感器参考文档》。

以下示例设置了一个仪表盘高清摄像头:

# 查找传感器蓝图blueprint=world.get_blueprint_library().find('sensor.camera.rgb')# 修改蓝图属性:设置图像分辨率和视场角(FOV)blueprint.set_attribute('image_size_x','1920')blueprint.set_attribute('image_size_y','1080')blueprint.set_attribute('fov','110')# 设置传感器两次捕获之间的间隔时间(秒)blueprint.set_attribute('sensor_tick','1.0')

生成(Spawning)

传感器可放置在地图任意位置。通常,它们会附着(attach)到某个父级参与者(如车辆)上,从而像真实安装在车辆上的传感器一样随仿真移动。

spawn_actor()方法需要从蓝图库中选择的传感器蓝图和一个变换(transform)参数:

  • 对于未附着的传感器,该变换定义其在CARLA世界中的绝对位置
  • 对于附着的传感器,该变换定义其相对于父级参与者坐标系的相对位置
my_vehicle=world.spawn_actor(vehicle_blueprint,spawn_point)transform=carla.Transform(carla.Location(x=0.8,z=1.7))sensor=world.spawn_actor(sensor_blueprint,transform,attach_to=my_vehicle)

attachment_type参数定义传感器运动如何受其父级参与者控制:

  • 刚性附着(carla.AttachmentType.Rigid
    传感器严格跟随父级参与者的位姿变化。这是摄像头、激光雷达等常规车载传感器最常用的方式,也是默认设置。

  • 弹簧臂附着(carla.AttachmentType.SpringArm
    运动经过平滑处理,避免突然加速或减速。推荐用于录制仿真视频,可使画面流畅,避免摄像机位置更新时出现“跳跃”。

  • 幽灵弹簧臂附着(carla.AttachmentType.SpringArmGhost
    与弹簧臂类似,但不进行碰撞检测,因此传感器可能穿过墙壁或其他几何体。

sensor=world.spawn_actor(sensor_blueprint,transform,attach_to=my_vehicle,attachment_type=carla.AttachmentType.SpringArm)

监听(Listening)

每个传感器都有一个listen()方法,在每次获取数据时被调用。

该方法接收一个回调函数(callback)作为参数,通常是一个 lambda 函数,用于定义数据到达时应执行的操作。回调函数必须接受传感器数据作为输入参数。

# 每当摄像头生成新图像时,调用 do_something() 函数sensor.listen(lambdadata:do_something(data))...# 碰撞传感器:每次检测到碰撞时打印信息defcallback(event):foractor_idinevent:vehicle=world_ref().get_actor(actor_id)print('Vehicle too close: %s'%vehicle.type_id)sensor02.listen(callback)

数据(Data)

大多数传感器数据对象都提供将信息保存到磁盘的方法,便于在其他环境中使用。

不同传感器的数据结构差异较大,详情请参阅《传感器参考文档》。但所有传感器数据都包含以下基本信息:

传感器数据属性类型描述
frameint测量发生时的帧号
timestampdouble自仿真开始以来的模拟时间戳(单位:秒)
transformcarla.Transform测量时刻传感器在世界坐标系中的位姿

重要提示

  • is_listening():检查传感器是否已通过listen()注册了回调函数。
  • stop():停止传感器监听。
  • sensor_tick:蓝图属性,设置接收数据之间的仿真时间间隔。

传感器类型(Types of sensors)

摄像头(Cameras)

从自身视角拍摄世界画面。对于输出carla.Image的摄像头,可使用辅助类carla.ColorConverter将图像转换为不同信息表示形式。

数据获取频率:每一步仿真。

传感器输出类型概述
RGBcarla.Image提供清晰的环境视觉,类似普通场景照片。
广角(Wide angle)carla.Image支持广角、鱼眼、360度等非标准相机模型。
深度(Depth)carla.Image以灰度图渲染视野内物体的深度信息。
光流(Optical Flow)carla.Image渲染每个像素相对于摄像头的运动矢量。
语义分割(Semantic segmentation)carla.Image根据物体标签,用特定颜色渲染视野内元素。
实例分割(Instance segmentation)carla.Image在语义分割基础上,为每个独立物体分配唯一ID并着色。
动态视觉传感器(DVS)carla.DVSEventArray异步输出亮度变化事件流,模拟类脑视觉传感器。

探测器(Detectors)

当所附着的物体触发特定事件时才返回数据。

数据获取时机:事件触发时。

传感器输出类型概述
碰撞(Collision)carla.CollisionEvent检测其父级参与者与其他物体的碰撞。
车道入侵(Lane invasion)carla.LaneInvasionEvent当父级参与者跨越车道线时触发。
障碍物(Obstacle)carla.ObstacleDetectionEvent检测父级参与者前方可能存在的障碍物。

其他传感器(Other)

提供导航、物理量测量、场景2D/3D点云等功能。

数据获取频率:每个仿真步。

传感器输出类型概述
GNSScarla.GNSSMeasurement获取传感器的地理经纬度位置。
IMUcarla.IMUMeasurement包含加速度计、陀螺仪和电子罗盘。
激光雷达(LIDAR)carla.LidarMeasurement旋转式激光雷达,生成包含坐标和强度的4D点云,用于建模环境。
雷达(Radar)carla.RadarMeasurement生成2D点图,表示视野内物体及其相对于传感器的运动。
RSScarla.RssResponse根据安全检查调整施加于车辆的控制指令。该传感器工作方式与其他传感器不同,有专门的RSS文档说明。
语义激光雷达(Semantic LIDAR)carla.SemanticLidarMeasurement旋转式激光雷达,生成3D点云,并附加实例ID和语义分割信息。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 4:06:28

RTK基站设置与GNSS测量操作全解析

RTK基站设置与GNSS测量操作全解析 在城市道路改扩建项目中,测绘团队常面临一个棘手问题:明明设备标称精度达到厘米级,实测成果却频频超限。一位资深工程师发现,问题根源并非仪器性能不足,而是基站架设不当与坐标转换流…

作者头像 李华
网站建设 2026/7/15 0:13:49

大学英语2模拟试卷(一) 题目解析与练习

大学英语2模拟试卷(一) 题目解析与练习 在准备大学英语考试的过程中,许多学生常常陷入一个误区:把语法当作孤立的知识点来死记硬背。然而,真正的语言能力并不只是“知道规则”,而是能在具体语境中准确判断哪个选项最自然、最符合逻…

作者头像 李华
网站建设 2026/7/10 18:31:19

RTK基站设置与测量放样操作全解析

RTK基站设置与测量放样操作全解析 在现代工程测绘中,厘米级精度早已不再是遥不可及的目标。无论是道路施工的桩位放样、电力塔基的精准定位,还是地质灾害监测中的微小位移捕捉,RTK(Real-Time Kinematic)技术正以前所未…

作者头像 李华
网站建设 2026/7/8 12:33:52

Open-AutoGLM 能在苹果芯片上运行吗:M1/M2/M3全系列实测数据揭晓

第一章:Open-AutoGLM 支持苹果吗Open-AutoGLM 作为一款基于 AutoGLM 架构的开源项目,其对苹果生态系统的兼容性受到广泛关注。随着苹果芯片(Apple Silicon)在 Mac 设备中的普及,开发者普遍关心该项目是否能在 macOS 系…

作者头像 李华
网站建设 2026/7/9 4:22:15

Ionic Framework 更新日志:Vue 支持与 Bug 修复

GLM-TTS WebUI 使用指南:零样本语音克隆与情感合成 在内容创作、有声书生成和智能语音助手日益普及的今天,如何快速实现高质量的个性化语音合成,成为许多开发者和创作者关注的核心问题。基于 GLM-TTS 开源项目二次开发的这款 WebUI 工具&…

作者头像 李华
网站建设 2026/7/9 4:22:14

Legion 是联想(Lenovo)旗下的高性能游戏品牌,专注于为电竞玩家和创意用户提供强大的硬件设备和沉浸式体验。该系列涵盖游戏笔记本电脑、台式机、显示器、外设及掌上游戏机等产品,强调高刷新率屏幕、

Legion 是联想(Lenovo)旗下的高性能游戏品牌,专注于为电竞玩家和创意用户提供强大的硬件设备和沉浸式体验。该系列涵盖游戏笔记本电脑、台式机、显示器、外设及掌上游戏机等产品,强调高刷新率屏幕、先进散热技术以及AI优化功能。‌…

作者头像 李华