【机器人学】6-4.六自由度机器人运动学参数辨识-机器人精度验证【附MATLAB代码】
前言
前两个章节以及完成了机器人参数辨识。
【机器人学】6-1.六自由度机器人运动学参数辨识-辨识数学模型的建立
【机器人学】6-2.六自由度机器人运动学参数辨识-优化方法求解辨识参数
这里我们认为激光测量仪测量到的数据为机器人实际到达的位置,而机器人理论到达的位置是通过运动学解算出来的,在实际过程中,会产生误差导致机器人的理论位置与实际位置不相同。因此引出机器人的精度问题。
在标定了工具端、基座以及机器人本身的DH参数。那么我们的机器人精度如何呢?机器人的精度应该如何验证?
关于末端定位精度的概念
当我们在机械臂领域谈到未端定位精度这一概念时,实际上是诸多复杂概念的一个统称。整体而言,未端定位精度是描述机械臂整机运动性能的重要定量指标(一般我们会看到这个定量的数值在0.01mm和1m之间),其与机械臂本体硬件结构的刚度、传动误差与相应的伺服控制水平息息相关。
重复定位精度和绝对定位精度
在大多数情况下,工程师口中所述的未端定位精度一般指的是重复定位精度,这边首先就要引出两个重要概念的区分介绍:即重复定位精度(Repeatability)与绝对定位精度(Accuracy)。
重复定位精度是衡量机械臂未端到达空间相同一点一致性的能力,而绝对定位精度衡量的是机械臂未端到达空间目标点准确度的能力。
比如:让机械臂向前走100mm,第一次走到了99.8mm,第二次走到了100.1mm,这个差值0.03mm就是重复定位精度(并不是严格定义),而绝对定位精度是你需要运行100mm的距离,而实际走了101mm,这个差值1mm就是绝对定位精度。
通常由于机械臂本体制造中存在机械制造公差装配误差导致的运动学参数误差以及电机转角与关节转角间减速比误差等,导致机械臂存在重复性定位精度较高(0.05 mm /5个丝)以内,而绝对定位精度通常较低(1~2mm)。
验证标准
我们今天的定位精度的验证标准,遵循中华人民共和国国家标准-工业机器人性能规范及其试验方法-GB/T 12642
验证方法
实验条件:
1. 给机械臂安装一定的负载(通常使用半载),让机器人循环走空间中的5个点30次。用激光测量仪采集数据。此时可以得到激光测量仪采集到的5*30=150个数据,和给定的5个位置数据。

计算位姿准确度-绝对定位精度(AP)




计算位姿重复性-重复定位精度(RP)


重复定位进度的计算只需要对测量到的5*30=150个数据进行操作,而绝对定位精度的计算需要将给定的5个点的位置,与测量值相比较,由于激光测量仪的测量坐标系,与机械臂给定位置的给定值的坐标系不同,故需要进行转换。

其中
![]()
T06为我们的给定值,而T67和T-10,以经通过标定给出,故只需用式(6.2)即可求出在激光测量仪坐标系下的给定值。
已知标定后的结果为:

