当前位置: 首页 > news >正文

【C++】相机标定源码笔记-线激光点云处理工具类

一个线激光点云处理工具类,它包含了一系列的方法用于处理和分析线激光扫描得到的点云数据。提供的功能包括:

  1. 通过文件或直接数据设置点云。

  2. 计算线激光在机器人坐标系下的精度,输出内点的平均距离、最大距离、最小距离、总点数和内点数。

  3. 提供了一种方法计算物体从当前位置回到地平面的变换矩阵。

  4. 能够计算线激光与垂直平面的角度,这对于确定线激光传感器的朝向非常有用。

工具类利用了pcl::sample_consensus::RANSAC算法和线模型(pcl::SampleConsensusModelLine<pcl::PointXYZ>)对线激光扫描得到的点云数据进行分析,从而完成精度测量、变换计算以及角度测定等任务。

--------------------函数-------------------

构造函数:创建一个新的点云指针,将成员变量原始点云初始化为新创建的点云。将成员变量原始点云共享给点云指针。

析构函数:空。

设置点云数据通过文件名读取点云文件:创建爱你一个点云对象,读取点云文件,将读取的点云复制到成员变量 原始点云。

设置点云数据,通过传入点云对象: 将传入的点云对象复制到成员变量。

获取点云的精度信息:计算线激光点云在机器人坐标系下的精度(通过内点索引)。输入包含高度直通滤波的参数和距离基准,最大容忍距离,输出内点的平均距离、最大距离、最小距离以及点数和内点数。创建直通滤波器,创建点云指针和滤波后点云指针,将原始点云复制到点云指针对象,设置滤波器的输入点云,设置滤波字段z,设置滤波范围,执行滤波操作得到滤波后点云。设置输入点云为滤波后点云,设置滤波字段x,设置滤波范围,执行滤波操作得到新的滤波后点云。获取滤波后点云的点数,初始化内点数、总距离、最大距离、最小距离。遍历滤波后的点云{ 获取一个点,更新最大距离(点的x坐标),更新最小距离,如果当前点的x坐标与标准距离的差值大于容差,则跳过。  累加距离,累加内点数。}。 计算平均距离,设置最大距离和最小距离。设置内点数。

获取回到地面的变换矩阵:调用外部函数,输入原始点云,z的(高度)最大最小值,x的(直径)最大最小值。最大局外点距离,得到变换矩阵。

获取墙面俯仰角(主要任务是通过拟合点云中的平面来计算墙面的俯仰角(pitch angle),并生成一个旋转矩阵 T,将拟合的平面对齐到水平面): 初始化变换矩阵为单位矩阵,一个墙面上最少有20个点。创建滤波后点云指针,遍历输入点云,去除那些接近原点的点(即 x, y, z 坐标都接近 0 的点),并将剩余的点添加到 滤波后点云 中 . 拟合平面[ 定义平面模型的系数, 创建 ModelCoefficients 和 PointIndices 指针,分别用于存储平面模型的系数和内点的索引,创建 SACSegmentation 对象 seg,用于执行随机采样一致性(RANSAC)算法来拟合平面,设置 seg 的参数(优化模型系数,模型类型为平面,使用RANSAC方法,距离阈值 ),执行分割,如果没有找到平面模型,打印错误并返回,获取平面模型系数]。  计算旋转矩阵[ 根据平面系数设置初始法向量,目标法向量设置为0,0,1; 创建旋转矩阵] ,计算俯仰角。

dc276146b132bb76e567ae3954585a51.png

计算线激光与垂直平面角度: 创建滤波器和两个点云指针,复制输入点云到点云指针对象,滤波操作[对x轴执行滤波,保留距离正负δ范围的点,然后对z轴执行滤波,保留在最小最大z范围内的点]。检查点数并在ZOY平面上拟合直线。定义4维向量 光线参数(其中 (vx, vy) 是与线共线的归一化向量,(x0, y0) 是线上的一个点。),光线点向量,遍历滤波后点云,将点坐标(y,z) 添加到光线点向量。使用cv::fitLine为光条中心点进行直线拟合。输出光线参数。根据光线参数获取点斜式的点和斜率[如果 vy 非常小(接近于0),则认为直线与 x 轴平行,角度为0. 使用 atan2f 函数计算直线方向向量的角度,将角度从弧度转换为度数。根据角度的正负值调整角度,使其符合常规定义]。

