安装python-open3d
pip3 install open3d
获取rosbag点云并现实显示点云
import rospy
import open3d as o3d
import numpy as np
from sensor_msgs.msg import PointCloud2
from sensor_msgs import point_cloud2
global d
d = None
def callback_pcl(data):
global d
d=data
def Point_cloud():
global d
ss=point_cloud2.read_points(d, field_names=("x", "y", "z"), skip_nans=True)
ss=list(ss)
points=np.array(ss)
return points
if __name__ == '__main__':
rospy.init_node('points',anonymous=False)
rospy.Subscriber('/rslidar_points', PointCloud2, callback_pcl)
vis = o3d.visualization.Visualizer()
vis.create_window()
points3d = o3d.geometry.PointCloud()
render_option = vis.get_render_option()
render_option.point_size = 1
render_option.background_color = np.asarray([0, 0, 0])
vis.add_geometry(points3d)
to_reset = True
rate = rospy.Rate(10)
while not rospy.is_shutdown():
if not d is None:
points=Point_cloud()
points3d.points = o3d.utility.Vector3dVector(points)
vis.update_geometry(points3d)
if to_reset:
vis.reset_view_point(True)
to_reset = False
vis.poll_events()
vis.update_renderer()
else:
print("not points_data")
time.sleep(2)
rate.sleep()