激光雷达测量物体体积

只有想法而不去实践是不现实的,这样下去前进的脚步将会非常慢。


达到效果:1、将一个海之言的瓶子分割成梯形状和矩形状,将两种进行体积求和;

2、升级任务:利用微积分,将一个对称的不规则边缘物体的体积积出来。


首先开启激光雷达采集一下点云,查看点云的轮廓和形状和自己判断是否一致。

简直不能理解,为什么海之言的瓶子中间会扫描不到,难道因为这种特别的流线型,导致点传不回来吗?干脆换一个瓶子。

(PS:宇树科技激光雷达x轴正方向判断:接线端的反方向即为x轴正方向,逆时针90°即为y轴的正方向。)

换一个瓶子后扫描的点如图:

现在的目标就很明确了,将该点云分成三块,第一块上面的瓶盖(圆柱);第二块下面的长方体;第三块就是二者之间的一块梯形体。现在要将三块标出来,并且得到三块的长度,将三者体积相加。

接下来,首先对获取的图像进行滤波,然后滤波之后的物体进行识别、标注、计算。


滤波:这里选择使用半径滤波去除离群点,以及使用体素网格滤波

// 加载点云数据
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    if (pcl::io::loadPCDFile<pcl::PointXYZ>(argc > 1 ? argv[1] : "b.pcd", *cloud) == -1) {
        PCL_ERROR("无法加载PCD文件\n");
        return (-1);
    }

    // 预处理:半径滤波去除离群点
    pcl::RadiusOutlierRemoval<pcl::PointXYZ> outrem;
    outrem.setInputCloud(cloud);
    outrem.setRadiusSearch(0.002);
    outrem.setMinNeighborsInRadius(8);
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered(new pcl::PointCloud<pcl::PointXYZ>);
    outrem.filter(*cloud_filtered);

    // 预处理:体素网格滤波
    pcl::VoxelGrid<pcl::PointXYZ> vg;
    vg.setInputCloud(cloud_filtered);
    vg.setLeafSize(0.007f, 0.007f, 0.007f);
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_voxel_grid(new pcl::PointCloud<pcl::PointXYZ>);
    vg.filter(*cloud_voxel_grid);

    // 保存滤波后的点云
    pcl::io::savePCDFileASCII("filtered_cloud.pcd", *cloud_voxel_grid);

得到的效果如下图所示:(下面这一段是当初扫描的时候加的一层板子,暂时可以忽略)

我们可以看到,比较好的将上下两个形状区别开来,其实我这里想再用一个半径滤波,应该就可以比较好的分开来了。

【资源说明】 基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip 基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip 基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip 基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip 基于C++实现结合单目视觉与激光雷达测量物体尺寸源码+详细代码注释.zip 【备注】 1、该资源内项目代码都经过试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
### 半固态激光雷达测量系统概述 #### 技术原理 半固态激光雷达(SS-LiDAR, Semi-Solid-State Light Detection And Ranging)是一种介于机械旋转LiDAR和纯固态LiDAR之间的技术方案。这类设备通过微机电系统(MEMS)镜片或其他光学组件实现扫描功能,减少了传统机械部件的数量并提高了可靠性。 具体来说,在发射端利用MEMS振荡反射镜快速改变光束方向;接收部分则采用线阵列或多像素传感器捕捉返回信号。这种方式既保持了一定角度分辨率又降低了成本与体积[^1]。 ```python class SS_Lidar: def __init__(self, mirror_type="MEMS"): self.mirror_type = mirror_type def scan(self): print(f"Scanning using {self.mirror_type} mirror.") ``` #### 应用场景 对于复杂环境下的感知需求而言,半固态激光雷达成为了理想的选择之一: - **自动驾驶车辆**:提供高精度的距离信息用于路径规划、避障等功能; - **机器人导航**:帮助服务类机器人完成自主移动任务; - **无人机巡检**:支持低空飞行器执行电力线路巡查等工作; - **智能交通管理**:监道路状况以及行人活动情况等。 这些应用依赖于其较高的刷新频率所带来的实时性能优势[^2]。 #### 产品选型 当考虑选用何种类型的半固态激光雷达时,需综合考量以下几个方面因素: - 距范围:不同型号的产品覆盖距离有所差异,应根据实际工作场景选取合适规格; - 角度分辨率:决定了图像清晰程度的关键参数,通常越精细越好; - 数据更新速率:影响着系统的响应速度,尤其是在动态环境中尤为重要; - 尺寸重量:便携性也是不可忽视的一环,特别是在安装空间有限的情况下更为明显; - 成本效益:性价比高的解决方案往往更受欢迎。 例如,针对上述提到的应用领域,可以优先考察那些已经成功应用于类似项目的品牌和技术指标相似的产品系列。 #### 开发集成 要将半固态激光雷达融入现有平台或创建新的应用程序,开发者需要注意以下几点: - 接口兼容性:确认所选器件能够良好对接目标硬件架构及其操作系统; - 软件库支持:寻找官方提供的SDK或者其他开源项目作为基础工具包加速开发进程; - 点云处理能力:掌握必要的算法知识以便有效地解析来自LiDAR的数据流; - 安全防护措施:考虑到户外作业可能面临的恶劣天气条件等因素设计相应的保护机制。 综上所述,通过对以上四个维度的理解可以帮助更好地理解如何评估和部署适合特定用途的半固态激光雷达系统。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值