1 个不稳定版本
0.1.4 | 2024 年 4 月 13 日 |
---|---|
0.1.3 |
|
0.1.2 |
|
0.1.1 |
|
0.1.0 |
|
111 在 可视化 中
100 每月下载次数
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
点云可视化
用法
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