MATLAB代码验证
数据与函数准备
%重复的5个点的位置
function Position = verifyPara()
Position = [
-150,-350,630,78,-42,35;
-150,-650,930,79,-41,37;
150,-650,930,78,-42,35;
150,-350,630,81,-43,37;
0,-500,780,78,-45,41;
];
end
%激光测量仪测量到的5*30=150个数据
function measurementPara= measurementPara()
measurementPara = [
2227.1503 1299.0807 -124.93645 0 0 0;
1958.0963 1161.9514 171.70475 0 0 0;
2087.8145 896.25159 170.83141 0 0 0;
2362.3512 1026.0956 -131.34257 0 0 0;
2161.0067 1090.2524 22.07108 0 0 0;
2227.1328 1299.0675 -124.95587 0 0 0;
1958.0968 1161.9532 171.70837 0 0 0;
2087.8123 896.25279 170.83337 0 0 0;
2362.3504 1026.1024 -131.33808 0 0 0;
2161.0008 1090.2239 22.05651 0 0 0;
2227.1277 1299.0672 -124.957 0 0 0;
1958.0944 1161.9271 171.69652 0 0 0;
2087.7926 896.30133 170.84371 0 0 0;
2362.352 1026.0943 -131.34141 0 0 0;
2161.0026 1090.2215 22.057113 0 0 0;
2227.1286 1299.0658 -124.95844 0 0 0;
1958.0881 1161.9125 171.68597 0 0 0;
2087.7965 896.30007 170.84699 0 0 0;
2362.3567 1026.0941 -131.33545 0 0 0;
2161.0043 1090.217 22.058082 0 0 0;
2227.1269 1299.0627 -124.95822 0 0 0;
1958.088 1161.9106 171.68716 0 0 0;
2087.7957 896.30107 170.85008 0 0 0;
2362.3557 1026.0953 -131.33103 0 0 0;
2161.0028 1090.2176 22.054826 0 0 0;
2227.1245 1299.0624 -124.96233 0 0 0;
1958.0895 1161.9066 171.68568 0 0 0;
2087.7962 896.30256 170.84894 0 0 0;
2362.3569 1026.0909 -131.34075 0 0 0;
2161.0029 1090.2189 22.054347 0 0 0;
2227.1223 1299.0567 -124.96166 0 0 0;
1958.0858 1161.9049 171.68655 0 0 0;
2087.7986 896.30332 170.85224 0 0 0;
2362.3574 1026.094 -131.33775 0 0 0;
2161.0037 1090.2248 22.057439 0 0 0;
2227.1271 1299.0604 -124.95894 0 0 0;
1958.0896 1161.902 171.68774 0 0 0;
2087.7967 896.3074 170.85602 0 0 0;
2362.3575 1026.0921 -131.33658 0 0 0;
2161.0086 1090.2505 22.072462 0 0 0;
2227.1324 1299.0626 -124.95405 0 0 0;
1958.087 1161.8947 171.68433 0 0 0;
2087.7972 896.30836 170.85737 0 0 0;
2362.3605 1026.0935 -131.33612 0 0 0;
2161.0121 1090.2599 22.0819 0 0 0;
2227.1424 1299.0687 -124.94304 0 0 0;
1958.0947 1161.9415 171.70198 0 0 0;
2087.8176 896.26544 170.84715 0 0 0;
2362.3669 1026.0778 -131.34163 0 0 0;
2161.0095 1090.2586 22.077012 0 0 0;
2227.148 1299.0718 -124.93995 0 0 0;
1958.0974 1161.9659 171.71319 0 0 0;
2087.8227 896.243 170.83566 0 0 0;
2362.3656 1026.0794 -131.33656 0 0 0;
2161.0053 1090.2222 22.060474 0 0 0;
2227.1404 1299.0653 -124.94379 0 0 0;
1958.09 1161.9415 171.69821 0 0 0;
2087.8048 896.28336 170.84699 0 0 0;
2362.3655 1026.0884 -131.33415 0 0 0;
2161.0052 1090.2181 22.058498 0 0 0;
2227.141 1299.0652 -124.94244 0 0 0;
1958.0846 1161.9042 171.68599 0 0 0;
2087.7997 896.29979 170.85183 0 0 0;
2362.3688 1026.087 -131.33232 0 0 0;
2161.0078 1090.2438 22.073072 0 0 0;
2227.1406 1299.0661 -124.94075 0 0 0;
1958.0869 1161.9088 171.68885 0 0 0;
2087.7986 896.30631 170.86088 0 0 0;
2362.3698 1026.0803 -131.33583 0 0 0;
2161.0135 1090.2543 22.081642 0 0 0;
2227.1481 1299.0694 -124.93844 0 0 0;
1958.1003 1161.9703 171.7137 0 0 0;
2087.8147 896.27067 170.85004 0 0 0;
2362.3702 1026.0732 -131.33896 0 0 0;
2161.0145 1090.2489 22.079415 0 0 0;
2227.1411 1299.0657 -124.93989 0 0 0;
1958.0911 1161.9327 171.69864 0 0 0;
2087.8039 896.3008 170.85674 0 0 0;
2362.3693 1026.0841 -131.3328 0 0 0;
2161.0093 1090.2225 22.064856 0 0 0;
2227.1393 1299.0619 -124.94452 0 0 0;
1958.0888 1161.8893 171.6866 0 0 0;
2087.8052 896.3025 170.86156 0 0 0;
2362.3721 1026.0838 -131.33244 0 0 0;
2161.0165 1090.2413 22.082128 0 0 0;
2227.1346 1299.0572 -124.9494 0 0 0;
1958.0907 1161.8902 171.68926 0 0 0;
2087.8045 896.30308 170.85715 0 0 0;
2362.3694 1026.0844 -131.33563 0 0 0;
2161.0153 1090.2449 22.080295 0 0 0;
2227.135 1299.058 -124.94482 0 0 0;
1958.0889 1161.8905 171.68681 0 0 0;
2087.8068 896.30223 170.86288 0 0 0;
2362.373 1026.0809 -131.3344 0 0 0;
2161.014 1090.2388 22.081018 0 0 0;
2227.1381 1299.0576 -124.94568 0 0 0;
1958.0941 1161.8954 171.6958 0 0 0;
2087.8106 896.29813 170.86339 0 0 0;
2362.3744 1026.0758 -131.33531 0 0 0;
2161.0166 1090.2423 22.079447 0 0 0;
2227.1338 1299.0522 -124.94801 0 0 0;
1958.0918 1161.8941 171.68975 0 0 0;
2087.8121 896.2927 170.85906 0 0 0;
2362.3766 1026.0839 -131.33044 0 0 0;
2161.0195 1090.2426 22.081034 0 0 0;
2227.1346 1299.052 -124.94854 0 0 0;
1958.0941 1161.8959 171.69126 0 0 0;
2087.811 896.29205 170.86051 0 0 0;
2362.3757 1026.0845 -131.33301 0 0 0;
2161.024 1090.2508 22.08968 0 0 0;
2227.1534 1299.0688 -124.92994 0 0 0;
1958.1047 1161.9637 171.71792 0 0 0;
2087.8274 896.25739 170.85273 0 0 0;
2362.3796 1026.0758 -131.33511 0 0 0;
2161.0208 1090.2432 22.085467 0 0 0;
2227.1357 1299.0578 -124.94638 0 0 0;
1958.0981 1161.923 171.70381 0 0 0;
2087.8116 896.29648 170.86604 0 0 0;
2362.3796 1026.0797 -131.33004 0 0 0;
2161.0191 1090.2472 22.086271 0 0 0;
2227.153 1299.0648 -124.93174 0 0 0;
1958.1018 1161.9538 171.71551 0 0 0;
2087.8185 896.27232 170.8565 0 0 0;
2362.3806 1026.0816 -131.33051 0 0 0;
2161.0192 1090.2453 22.085389 0 0 0;
2227.142 1299.0491 -124.94231 0 0 0;
1958.0928 1161.8919 171.68926 0 0 0;
2087.8098 896.29497 170.86687 0 0 0;
2362.3808 1026.0833 -131.33199 0 0 0;
2161.0221 1090.2497 22.094875 0 0 0;
2227.1397 1299.0522 -124.94604 0 0 0;
1958.0909 1161.8938 171.68821 0 0 0;
2087.8105 896.29812 170.86859 0 0 0;
2362.3816 1026.0819 -131.32675 0 0 0;
2161.0214 1090.2481 22.090946 0 0 0;
2227.138 1299.0493 -124.94669 0 0 0;
1958.0962 1161.8912 171.69576 0 0 0;
2087.8151 896.2934 170.87058 0 0 0;
2362.3833 1026.0814 -131.3294 0 0 0;
2161.0205 1090.2542 22.094345 0 0 0;
2227.1403 1299.0491 -124.9435 0 0 0;
1958.0927 1161.8883 171.68916 0 0 0;
2087.8144 896.29467 170.87374 0 0 0;
2362.383 1026.0798 -131.32969 0 0 0;
2161.0222 1090.2577 22.094401 0 0 0;
2227.1387 1299.0474 -124.94533 0 0 0;
1958.0936 1161.8906 171.69421 0 0 0;
2087.8112 896.30127 170.86989 0 0 0;
2362.3816 1026.0765 -131.33263 0 0 0;
2161.0222 1090.2542 22.09253 0 0 0;
];
end
%旋转矩阵转轴角
function Rxyz=RotMat_AxisAngle(R)theta = acos((R(1,1)+R(2,2)+R(3,3)-1)/2);r = 1/2/sin(theta)*[R(3,2)-R(2,3);R(1,3)-R(3,1);R(2,1)-R(1,2)];Rxyz=theta*r;
end
%轴角转旋转矩阵
function R=AxisAngle_RotMat(Rxyz)theta=(Rxyz(1)^2+Rxyz(2)^2+Rxyz(3)^2)^0.5;if(abs(theta)<1e-8)R=eye(3);return;endr=Rxyz/theta;R=[r(1)^2*(1-cos(theta))+cos(theta) r(1)*r(2)*(1-cos(theta))-r(3)*sin(theta) r(1)*r(3)*(1-cos(theta))+r(2)*sin(theta)r(1)*r(2)*(1-cos(theta))+r(3)*sin(theta) r(2)^2*(1-cos(theta))+cos(theta) r(2)*r(3)*(1-cos(theta))-r(1)*sin(theta)r(1)*r(3)*(1-cos(theta))-r(2)*sin(theta) r(2)*r(3)*(1-cos(theta))+r(1)*sin(theta) r(3)^2*(1-cos(theta))+cos(theta)];
end
%绕Z轴的旋转矩阵转换
function R = rotz(t, deg)if nargin > 1 && strcmp(deg, 'deg')t = t *pi/180;endct = cos(t);st = sin(t);R = [ct -st 0st ct 00 0 1];
%绕Y轴的旋转矩阵转换
function R = roty(t, deg)if nargin > 1 && strcmp(deg, 'deg')t = t *pi/180;endct = cos(t);st = sin(t);R = [ct 0 st0 1 0-st 0 ct];
%绕X轴的旋转矩阵转换
function R = rotx(t, deg)if nargin > 1 && strcmp(deg, 'deg')t = t *pi/180;endct = cos(t);st = sin(t);R = [1 0 00 ct -st0 st ct];
计算与验证代码
clc;
clear;
addPoint = zeros(5,6);
P07 = [];
% 30*5=150 组激光测量仪测量到的数据
measurementPara = measurementPara();
length = size(measurementPara);
for i=1:lengthif(mod(i,5)==0) addPoint(5,:) = addPoint(5,:) + measurementPara(i,:);else addPoint(mod(i,5),:) = addPoint(mod(i,5),:) + measurementPara(i,:);end
end
addPoint = addPoint/30;
% RD1100W1BY670W92024-07-21-1数据
%基座标定数据
R00 = rotZ(-1.118222)*rotY(0.004544 )*rotX(0.006666);
P00 = [2.711833, 1.361573, -0.718014]'*1000;
%工具端标定数据
R67 = rotZ(1.933119)*rotY(-1.537018)*rotX(-1.01495);
P67 = [-0.029781, -0.029171, 0.106038]'*1000;
APR = zeros(5,3);
AllT06=verifyPara();
for i=1:5T06 = AllT06(i,:);R06 = AxisAngle_RotMat([T06(1,4),T06(1,5),T06(1,6)]/180*pi);P06 = T06(1,1:3)';P07 =[P07;[(R00*R06*P67)+(R00*P06)+P00]'];R07 = R00*R06*R67;APR(i,2) = atan2(-R07(1,3),sqrt(R07(2,3)^2+R07(3,3)^2)); % beta YAPR(i,1) = atan2(R07(2,3)/cos(APR(i,2)),R07(3,3)/cos(APR(i,2))); % aerfa XAPR(i,3) = atan2(R07(1,2)/cos(APR(i,2)),R07(1,1)/cos(APR(i,2))); % gama Z
end
APR = APR*180/pi - addPoint(:,4:6);
APP = addPoint(:,1:3) - P07;
APP = sqrt(APP(:,1).^2 + APP(:,2).^2 + APP(:,3).^2);
%绝对定位精度
AP=[APP ,APR]
L = [0 0 0 0 0];
Lt = [];
RPR = zeros(5,3);
for i=1:lengthif(mod(i,5)==0) L(5) = L(5) + sqrt((addPoint(5,1) - measurementPara(i,1))^2+(addPoint(5,2) - measurementPara(i,2))^2+(addPoint(5,3) - measurementPara(i,3))^2);Lt(i) = sqrt((addPoint(5,1) - measurementPara(i,1))^2+(addPoint(5,2) - measurementPara(i,2))^2+(addPoint(5,3) - measurementPara(i,3))^2);RPR(5,:)= RPR(5,:) + (addPoint(5,4:6)-measurementPara(i,4:6)).^2;else L(mod(i,5)) = L(mod(i,5)) + sqrt((addPoint(mod(i,5),1) - measurementPara(i,1))^2+(addPoint(mod(i,5),2) - measurementPara(i,2))^2+(addPoint(mod(i,5),3) - measurementPara(i,3))^2);Lt(i) = sqrt((addPoint(mod(i,5),1) - measurementPara(i,1))^2+(addPoint(mod(i,5),2) - measurementPara(i,2))^2+(addPoint(mod(i,5),3) - measurementPara(i,3))^2);RPR(mod(i,5),:)= RPR(mod(i,5),:)+(addPoint(mod(i,5),4:6)-measurementPara(i,4:6)).^2;end
end
L=L/30;
Lm = [0 0 0 0 0];
for i=1:lengthif(mod(i,5)==0) Lm(5) = Lm(5) + (L(5)-Lt(i))^2;else Lm(mod(i,5)) = Lm(mod(i,5)) + (L(mod(i,5))-Lt(i))^2;end
end
Lm = sqrt(Lm/29);
RPR = 6*sqrt(RPR/29);
RPP= [L + 3*Lm]';
%重复定位精度
RP = [RPP RPR]
测试结果

