Carla自学整理——Sensor模块

Carla内的Sensor总览

Camera类:RGB、深度、分割
雷达类:激光雷达(LIDAR)、声波雷达(Radar)、语义雷达(Semantic LIDAR)
外部环境传感器:Collision、Lane invasion(汽车变道时启动,将Lane ID与汽车ID记录下来)、Obstacle
汽车内部检测器:GNSS(地理位置)、IMU(轴加速度与角加速度)

Python构建代码

Camera构建

# 在蓝图库里选择camera传感器(rgb换为需要的camera),并存到变量camera_bp中
camera_bp = blueprint_library.find('sensor.camera.rgb')    
# 在变量camera_transform中存储camera的相对汽车的放置位置(具体怎么算的还不确定,但x为车头车尾轴)
camera_transform = carla.Transform(carla.Location(x=1.5, z=2.4))
# 将camera种类、camera位置、camera附着车辆信息赋给camera变量
camera = world.spawn_actor(camera_bp, camera_transform, attach_to=ego_vehicle)

# 存储camera传回的数据(image)
# “output_path”为存储路径,“%06d”表示保存的图像文件名为用0填充的六位数字
# “image.frame”表示当前图像的细则序号,以确保文件名唯一
camera.listen(lambda image: image.save_to_disk(os.path.join(output_path, '%06d.png' % image.frame)))

Lidar构建(此处为一些常用参数)

先是雷达传感器自身的一些属性:

# 在蓝图库中寻找雷达传感器,具体名称可以自己再去看看,此处应该是激光雷达的名字
lidar_bp = blueprint_library.find('sensor.lidar.ray_cast')
# 设定雷达传感器的激光束数量,此处为32个激光束(一个激光束便是检测32个点组成的点云中的一个点)
lidar_bp.set_attribute('channels', str(32))
# 设定雷达传感器每秒钟的扫描点数
lidar_bp.set_attribute('points_per_second', str(90000))
# 设定雷达传感器旋转的频率,此处为每秒旋转40次
lidar_bp.set_attribute('rotation_frequency', str(40))
# 设定雷达传感器可以探测到的最大距离,以m为单位
lidar_bp.set_attribute('range', str(20))

再构建Lidar位置和回调函数

# 与camera传感器的位置设定与callback function(回调函数,即将数据保存到磁盘上)原理几乎一样
lidar_location = carla.Location(0, 0, 2)
lidar_rotation = carla.Rotation(0, 0, 0)
lidar_transform = carla.Transform(lidar_location, lidar_rotation)
lidar = world.spawn_actor(lidar_bp, lidar_transform, attach_to=ego_vehicle)
lidar.listen(lambda point_cloud: \
            point_cloud.save_to_disk(os.path.join(output_path, '%06d.ply' % point_cloud.frame)))

你可能感兴趣的:(自动驾驶,人工智能)