线扫激光点云拼接——运动机构法

2023-10-17 20:30

本文主要是介绍线扫激光点云拼接——运动机构法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

假设线扫激光已经可以得到单帧点云。

滑台

运动方向标定:
在这里插入图片描述
其中(xstart,ystart,zstart)是标定板初始位姿在相机坐标系下的坐标,(xend,ystart,zstart)是标定板最终位姿在相机坐标系下的坐标。再将(△x,△y,△z)单位化即可得到滑台的运动方向。
在相机坐标系下拼接的坐标变换矩阵为
在这里插入图片描述
其中l为滑台运动的位移。

转台

旋转轴线标定:方法有多种,这里给出其中一种较简单的方法。
通过共面参照物标定的方法测出一个平面上的特征点在旋转过程中几个位置处的空间坐标,然后对分别对每个点做圆拟合,得到它对应的旋转中心,再对这些旋转中心做空间直线拟合,得到最后的旋转轴的方程。
上述的共面参照物在标定中可以选为标定板,特征点可以选为标定板的原点。
matlab三维空间点拟合圆的代码:

M=[-161.564 -62.7806 589.371 
-161.595 -67.8667 588.45
-161.639 -61.639 586.938
-161.684 -79.1419 584.965
-161.74 -84.5655 582.518
-161.818 -90.1652 579.386
-161.91 -96.0041 575.329
-162.005 -101.07 571.017
-162.107 -106.267 565.571
-162.232 -111.449 558.678
-162.363 -115.406 551.888
-162.494 -118.629 544.469
-162.611 -120.772 537.451
-162.765 -122.386 528.428
-162.886 -122.794 521.408
-162.973 -122.584 515.629
-163.104 -121.6 508.223
-163.238 -119.527 500.014
-163.559 -112.202 484.23
-163.634 -108.883 479.366
-163.714 -104.854 474.469
-163.759 -100.909 470.41
-163.828 -96.7168 466.732
-163.872 -92.4086 463.542
-163.884 -87.2752 460.273];[num dim]=size(M);L1=ones(num,1);
A=inv(M'*M)*M'*L1;       % 求解平面法向量B=zeros((num-1)*num/2,3);count=0;
for i=1:num-1for j=i+1:num   count=count+1;B(count,:)=M(i+1,:)-M(i,:);end    
endL2=zeros((num-1)*num/2,1);
count=0;
for i=1:num-1for j=i+1:numcount=count+1;L2(count)=(M(i+1,1)^2+M(i+1,2)^2+M(i+1,3)^2-M(i,1)^2-M(i,2)^2-M(i,3)^2)/2;end
endD=zeros(4,4);
D(1:3,1:3)=(B'*B);
D(4,1:3)=A';
D(1:3,4)=A;L3=[B'*L2;1]C=inv(D')*(L3)   % 求解空间圆圆心坐标C=C(1:3);radius=0;
for i=1:numtmp=M(i,:)-C';radius=radius+sqrt(tmp(1)^2+tmp(2)^2+tmp(3)^2);
end
r=radius/num            %  空间圆拟合半径figure
h1=plot3(M(:,1),M(:,2),M(:,3),'*');
%set(gca,'xlim',[11.4 11.7]);%%%%   绘制空间圆  %%%%
n=A;
c=C;theta=(0:2*pi/100:2*pi)';    %  theta角从0到2*pi
a=cross(n,[1 0 0]);          %  n与i叉乘,求取a向量
if ~any(a)                   %  如果a为零向量,将n与j叉乘a=cross(n,[0 1 0]);
end
b=cross(n,a);      % 求取b向量
a=a/norm(a);       % 单位化a向量
b=b/norm(b);       % 单位化b向量c1=c(1)*ones(size(theta,1),1);
c2=c(2)*ones(size(theta,1),1);
c3=c(3)*ones(size(theta,1),1);x=c1+r*a(1)*cos(theta)+r*b(1)*sin(theta);  % 圆上各点的x坐标
y=c2+r*a(2)*cos(theta)+r*b(2)*sin(theta);  % 圆上各点的y坐标
z=c3+r*a(3)*cos(theta)+r*b(3)*sin(theta);  % 圆上各点的z坐标hold on;
h2=plot3(x,y,z,'-r');
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
axis([-300,0,-150,150,350,650])
legend([h1 h2],'控制点','拟合圆');
grid on

在相机坐标系下拼接的坐标变换矩阵为
在这里插入图片描述
其中(u,v,w)为转轴的方向向量,(a,b,c)为转轴上一点,θ为旋转的角度。

机器人

机器人手眼标定,不做详细介绍。
坐标变换关系为
Base = ToolInBase * CamInToolPose * Camera
Camera为相机坐标系下的坐标,CamInToolPose由手眼标定得到,ToolInBase 由机器人运动学求解,Base为机器人基坐标系下的坐标。

运动机构标定C++工程下载地址:运动机构法标定.rar

这篇关于线扫激光点云拼接——运动机构法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/227759

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

内卷时代无人机培训机构如何做大做强

在当今社会,随着科技的飞速发展,“内卷”一词频繁被提及,反映了各行业竞争日益激烈的现象。对于无人机培训行业而言,如何在这样的时代背景下脱颖而出,实现做大做强的目标,成为每个培训机构必须深思的问题。以下是从八个关键方面提出的策略,旨在帮助无人机培训机构在内卷时代中稳步前行。 1. 精准定位市场需求 深入研究市场:通过市场调研,了解无人机行业的最新趋势、政策导向及未来发展方向。 明确目标

Unity3D 运动之Move函数和translate

CharacterController.Move 移动 function Move (motion : Vector3) : CollisionFlags Description描述 A more complex move function taking absolute movement deltas. 一个更加复杂的运动函数,每次都绝对运动。 Attempts to

【LVI-SAM】激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节

激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节 1. 特征提取实现过程总结1.0 特征提取过程小结1.1 类 `FeatureExtraction` 的整体结构与作用1.2 详细特征提取的过程1. 平滑度计算(`calculateSmoothness()`)2. 标记遮挡点(`markOccludedPoints()`)3. 特征提取(`extractF

js操作Dom节点拼接表单及ajax提交表单

有时候我们不希望html(jsp、vm)中有创建太多的标签(dom节点),所以这些任务都由js来做,下面提供套完整的表单提交流程,只需要在html中添加两个div其余的都由js来做吧。下面原生代码只需略微修改就能达到你想要的效果。 1、需要创建表单的点击事件 <a href="javascript:void(0);"onclick="changeSettleMoney('$!doctor.do

点云数据常见的坐标系有哪些,如何进行转换?

文章目录 一、点云坐标系分类1. 世界坐标系2. 相机坐标系3. 极坐标系4. 笛卡尔坐标系(直角坐标系):5. 传感器坐标系6. 地理坐标系 二、坐标系转换方法1. 地理坐标系与投影坐标系之间的转换2. 投影坐标系与局部坐标系之间的转换3. 局部坐标系与3D模型坐标系之间的转换4. 相机坐标系与其他坐标系之间的转换5. 传感器坐标系与其他坐标系之间的转换 三、坐标系转换工具 一

三维激光扫描点云配准外业棋盘的布设与棋盘坐标测量

文章目录 一、棋盘标定板准备二、棋盘标定板布设三、棋盘标定板坐标测量 一、棋盘标定板准备 三维激光扫描棋盘是用来校准和校正激光扫描仪的重要工具,主要用于提高扫描精度。棋盘标定板通常具有以下特点: 高对比度图案:通常是黑白相间的棋盘格,便于识别。已知尺寸:每个格子的尺寸是已知的,可以用于计算比例和调整。平面标定:帮助校准相机和激光扫描仪之间的位置关系。 使用方法 扫描棋盘:

【语句】如何将列表拼接成字符串并截取20个字符后面的

base_info = "".join(tree.xpath('/html/head/script[4]/text()'))[20:] 以下是对这个语句的详细讲解: tree.xpath('/html/head/script[4]/text()')部分: tree:通常是一个已经构建好的 HTML 文档树对象,它是通过相关的 HTML 解析库(比如 lxml)对 HTML 文档进行解