ros,open3d单线激光雷达数据可视化

之前一直尝试将可视化写在ros的回调函数中,visualization一直会阻塞进程,换一种方式可以顺利实现可视化

import rospy
import open3d as o3d
import numpy as np
from sensor_msgs.msg import LaserScan

global scan_data
scan_data = None

def callback_laserscan(data):
    global scan_data
    scan_data = data

if __name__ == '__main__':
    rospy.init_node('laser_scan_reader')
    rospy.Subscriber('/scan', LaserScan, callback_laserscan)

    vis = o3d.visualization.Visualizer()
    vis.create_window()

    points3d = o3d.geometry.PointCloud()
    vis.add_geometry(points3d)

    to_reset = True
    rate = rospy.Rate(10)

    while not rospy.is_shutdown():
        print(scan_data)
        if scan_data is not None:
            ranges = scan_data.ranges
            angles = np.linspace(scan_data.angle_min, scan_data.angle_max, len(ranges))
            points = np.zeros((len(ranges), 3))
            points[:, 0] = ranges * np.cos(angles)
            points[:, 1] = ranges * np.sin(angles)

            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("No laser scan data")
            rospy.sleep(2)

        rate.sleep()

    vis.destroy_window()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值