本实验数据来自一个不合格的机器人标定数据。
如上图可知:由于激光测量仪只是测量了位置信息,没有姿态信息,故重复定位精度的姿态重复度为0,绝对定位精度的姿态精度不具备参考性。该机器人的绝对定位进度为1.7088mm效果较差,重复定位精度为0.645效果一般。
下一章 【机器人学】6-5.六自由度机器人运动学参数辨识-逆运动学迭代解【附MATLAB代码】
相关文章:
【机器人学】6-4.六自由度机器人运动学参数辨识-机器人精度验证【附MATLAB代码】
前言 前两个章节以及完成了机器人参数辨识。 【机器人学】6-1.六自由度机器人运动学参数辨识-辨识数学模型的建立 【机器人学】6-2.六自由度机器人运动学参数辨识-优化方法求解辨识参数 这里我们认为激光测量仪测量到的数据为机器人实际到达的位置,而机器人理论到…...
分销商城小程序系统渠道拓展
线上卖货渠道很多,想要不断提高营收和新客获取,除了自己和工具本身努力外,还需要其他人的帮助来提高商城店铺的整体销量。 搭建saas商城系统网站/小程序,后台上货,设置支付、配送、营销、精美模板商城装修等内容&…...
WPF篇(14)-ProgressBar进度条+Calendar日历控件+DatePicker日期控件
ProgressBar进度条 ProgressBar进度条通常在我们执行某个任务需要花费大量时间时使用,这时可以采用进度条显示任务或线程的执行进度,以便给用户良好的使用体验。 ProgressBar类定义 public class ProgressBar : RangeBase {public static readonly De…...
链表高频题目和必备技巧
链表高频题目和必备技巧 1. 链表类题目注意点 1,如果笔试中空间要求不严格,直接使用容器来解决链表问题 2,如果笔试中空间要求严格、或者在面试中面试官强调空间的优化,需要使用额外空间复杂度**O(1)**的方法 3,最…...
Vue3详细介绍,正则采集器所用前端框架
Vue3 引入了一个全新的响应式系统,它是基于ES6的Proxy特性构建的。这个系统使得 Vue 能够更加高效地追踪数据的变化,并在数据发生变化时自动更新DOM。响应式系统的核心是"可观察",当数据变化时,视图会响应这些变化并重新…...
数据集--COCO2017(快速下载)
1、数据集介绍 数据集官网:https://cocodataset.org/#home COCO(Common Objects in Context)数据集是计算机视觉领域中最广泛使用的数据集之一,主要用于目标检测、分割和图像标注任务。COCO 数据集由 Microsoft 发布,…...
【管理咨询宝藏159】顶级咨询公司人力三支柱建设方案思路
阅读完整版报告内容,请搜索VV号“管理咨询宝藏”。 【管理咨询宝藏159】顶级咨询公司人力三支柱建设方案思路 【格式】PDF版本 【关键词】人力咨询、三支柱、人力体系 【核心观点】 - 集团总部制定全集团共享中心总体规划路径,组织并负责实施与推广。各…...
跨时钟域总结
跨时钟域总结 秋招学习跨时钟域 总结一下吧 异步电路 设计中有两个频率不同的时钟(也可能多个),而有数据在两组时钟之间传输 单bit跨时钟域 慢时钟域数据-> 快时钟域 方法 : 使用两个锁存器 (打两拍) 数据跨时钟域同步过程中,脉冲宽度会改变,不影响同步结…...
富婆和富公子都在看的负载均衡和Haproxy大全
一.负载均衡 1.1:什么是负载均衡 负载均衡: Load Balance ,简称 LB ,是一种服务或基于硬件设备等实现的高可用反向代理技术,负载均 衡将特定的业务(web 服务、网络流量等 ) 分担给指定的一个或多个后端特定的服务器或…...
VScode找python环境 (conda)
第一步 CtrlshiftP 第二步 框框里输入:Python:Select Interpreter...
C# Winform序列化和反序列化
在NET Framework 4.7.2中不能用Newtonsoft.Json进行序列化和反序列化,为解决此问题,采用System.Text.Json进行序列化,注意要添加System.Memory的引用。 1、创建测试类 using System; using System.Collections.Generic; using System.Linq; …...
crc原理概述
CRC(循环冗余校验)是一种错误检测技术,用于确保数据在传输或存储过程中没有发生变化。它通过将数据视为一个多项式,利用二进制除法得到一个校验码(CRC值)。接收方使用相同的算法验证数据和CRC值是否匹配&am…...
C++要求或禁止在堆中产生对象
有时你想这样管理某些对象,要让某种类型的对象能够自我销毁,也就是能够“delete this”。很明显这种管理方式需要此类型对象被分配在堆中。而其它一些时候你想获得一种保障:“不在堆中分配对象,从而保证某种类型的类不会发生内存泄…...
为什么阿里开发手册推荐用静态工厂方法代替构造器?
🍅 作者简介:哪吒,CSDN2021博客之星亚军🏆、新星计划导师✌、博客专家💪 🍅 哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师 🍅 技术交流:定期更新…...
前端写法建议【让项目更加易于维护】
背景 标题前提条件: 没有字典接口、或其他原因,需要前端手动维护的情况 示例环境:vue2,其他项目同理 示例 如果项目有某种类别,前端和后端约定好了,某些情况下,需要前端写死时。 比如有字段…...
EasyExcel 自定义转换器、自定义导出字典映射替换、满足条件内容增加样式,完整代码+详细注释说明
虽然最之前是在其他地方看到的,但最终因缘巧合下找到了原文,还是尊重一下原作者。 参考引用了这位佬的博客,确实方便使用。 https://blog.csdn.net/qq_45914616/article/details/137200688?spm1001.2014.3001.5502 这是一个基于Easyexcel通过…...
C语言学习笔记 Day10(指针--中)
Day10 内容梳理: 目录 Chapter 7 指针 7.4 指针 & 数组 (1)指针操作数组元素 (2)指针加减运算 1)加法 2)减法 (3)指针数组 7.5 多级指针 Chapter 7 指针 …...
网页显示打印 pdf
文件服务使用 minio,使用 nginx 反向代理。 将文件存放在 minio 上,如果是公开的文件,则统一放到一个桶,设置为公开只读。 如果是私有文件,则使用临时链接,给有权限的用户查看和打印。 要实现在 html 页…...
1948-2024.5金融许可信息明细数据
1948-2024.5金融许可信息明细数据 1、时间:1948-2024.5 2、指标:来源表、机构编码、机构名称、所属银行、机构类型、业务范围、机构住所、地理坐标、行政区划代码、所属区县、所属城市、所属省份、邮政编码、发证日期、批准日期、发证机关、流水号、是…...
【笔记】从零开始做一个精灵龙女-画贴图阶段(终)
这篇主要是细节,包括花纹和其它一些细化 皮肤 脖子 脖子一定要压暗,不然前后关系体现不出来 脸 1. 忘了有uv缝了,记得打开投影模式画 顺着头发轨迹长的方向画出发际线 背包手镯 1.先画出暗色花纹: 2.再加亮色,亮…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
