单线激光雷达(Lidar)学习三:使用雷达数据/scan转/PointCloud后生成鸟瞰图
前言:
雷达广泛应用于自动驾驶中,作用非常重要,是自动驾驶无人车中的作为“眼睛“的一环。雷达运行时会产生许多数据,可用于各种各样的计算后使用。下面就使用雷达驱动发布的/scan中的数据进行生成鸟瞰图。(附加代码)
一、 启动雷达节点(以镭神单线雷达ls01b_v2为例进行)
$roslaunch ls01b_v2 ls01b_v2.launch
二、 创建节点订阅/scan并转化为点云信息/PointCloud
详情请参考上一篇博文
https://blog.csdn.net/wxhy666/article/details/113674317
三、 启动数据转化节点
$rosrun lswj_pkg data_conversion
(注:lswj_pkg改为自己现用的功能包)
四、 创建节点订阅/PointCloud
#!/usr/bin/env python
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2
sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages')
from cv_bridge import CvBridge
import numpy as np
import rospy
from sensor_msgs.msg import PointCloud2,Image
import sensor_msgs.point_cloud2 as pc2
import os
class pt2brid_eye:
def __init__(self): #接收/scan发布/pointcloud
self.image_pub = rospy.Publisher('/bird_eyes', Image, queue_size=1)
self.pt_sub=rospy.Subscriber("/PointCloud", PointCloud2, self.callback)
self.bridge = CvBridge()
def callback(self,lidar):
lidar = pc2.read_points(lidar)
points = np.array(list(lidar))
im = self.point_cloud_2_birdseye(points)
self.image_pub.publish(self.bridge