【问题标题】:Use pcl in ROS with python在 ROS 中使用 pcl 和 python
【发布时间】:2021-11-15 17:24:20
【问题描述】:

我是 ROS 新手,但遇到问题。

我正在尝试使用 pcl 库来可视化点云。 首先,我启动我的 ros-realsense 相机,在终端中输入“roslaunch realsense2_camera rs_camera.launch filters:=pointcloud” 然后,我制作了一个 catkin 包,其中有一个 listener.py 脚本,我在其中订阅了 realsense,并获得了我想要的点云信息。到目前为止,一切都很好! 现在我想使用 PCL 库来可视化这个点云,但是当我运行我的包“rosrun pcl listener.py”时,我得到了错误

import pcl
ImportError: No module named pcl

所以我的问题是我想念什么? 如何在 ros 包中导入 pcl? 我是否必须在 CMakeLists.txt 或/和 package.xml 上添加一些内容?

我包含了我的 listener.py 脚本。

#!/usr/bin/env python
import rospy
import pcl
import ros_numpy
import sensor_msgs.point_cloud2 as pc2
from sensor_msgs.msg import PointCloud2

def callback_ptclud(ptcloud_data):
    pc = ros_numpy.numpify(data)
    points=np.zeros((pc.shape[0],3))
    points[:,0]=pc['x']
    points[:,1]=pc['y']
    points[:,2]=pc['z']
    p = pcl.PointCloud(np.array(points, dtype=np.float32))

def listener():
    rospy.Subscriber("/camera/depth/color/points", PointCloud2, callback_ptclud)
    rospy.spin()

if __name__ == '__main__':
    rospy.init_node("realsense_subscriber", anonymous=True)
    listener()

提前谢谢你 任何帮助表示赞赏

【问题讨论】:

  • 不是答案,但我建议将 C++ 用于 PCL 库。如果你坚持用Python,就用Open3D,它有更好的python+pointcloud支持

标签: python-3.x ros


【解决方案1】:

关于 pcl 最简单的方法是将它与 C++ 一起使用。它易于安装,并且有很多文档和示例。 关于 python_pcl 出于某种原因它不容易安装(至少对我来说)。我使用它所做的是下载库,将其放在我的电脑中的某个位置,当我想在我的脚本中使用它时,我只需导入 pcl 的绝对路径。

下载 python_pcl 文件是指找到并下载 init.py、_pcl.py、_pcl.so 和库的所有必要文件。

例如在我使用的 python 脚本中:

import sys
sys.path.append('~/path_to_downloaded_pcl') "it will find the __init__.py"
import pcl

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多