chatgpt给出的方法如下
pc_data = point_cloud2.read_points(msg_pc, field_names=('x', 'y', 'z', "intensity"), skip_nans=True)
pc_array = np.array(list(pc_data))
但是这种方法非常慢
使用ros_numpy可以数十倍加速
首先安装ros_numpy
sudo apt-get install ros-你的ros版本-ros-numpy
在代码中
import ros_numpy
pc_data2 = ros_numpy.numpify(msg_pc)
pc_x = pc_data2[:, :]["x"].flatten()
pc_y = pc_data2[:, :]["y"].flatten()
pc_z = pc_data2[:, :]["z"].flatten()
pc_array = np.vstack([pc_x, pc_y, pc_z]).T