大家好,我是李慢慢。
这篇文章简单探索下Carla中激光雷达的仿真方法。通过本文,可以帮助您了解下Carla中激光雷达的建模过程,熟悉激光雷达的参数设置,并查看雷达的输出点云效果。

本文参考官方教程链接如下:
https://carla.readthedocs.io/en/latest/ref_sensors/#lidar-sensor
官方对激光雷达(本文仅探索下旋转激光雷达)的介绍如下。

这个旋转式激光雷达的属性定义如下:

激光雷达输出数据属性:

介绍完参考内容。以下开始搞事情。
1、启动Carla服务器
2、创建客户端
3、客户端中创建主车
4、主车上创建激光雷达
5、获得激光雷达的输出
双击Carla图标打开Carla的服务器端界面(windows版,0.9.13版本),启动后的界面如下:

client = carla.Client('localhost', 2000)= client.get_world()# 获取当前世界中的蓝图库blueprint_library = my_world.get_blueprint_library()# 从蓝图库中筛选出来特斯拉的‘model3’ 这个车车bp = blueprint_library.filter('model3')[0]# 从地图中选择一个生成点spawn_point = my_world.get_map().get_spawn_points()[0]# 利用车辆蓝图和地图生成点,创建车辆= my_world.spawn_actor(bp, spawn_point)# 设置车辆为自动驾驶模式vehicle_ego.set_autopilot(True)
lidar_bp = my_world.get_blueprint_library().find('sensor.lidar.ray_cast') # 获得激光雷达蓝图lidar_bp.set_attribute('range', '100') # 设置激光雷达属性:探测距离lidar_bp.set_attribute('upper_fov', '30') # 设置激光雷达属性:fov上边界lidar_bp.set_attribute('lower_fov', '-30') # 设置激光雷达属性:fov下边界lidar_bp.set_attribute('horizontal_fov', '360') # 设置激光雷达属性:水平fov角度lidar_bp.set_attribute('channels', '32') # 设置激光雷达属性:多少线束lidar_bp.set_attribute('rotation_frequency', '60') # 设置激光雷达属性:旋转频率lidar_transform = carla.Transform(carla.Location(x=0, y=0, z=2.4)) # 位置my_lidar = my_world.spawn_actor(lidar_bp, lidar_transform, attach_to=vehicle_ego)
def update_lidar_image(image):disp_size = window_sizelidar_range = 2.0 * float(lidar_bp.get_attribute("range"))points = np.frombuffer(image.raw_data, dtype=np.dtype('f4'))points = np.reshape(points, (int(points.shape[0] / 4), 4))lidar_data = np.array(points[:, :2])lidar_data *= min(disp_size) / lidar_rangelidar_data += (0.5 * disp_size[0], 0.5 * disp_size[1])lidar_data = np.fabs(lidar_data) # pylint: disable=E1111lidar_data = lidar_data.astype(np.int32)lidar_data = np.reshape(lidar_data, (-1, 2))lidar_img_size = (disp_size[0], disp_size[1], 3)lidar_img = np.zeros((lidar_img_size), dtype=np.uint8)= (255, 255, 255)#surface = pygame.surfarray.make_surface(lidar_img)(0, 0)) # 更新图像到pygame窗口#my_lidar.listen(update_lidar_image)
最后来看下效果:

本文就简单介绍到这里。
更多精彩内容将在后续继续研究。
需要代码的可以在后台联系我哦。
本文完。