【个人理解,有错请指出,谢谢】
实验设备:激光跟踪仪、6R机器人、示教器、笔记本(上位机)
一、验证示教器旋转角度的正确性
思路:每个轴单独进行计算
1、激光跟踪仪进行调水平校准,并且将激光球放置在机器人末端,完成上位机与激光跟踪仪的连接。
2、以MDH建模的基准坐标系为基准,建立机器人基准坐标系。
3、示教器控制机器人旋转,每次偏移10°(小于90°),通过激光跟踪仪记录末端每次的位置信息(最少6组数据)
4、通过激光跟踪仪测量的6个点进行圆拟合操作,获取拟合圆的半径r
5、通过拟合圆半径r 和变化角度θ求取弦长。另一边通过激光跟踪仪获取两点之间的直线距离。
6、通过步骤5获取的两组数据进行对比,可以有确定示教器旋转角度的正确性。
#注意:
为什么要小于90°:因为0°~90°,求取圆弧弦长是单调递增函数,大于90°就会出现递减的情况
怎么选取角度变化量:在激光跟踪可以检测的范围内进行均分,数据点越多越好,覆盖的范围越大越好。
二、求减速比
思路:示教器读电机的编码器值变化,读硬件的值认为一定是正确的。
我的机器人使用的是禾川电机。公式为:jsb = bmq / 2^17 / joint * 360
jsb:减速比
bmq:编码器数值变化量
joint:角度变化量(度数)
2^17:编码器位数为17位
1、示教器控制机器人旋转10°,记录编码器的初始值和变化后的值,记录至少11组。
2、通过matlab计算减速比的值,计算这10组的减速比的平均值,并且计算这10组的误差
axes = 6;%轴
%减速比
jsb = zeros(6,9);
average_jsb = zeros(3,6); error_jsb = zeros(1,6);
%减速比厂家参考值(第一行),华莱参考值(第二行),测量值(第三行)
average_jsb(1,1) = 81.35; average_jsb(1,2) = 121; average_jsb(1,3) = 81; average_jsb(1,4) = 80; average_jsb(1,5) = 80; average_jsb(1,6) = 50;
average_jsb(2,1) = 81.3186; average_jsb(2,2) = 120.5065; average_jsb(2,3) = 80.8811; average_jsb(2,4) = 81.3314; average_jsb(2,5) = 81.0257; average_jsb(2,6) = 80.9820;
for j = 1:axes
total_jsb = 0;
for i = 1:9
bmq_t = bmq(j,i+1) - bmq(j,i);
joint_t = joint(j,i+1) - joint(j,i);
jsb(j,i) = bmq_t / 131072 / joint_t * 360; % 2^17 = 131072
total_jsb = total_jsb + jsb(j,i);
end
average_jsb(3,j) = total_jsb / 9;
for i = 1:9
error_jsb(1,j) = jsb(j,i) - average_jsb(3,j) + error_jsb(1,j);
if i == 9
error_jsb(1,j) = error_jsb(1,j) / 9;
end
end
end
三、机器人几何参数
思路:通过控制机械臂画圆的方法获得每个机器人轴线,计算轴线之间的距离计算机器人的几何参数(d、a、α)
1、使用激光跟踪仪的连续采集模式,将激光球放置末端。单轴旋转的方式,缓慢旋转机器人,在激光跟踪仪可以采集到的范围内来回采集点。
2、通过采集到的点拟合圆,并获得每个轴的轴线
3、通过计算轴线之间的距离获得机器人准确的几何参数
%杆长测量
%d1 = 445.2
d1 = 419.84619879;
%a2 = 50
a2 = -53.76058;
% a3 = 750;
a3 = 752.68131317;
% d4 = 748
d4 = 747.60866808;
% d7 = 124.5(增加底座和激光球半径)
d7 = 165.29034516;
% α2 = 90(度数)
alpha2 = 90.1086;
% α3 = 0
alpha3 = 0.1123;
% α4 = -90
alpha4 = -90.0316;
% α5 = 90
alpha5 = 90.0166;
% α6 = -90
alpha6 = 89.9841;