5d757c0af98d80d52ece2ccaa1494dd8.png

Five Facts Lidar Companies Don't Want You To Know

https://www.youtube.com/watch?v=VuO3-TRuAP0&ab_channel=HesaiTechnology 

相关文章:

【C++】相机标定源码笔记-线激光点云处理工具类

一个线激光点云处理工具类&#xff0c;它包含了一系列的方法用于处理和分析线激光扫描得到的点云数据。提供的功能包括&#xff1a; 通过文件或直接数据设置点云。计算线激光在机器人坐标系下的精度&#xff0c;输出内点的平均距离、最大距离、最小距离、总点数和内点数。提供了…...

解决Transformer根本缺陷,所有大模型都能获得巨大改进

即使最强大的 LLM 也难以通过 token 索引来关注句子等概念&#xff0c;现在有办法了。 最近两天&#xff0c;马斯克和 LeCun 的口水战妥妥成为大家的看点。这两位 AI 圈的名人你来我往&#xff0c;在推特&#xff08;现为 X&#xff09;上相互拆对方台。 LeCun 在宣传自家最新论…...

如何排查Java应用的死锁

排查Java应用中的死锁问题是一个复杂但重要的任务&#xff0c;因为死锁会导致应用程序停止响应&#xff0c;影响用户体验和系统稳定性。以下是一些方法和步骤&#xff0c;帮助你排查Java应用中的死锁。 1. 理解死锁的概念 在计算机科学中&#xff0c;死锁是指两个或多个线程相…...

JS面试题1

1. 延迟加载JS有哪些方式&#xff1f; defer: 等html全部解析完成&#xff0c;才会执行js代码&#xff0c;顺次执行js脚本 async&#xff1a;是和html解析同步的&#xff0c;不是顺次执行js脚本&#xff08;当有很多个js时&#xff09;&#xff0c;是谁先加载完谁先执行。 <…...

Linux网络 - 再谈、详谈UDP和TCP协议

文章目录 前言预备netstatpidofcat /etc/services 一、UDP协议UDP协议端格式UDP的缓冲区基于UDP的应用层协议 二、TCP协议1.TCP协议段格式确认应答(ACK)机制三次握手疑问1 最后一次客户端发给服务端的ACK请求怎么保证服务端能够收到&#xff1f; 四次挥手疑问2 为什么挥手是四次…...

el-form重置后input无法输入问题

新增用户遇到的问题&#xff1a; 如果你没有为 formData 设置默认值&#xff0c;而只是将其初始化为空对象 {}&#xff0c;则在打开dialog时&#xff0c;正常输入&#xff0c; formdata会变成如下 但是&#xff0c;打开后&#xff0c;直接使用 resetFields 或直接清空表单&…...

Java网络编程(JavaWeb的基础)

Java网络编程&#xff08;JavaWeb的基础&#xff09; 文章目录 Java网络编程&#xff08;JavaWeb的基础&#xff09;前言一、网络编程概述1.1 软件架构&网络基础1.2 网络通信要素:IP/端口/通信协议1.3 传输层协议:tcp/udp 二、网络编程API2.1 InetAddress类2.2 Socket类&am…...

鸿蒙Harmony开发实战案例:使用OpenGL绘制3D图形

XComponent控件常用于相机预览流的显示和游戏画面的绘制,在OpenHarmony上&#xff0c;可以配合Native Window创建OpenGL开发环境&#xff0c;并最终将OpenGL绘制的图形显示到XComponent控件。本文将采用"Native C"模板&#xff0c;调用OpenGL ES图形库绘制3D图形&…...

DM达梦数据库存储过程

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…...

【python】OpenCV—Color Correction

文章目录 cv2.aruco 介绍imutils.perspective.four_point_transform 介绍skimage.exposure.match_histograms 介绍牛刀小试遇到的问题 参考学习来自 OpenCV基础&#xff08;18&#xff09;使用 OpenCV 和 Python 进行自动色彩校正 cv2.aruco 介绍 一、cv2.aruco模块概述 cv2.…...

