news 2026/4/17 14:52:26

自动驾驶—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/4/11 4:29:18

大家常用的数据迁移工具

据迁移工具种类繁多,覆盖不同场景(数据库、文件、云服务、系统等)。以下分类介绍主流工具: 一、数据库迁移工具 通用数据库迁移 AWS DMS:AWS Database Migration Service,支持同构/异构数据库迁移&#xff…

作者头像 李华
网站建设 2026/4/18 8:46:37

纯C实现的轻量级YMODEM文件传输库

纯C实现的轻量级YMODEM文件传输库 在嵌入式开发中,我们常常会遇到这样一个场景:设备部署在现场,突然需要升级固件、导出日志或同步配置。没有网络?没关系,串口还在。但如何通过一条简单的UART链路,把一个完…

作者头像 李华
网站建设 2026/4/15 2:38:32

四体低位交叉存储器的工作原理与设计

四体低位交叉存储器的设计与性能优化 在高性能计算系统中,处理器的运算速度早已远超主存的数据供给能力。即便现代CPU能在单个时钟周期内完成数十条指令,一旦遇到内存访问延迟,整个流水线便可能陷入停滞——这种“内存墙”问题已成为制约系统…

作者头像 李华
网站建设 2026/4/17 19:18:52

从传统开发到大模型:35岁程序员的转型之路,附独家学习资料包,建议收藏!_2025年强烈推荐30+程序员转行AI大模型试试

资深程序员李华分享35岁转型大模型领域的经历与经验。文章详述了转行动机、准备工作、必备知识体系及实用建议,同时提供大模型学习资源和行业前景分析。无论年龄大小,只要有决心和行动力,就能在大模型时代找到新位置,实现职业突破…

作者头像 李华
网站建设 2026/4/18 2:04:27

降AI神器分享:免费、高效,亲测知网通过率100%

写的文章明明是一个字一个字敲的,提交后却被导师批“满屏机器味”?自查AIGC率飙到87%,改了3遍还是降不下来? 我踩过替换同义词越改越假、用错降AI率工具反升的坑,今天把9个原创免费降AI率技巧3款实测工具深度测评分享…

作者头像 李华
网站建设 2026/4/18 1:49:04

PPAP流程详解与提交等级解析

VibeVoice-WEB-UI 技术解析:对话级语音合成系统详解 在播客、有声书和虚拟角色交互日益普及的今天,传统的文本转语音(TTS)系统逐渐暴露出一个根本性短板——它们擅长“朗读”,却不擅长“交谈”。一句话说得像人&#…

作者头像 李华