#point-cloud #ros #pcl

pcl_rs

一个纯 Rust PCL 工具,包括读取 PCD 文件和显示点云等功能,可用于与 ros_pointcloud2 配合使用。

1 个不稳定版本

0.1.4 2024 年 4 月 13 日
0.1.3 2024 年 4 月 13 日
0.1.2 2024 年 4 月 12 日
0.1.1 2024 年 4 月 12 日
0.1.0 2024 年 4 月 12 日

111可视化

Download history 2/week @ 2024-04-19 3/week @ 2024-05-17 2/week @ 2024-05-24 6/week @ 2024-06-28 37/week @ 2024-07-05

100 每月下载次数

MIT 许可证

700KB
238

pcl_rs

一个纯 Rust PCL 工具,包括读取 PCD 文件和显示点云等功能,可用于与 ros_pointcloud2 配合使用。

特性

  • 从 PCD 文件读取点云
    • src/io/io_read.rs => load_from_pcd
  • 可视化点云
    • 实现 types::type_traits::Point3DVisible 特性 => 实现 Point3DVisible for PointXYZ
    • src/visual/point_cloud_viewer.rs => 使用 Struct CloudViewer
  • 点云 KNN 搜索
    • src/search/search_kdtree.rs => 使用 Struct KdtreeSearch

点云可视化

avatar

用法

use ros_pointcloud2::pcl_utils::{PointXYZ,PointXYZI,PointXYZRGB,PointXYZRGBA,PointXYZRGBNormal,PointXYZINormal,PointXYZL,PointXYZRGBL,PointXYZNormal};
use pcl_rs::io::load_from_pcd;
use pcl_rs::visual::CloudViewer;
fn main() {
    let cloud1 = load_from_pcd::<PointXYZ>("/home/xxx/scan3.pcd").unwrap();  //(**Only ASCII Format Now**)
    let cloud2 = load_from_pcd::<PointXYZRGB>("/home/xxx/line_cloud_0.pcd").unwrap();
    let mut cloud_viewer = CloudViewer::new("test");
    let mut kd_tree = KdtreeSearch::new();
    kd_tree.set_input_cloud(&cloud1);
    let point = cloud1.points.get(250).unwrap();
    let res = kd_tree.search_by_k(point, 3,1.0);
    for (distance,index) in &res{
        println!("{:?}",distance);
        println!("{:?}",index);
        println!("{:?}",cloud1.points.get(*index).unwrap());
    }
    cloud_viewer.add_cloud(&cloud1);
    println!("{:?}",cloud1.size());
    cloud_viewer.show();
}


路线图

  • 从 PCD 文件读取点云(目前仅支持 ASCII 格式)
  • 从更多格式文件读取点云
  • KNN 搜索
  • ICP

依赖项

~18MB
~321K SLoC