Java基础知识整理笔记

目录 1.关于Java概念 1.1 谈谈对Java的理解&#xff1f; 1.2 Java的基础数据类型&#xff1f; 1.3 关于面向对象的设计理解 1.3.1 面向对象的特性有哪些&#xff1f; 1.3.2 重写和重载的区别&#xff1f; 1.3.3 面向对象的设计原则是什么&#xff1f; 1.4 关于变量与方…...

知识图谱——Neo4j数据库实战

数据与代码链接见文末 1.Neo4j数据库安装 JDK 安装:https://www.oracle.com/java/technologies/javase-downloads.html Neo4j 安装:https://neo4j.com/download-center/ 配置好 JDK 和 Neo4j 的环境变量...

第十一次Javaweb作业

4.登录校验 4.1会话 --用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪&#xff1a;一种维护浏览器状态的方法&#xff0c;服务器需要识别多次请求…...

人工智能AI风口已开:如何赋予UI设计与视频剪辑新生命

随着科技的浪潮不断向前推进&#xff0c;人工智能&#xff08;AI&#xff09;正以惊人的速度重塑着我们的世界&#xff0c;特别是在创意产业的核心领域——UI设计与视频剪辑中&#xff0c;AI正逐步成为驱动行业创新与变革的关键力量。在这个AI技术全面开花的新时代&#xff0c;…...

计算机专业课面试常见问题-编程语言篇

目录 1. 程序的编译执行流程&#xff1f; 2. C浅拷贝和深拷贝的区别&#xff1f; 3. C虚函数&#xff1f; …...

CSS|05 继承性与优先级

继承性 一、继承性的特点&#xff1a; 1.外层元素身上的样式会被内层元素所继承 2.如果内层元素与外层元素身上的演示相同时&#xff0c;外层元素的样式会被内层元素所覆盖 二、关于继承性的问题 是不是所有样式都能被继承&#xff1f; 答&#xff1a;并不是所有样式能被继承…...

KVM性能优化之内存优化(宿主机)

linux系统自带了一技术叫透明巨型页&#xff08;transparent huge page&#xff09;&#xff0c;它允许所有的空余内存被用作缓存以提高性能&#xff0c;而且这个设置是默认开启的&#xff0c;我们不需要手动去操作。 Centos下&#xff0c;我们用cat /sys/kernel/mm/transpare…...

【Linux杂货铺】Linux学习之路:期末总结篇1

第一章 什么是Linux? Linux 是 UNIX 操作系统的一个克隆&#xff1b;它由林纳斯 本纳第克特 托瓦兹从零开始编写&#xff0c;并在网络上众多松散的黑客团队的帮助下得以发展和完善&#xff1b;它遵从可移植操作系统接口&#xff08;POSIX&#xff09;标准和单一 UNIX 规范…...

GPT-5的到来:智能飞跃与未来畅想

IT之家6月22日消息&#xff0c;在美国达特茅斯工程学院的采访中&#xff0c;OpenAI首席技术官米拉穆拉蒂确认了GPT-5的发布计划&#xff0c;预计将在一年半后推出。穆拉蒂形象地将GPT-4到GPT-5的飞跃比作高中生到博士生的成长。这一飞跃将给我们带来哪些变化&#xff1f;GPT-5的…...

gin中间件

在web应用服务中&#xff0c;完整的业务处理在技术上包含客户端操作&#xff0c;服务端处理&#xff0c;返回处理结果给客户端三个步骤。但是在在更负责的业务和需求场景。一个完整的系统可能要包含鉴权认证&#xff0c;权限管理&#xff0c;安全检查&#xff0c;日志记录等多维…...

自定义默认提示词:PandaWiki 问答 “一键贴合业务”,企业降本增效新方案

深耕企业数字化与知识管理 7 年&#xff0c;服务过数百家中大型企业&#xff0c;发现企业知识库普遍存在三大核心痛点&#xff1a;AI 问答泛化、风格混乱、效率低下、人力成本高。PandaWiki 的自定义默认提示词功能&#xff0c;搭配多平台客服 开源可控&#xff0c;为企业提供…...

用74LS175D和面包板,手把手教你做一个四人抢答器(附完整电路图)

