自学内容网 自学内容网

8-传感器和数据

    传感器是从周围环境中获取数据的角色。每类传感器的详细信息可以参考这里sensors reference

1 传感器简介

    carla.Sensor定义了一种能够测量和传输数据的特殊类型的actor。
    这些传感器数据是什么?它因传感器的类型而异。所有类型的数据都继承自carla.SensorData
    传感器什么时候检索数据?在每个仿真步骤或者在某个事件触发时均可检索数据,这取决于传感器的类型。
    传感器如何检索数据?每个传感器都有一个listen()方法来接收和管理数据。
    尽管存在差异,但所有传感器的使用方式都是相似的。

1.1 设置

    与其他actor一样,找到蓝图并设置特定属性。这在处理传感器时是必不可少的。传感器的属性将决定获得的结果。这些在传感器参考sensors reference中有详细说明。
    下面以设置仪高清摄像头为例。

# Find the blueprint of the sensor.
blueprint = world.get_blueprint_library().find('sensor.camera.rgb')
# Modify the attributes of the blueprint to set image resolution and field of view.
blueprint.set_attribute('image_size_x', '1920')
blueprint.set_attribute('image_size_y', '1080')
blueprint.set_attribute('fov', '110')
# Set the time in seconds between sensor captures
blueprint.set_attribute('sensor_tick', '1.0')

1.2 生成


  attachment_toattachment_type是至关重要的。传感器应该连接到一个父角色上,通常是一辆车,以跟随它并收集信息。attachment_type将决定其相对于所述车辆的位置如何更新。
    刚性连接(Rigid attachment)。移动对其父位置要求严格。这是从仿真中检索数据的推荐设置。
    弹簧臂附件(SpringArm attachment)。相机移动过程中的加速和减速很小。此附件仅建议用于录制模拟视频。移动平稳,在更新相机位置时避免了“跳跃”。

transform = carla.Transform(carla.Location(x=0.8, z=1.7))
sensor = world.spawn_actor(blueprint, transform, attach_to=my_vehicle)

    注意:当使用附件生成传感器时,位置设置必须是相对于父角色的。

1.3 监听

    每个传感器都有一个listen()方法。每次传感器检索数据时都会调用这个函数。

    参数callback是一个lambda函数(lambda function)。它描述了在检索数据时传感器应该做什么,必须将检索到的数据作为参数。

# do_something() will be called each time a new image is generated by the camera.
sensor.listen(lambda data: do_something(data))

...

# This collision sensor would print everytime a collision is detected. 
def callback(event):
    for actor_id in event:
        vehicle = world_ref().get_actor(actor_id)
        print('Vehicle too close: %s' % vehicle.type_id)

sensor02.listen(callback)

1.4 数据

    大多数传感器数据对象都具有将信息保存到磁盘的功能。这将允许在其他环境中使用它。

    不同类型的传感器数据差别较大。请查看传感器参考以获得详细的信息。

传感器属性类型描述
frameint测量时的帧数
timestampdouble自开始以来的测量时间戳(以模拟秒为单位)。
transformcarla.Transform测量时传感器的世界参考值。

   注意:

    is_listening是一个传感器属性,可以随意启用/禁用数据监听。

    sensor_tick是一个蓝图属性,用于设置接收到的数据之间的模拟时间。

2 传感器类型

2.1 相机

     相机(cameras)返回图像数据( carla.Image),您可以使用carla.ColorConverter来修改图像以表示不同的信息。

    检索每个仿真步的数据:

传感器输出概述
深度(Depth)carla.Image在灰度图中渲染视野中元素的深度。
RGBcarla.Image提供清晰的视野。看起来像一张正常的现场照片。
光流(Optical Flow)carla.Image渲染来自相机的每个像素的运动。
语义分割(Semantic segmentation)carla.Image根据它们的标签,用特定的颜色呈现视图中的元素。
DVScarla.DVSEventArray以事件流的形式异步测量亮度强度的变化。

2.2 探测器

    当它们所连接的对象注册特定事件时,检索数据。

    在触发时检索数据:

传感器输出概述
碰撞carla.CollisionEvent检索父角色和其他角色之间的碰撞。
车道侵入carla.LaneInvasionEvent当其父级车辆越过车道标记时进行注册。
障碍物carla.ObstacleDetectionEvent探测前方可能的障碍物。

2.3 其他

    不同的功能,如导航、物理特性测量和场景的2D/3D点图。
    在每个仿真步中检索数据:

传感器输出概述
GNSScarla.GNSSMeasurement检索传感器的地理位置。
IMUcarla.IMUMeasurement由加速计、陀螺仪和指南针组成。
LIDARcarla.LidarMeasurement旋转激光雷达。生成具有每个点的坐标和强度的4D点云,以对周围环境进行建模。
Radarcarla.RadarMeasurement视线中的二维点图建模元素及其相对于传感器的运动。
RSScarla.RssResponse根据安全检查修改应用于车辆的控制器。这个传感器的工作方式与其他传感器不同,它有特定的RSS文档(RSS documentation)。
Semantic LIDARcarla.SemanticLidarMeasurement旋转激光雷达。生成一个带有实例和语义分割额外信息的3D点云。


原文地址:https://blog.csdn.net/u014318178/article/details/142629782

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!