Open3D-ROS 연동
1. ROS to PCL
def convert_pcl(data):
    """     
    convert_pcl(data):
    - input " pointcloud2 ROS mgs.
    - output : pcd
    """
    header = '''# .PCD v0.7 - Point Cloud Data file format
    VERSION 0.7
    FIELDS x y z rgb
    SIZE 4 4 4 4
    TYPE F F F F
    COUNT 1 1 1 1
    WIDTH %d
    HEIGHT %d
    VIEWPOINT 0 0 0 1 0 0 0
    POINTS %d
    DATA ascii'''
    with open(tmp_pcd_name, 'w') as f:
        f.write(header % (data.width, data.height, data.width*data.height))
        f.write("\n")
        for p in pc2.read_points(data, skip_nans=True):
            f.write('%f %f %f %e' % (p[0], p[1], p[2], p[3]))
            f.write("\n")
        cloud_list = []
        for p in pc2.read_points(data, skip_nans=False):
            cloud_list.append(p[0])
            cloud_list.append(p[1])
            cloud_list.append(p[2])
            cloud_list.append(p[3])
        f.write("\n")
    pcd = py3d.read_point_cloud(tmp_pcd_name)
    return pcd
def callback(data):
    result_pcl = convert_pcl(data)
    print(result_pcl)
    publish_pointcloud(result_pcl, data)
    # publish_testcloud(data)
if __name__ == "__main__":
    rospy.init_node('listener', anonymous=True)
    rospy.Subscriber('input',
                     PointCloud2, callback)
    rospy.spin()
2. ROS
publish_pointcloud(output_data, input_data)
- input - output_data : 송신 point cloud topic
- input_data :