从零搭建四人抢答器&#xff1a;74LS175D芯片实战指南 在电子技术学习过程中&#xff0c;没有什么比亲手搭建一个实际可用的电路更能加深理解了。今天&#xff0c;我们将使用经典的74LS175D芯片&#xff0c;配合面包板、LED和按键开关&#xff0c;一步步构建一个功能完整的四人…...

Anything V5镜像实战:从部署到生成你的第一张二次元头像

Anything V5镜像实战&#xff1a;从部署到生成你的第一张二次元头像 1. 项目介绍与核心价值 Anything V5是基于Stable Diffusion技术优化的高质量二次元图像生成模型。相比通用版本&#xff0c;它特别擅长生成动漫风格的人物肖像、场景插画等作品&#xff0c;在细节表现和风格…...

RMBG-2.0图文实战手册:发丝/毛边/半透明物体精准抠图案例集

RMBG-2.0图文实战手册&#xff1a;发丝/毛边/半透明物体精准抠图案例集 1. 开篇&#xff1a;当抠图遇上AI魔法 你有没有遇到过这样的烦恼&#xff1f;想给产品拍张美美的白底图&#xff0c;结果边缘总是毛毛糙糙&#xff1b;想给人物换个背景&#xff0c;头发丝却和原背景难舍…...

南北阁4.1-3B WebUI代码实例:TextIteratorStreamer多线程流式实现解析

南北阁4.1-3B WebUI代码实例&#xff1a;TextIteratorStreamer多线程流式实现解析 今天咱们来聊聊一个特别有意思的项目——一个为南北阁4.1-3B模型量身定做的Web交互界面。如果你用过Streamlit&#xff0c;可能会觉得它的界面有点“官方”&#xff0c;布局也比较固定。但这个…...

Python自动化办公:3种PDF水印处理技巧(附完整代码)

Python自动化办公&#xff1a;3种PDF水印处理技巧&#xff08;附完整代码&#xff09; 在数字化办公场景中&#xff0c;PDF文档的水印处理已成为高频需求。无论是合同归档需要添加版权标识&#xff0c;还是内部文件流转需清除敏感标记&#xff0c;传统手动操作既耗时又易出错。…...

如何快速实现歌词显示:群晖Audio Station完美解决方案

如何快速实现歌词显示&#xff1a;群晖Audio Station完美解决方案 【免费下载链接】qq_music_aum Synology LRC Plugin. 群晖 Audio Station 歌词插件&#xff0c;歌词来自QQ音乐。 项目地址: https://gitcode.com/gh_mirrors/qq/qq_music_aum 还在为群晖Audio Station缺…...

先整个经典的入门款耶路撒冷十字电阻吸波器玩吧,就冲5.8GHz的WiFi频段调——毕竟现在连吸波材料都得先蹭蹭网络信号的热度才好入门嘛

CST仿真吸波器选5.8GHz有个小小心思&#xff1a;单层电阻超材料的谐振频率一般和单元边长相关&#xff0c;大概是谐振波长的0.2-0.4倍&#xff08;等效介电常数εr算进去的话还要除以√εr的平方根&#xff09;&#xff0c;用的FR-4基板ε_r4.4、tanδ0.025、厚度1mm&#xff0…...

双阶段目标检测算法演进:从R-CNN到Mask R-CNN的技术突破与应用实践

1. 双阶段目标检测算法概述 目标检测是计算机视觉领域的核心任务之一&#xff0c;它不仅要识别图像中的物体类别&#xff0c;还要精确定位物体的位置。在众多目标检测算法中&#xff0c;双阶段检测算法因其高精度特性&#xff0c;一直是工业界和学术界的研究热点。这类算法的典…...

PostgreSQL权限管理实操:Homebrew安装后,如何正确创建postgres用户并导入项目数据

PostgreSQL权限管理实战&#xff1a;从Homebrew安装到项目数据迁移全指南 当你用Homebrew完成PostgreSQL安装后&#xff0c;真正的挑战才刚刚开始。许多开发者卡在权限配置这一关&#xff0c;导致后续数据迁移和日常操作频频受阻。本文将带你深入PostgreSQL的权限体系&#xff…...