基于ROS的机械臂手眼标定-基础使用

机械臂手眼标定-基础使用

你好,我是小智,前一段时间折腾了一段时间的机械臂的手眼标定,相关资料挺多的,但使用起来都比较复杂,新手一般比较难搞懂。于是想做一个比较简单易懂易用的手眼标定程序。

程序都是Copy的开源代码,所以也开源出来:

开源地址
github: https://github.com/aiotrobot/handeye-calib
gitee: https://gitee.com/ohhuo/handeye-calib

本教程一共包含五个部分:

  • 手眼标定-基础使用
  • 手眼标定-JAKA机械臂
  • 手眼标定-AUBO机械臂
  • 手眼标定-Aruco使用与相机标定
  • 手眼标定-注意事项

如果上述程序使用过程中遇到问题,可以参考:

  • 手眼标定-常见问题排查

如果你对手眼标定原理感兴趣,可以参考以下文章:

  • 机器人手眼标定原理介绍(含详细推导过程)使用Tsai-Lenz算法
  • 手眼标定算法TSAI_LENZ,眼在手外python代码实现
  • 手眼标定算法Tsai-Lenz代码实现(Python、C++、Matlab)

原理介绍

本程序包目前仅针对眼在手上的标定,通过输入两组以上的机械臂姿态信息(x,y,z,rx,ry,rz)和装在机械手上的相机所识别的标志物的姿态信息,经过程序计算可输出,机械臂末端和相机之间的坐标变换矩阵。

机械臂位姿
手眼标定程序
相机中标定板位姿
末端与相机位姿关系

使用指南

1、基础使用

基础使用是在得到多组机械臂位姿与机械臂末端相机位姿之后直接使用本程序进行计算机械臂末端与相机之间的位姿关系。

  • 机械臂位姿可以通过示教器或者SDK进行获取

  • 相机中标定板位姿我们可以通过ArUco或者ArTookit等工具获得,可以参考这里。

我们使用一般读到的(X,Y,Z,RX,RY,RZ)六个数据表示

安装测试

  1. 下载编译

    git clone https://gitee.com/ohhuo/handeye-calib.git
    cd handeye-calib
    catkin_make or catkin build
    
  2. 修改base_hand_on_eye_calib.launch文件中,base_handeye_data参数为从机械臂位姿和标定板位姿所在的配置文件所在的绝对目录,可以使用launch文件的find

    
      
      
      
          
      
    
    
  3. 运行程序

    source devel/setup.bash
    roslaunch handeye-calib base_hand_on_eye_calib.launch
    
  4. 查看结果
    程序会根据配置文件中的坐标进行计算,最终输出如下数据(单位毫米,弧度制):

    数据包含不同算法下计算结果,以及计算结果的标准差和方差等数据。

    algoritihms            x            y           z         rx          ry       rz    distance
    -------------  ---------  -----------  ----------  ---------  ----------  -------  ----------
    Daniilidis     0.0254407  -0.00388589  0.00626286  -1.34278   -0.0699976  91.0318   0.0264868
    Horaud         0.035229   -0.0151477   0.0185151    1.65751    0.943546   89.7013   0.0425833
    Park           0.0352315  -0.0151497   0.0185238    1.65744    0.944041   89.6995   0.04259
    Tsai-Lenz      0.0514184  -0.0291956   0.0236991    0.958984   1.89297    89.4352   0.0637015
    name              x             y            z       rx        ry         rz     distance
    ------  -----------  ------------  -----------  -------  --------  ---------  -----------
    mean    0.0368299    -0.0158447    0.0167502    0.73279  0.927639  89.9669    0.0438404
    var     8.69144e-05   8.05572e-05  4.11328e-05  1.51731  0.481914   0.389663  0.000174689
    std     0.00932279    0.00897536   0.00641349   1.23179  0.6942     0.62423   0.013217
    
    
    Daniilidis              x             y             z           rx           ry           rz     distance
    ------------  -----------  ------------  ------------  -----------  -----------  -----------  -----------
    point0        1.12994      -0.261557     -0.303544     1.56839      0.0486538    3.02918      1.19888
    point1        1.12386      -0.256959     -0.307001     1.55079      0.0350867    3.02347      1.19303
    point2        1.12649      -0.256307     -0.306266     1.55284      0.0356765    3.02361      1.19519
    point3        1.12565      -0.253896     -0.307797     1.555        0.0263091    3.02058      1.19427
    point4        1.13011      -0.250703     -0.3061       1.55657      0.046811     3.01531      1.19737
    mean          1.12721      -0.255884     -0.306142     1.55672      0.0385074    3.02243      1.19575
    var           6.00994e-06   1.28613e-05   2.04871e-06  3.78781e-05  6.80825e-05  2.04147e-05  4.45839e-06
    std           0.00245152    0.00358626    0.00143133   0.00615452   0.00825121   0.00451826   0.00211149
    
    Horaud              x             y             z           rx            ry           rz     distance
    --------  -----------  ------------  ------------  -----------  ------------  -----------  -----------
    point0    1.08483      -0.262978     -0.318057     1.55897      -0.00705108   3.0495       1.16068
    point1    1.08404      -0.255567     -0.323067     1.53871      -0.0174223    3.05         1.15967
    point2    1.09116      -0.257748     -0.322579     1.5435       -0.0165301    3.05181      1.16667
    point3    1.09252      -0.254445     -0.32486      1.54551      -0.0238963    3.05223      1.16785
    point4    1.08396      -0.25189      -0.316132     1.54735      -0.00344446   3.04677      1.15687
    mean      1.0873       -0.256525     -0.320939     1.54681      -0.0136688    3.05006      1.16235
    var       1.39945e-05   1.39716e-05   1.08019e-05  4.53041e-05   5.50417e-05  3.77804e-06  1.77698e-05
    std       0.00374092    0.00373786    0.00328662   0.00673083    0.00741901   0.00194372   0.00421543
    
    Park              x             y             z          rx            ry          rz     distance
    ------  -----------  ------------  ------------  ----------  ------------  ----------  -----------
    point0  1.08483      -0.262981     -0.318067     1.55897     -0.00705403   3.04953     1.16068
    point1  1.08405      -0.255566     -0.323077     1.5387      -0.0174209    3.05003     1.15968
    point2  1.09117      -0.25775      -0.322589     1.5435      -0.0165283    3.05184     1.16668
    point3  1.09253      -0.254446     -0.32487      1.54551     -0.0238923    3.05226     1.16786
    point4  1.08396      -0.251893     -0.316141     1.54735     -0.00344051   3.0468      1.15687
    mean    1.08731      -0.256527     -0.320949     1.54681     -0.0136672    3.05009     1.16236
    var     1.40185e-05   1.39759e-05   1.08042e-05  4.5316e-05   5.50296e-05  3.7782e-06  1.78012e-05
    std     0.00374414    0.00373844    0.00328697   0.00673172   0.0074182    0.00194376  0.00421915
    
    Tsai-Lenz              x             y            z           rx            ry           rz     distance
    -----------  -----------  ------------  -----------  -----------  ------------  -----------  -----------
    point0       1.08118      -0.26596      -0.329331    1.5432        0.00335281   3.05875      1.1611
    point1       1.07916      -0.25742      -0.334988    1.52213      -0.00593988   3.05615      1.15891
    point2       1.08686      -0.260925     -0.335914    1.52765      -0.00494656   3.05948      1.16712
    point3       1.08833      -0.256919     -0.339045    1.52961      -0.0118364    3.05914      1.16851
    point4       1.07685      -0.254707     -0.324463    1.53139       0.00852579   3.05335      1.15315
    mean         1.08247      -0.259186     -0.332748    1.5308       -0.00216884   3.05737      1.16176
    var          1.95647e-05   1.54478e-05   2.7001e-05  4.81123e-05   5.20523e-05  5.42287e-06  3.14201e-05
    std          0.0044232     0.00393036    0.00519625  0.0069363     0.00721473   0.0023287    0.00560536
    
    

标定结果误差测试

观察数据计算结果的标准差大小。
每次计算之后,程序都会输出不同算法下标定结果点的平均数、方差、标准差三项数值。

由于标定过程中标定板是没有发生移动的,所以我们通过机械臂的末端位置、标定结果(手眼矩阵)、标记物在相机中的位姿即可计算出标定板在机器人基坐标系下的位姿,如果标定结果准确该位姿应该是没有变化的。

可以比较最终数据的波动情况来判定标定结果的好坏。

比如:

标定板在机械臂基坐标系的位置1:

Tsai-Lenz               x            y             z            rx            ry           rz     distance
-----------  ------------  -----------  ------------  ------------  ------------  -----------  -----------
point0       -0.45432      0.0488783     0.000316595   0.0420852    -0.0245641    1.52064      0.456941
point1       -0.457722     0.054523      0.0121959    -0.0266793     0.0050922    1.53391      0.461119
point2       -0.457198     0.0535639     0.00246136    0.0252805    -0.0329136    1.51927      0.460331
point3       -0.453302     0.0618366     0.00165179    0.0405718    -0.0472311    1.53318      0.457503
point4       -0.455802     0.0589413     0.000377679   0.0222521    -0.0360589    1.51963      0.459598
point5       -0.455392     0.0615103     0.00584822    0.0365886    -0.033448     1.50684      0.459565
point6       -0.451144     0.0571198     0.00498852    0.0618337    -0.0170326    1.52463      0.454773
point7       -0.452829     0.0588266    -0.000827528   0.0324858    -0.0292652    1.52268      0.456635
point8       -0.454238     0.063634      0.00488078    0.0411648    -0.0373725    1.51611      0.458699
point9       -0.453579     0.0631788     0.00390939    0.0339742    -0.0645821    1.53168      0.457974
point10      -0.454952     0.066057     -0.00144969    0.0399135     0.0029201    1.5053       0.459725
point11      -0.459518     0.0553877    -0.00209946    0.0450864    -0.0147387    1.50702      0.462848
point12      -0.454928     0.0590754    -0.0045181     0.0297534    -0.0296122    1.52043      0.45877
point13      -0.455234     0.0527075    -0.00389213    0.0358822    -0.0260668    1.51244      0.458292
mean         -0.455011     0.0582314     0.0017031     0.0328709    -0.027491     1.51955      0.45877
var           4.21677e-06  2.16484e-05   1.84365e-05   0.000357231   0.000305579  8.29112e-05  3.79771e-06
std           0.00205348   0.00465279    0.00429378    0.0189005     0.0174808    0.00910556   0.00194877

标定板在机械臂基坐标系的位置2:

Tsai-Lenz              x            y            z           rx            ry           rz     distance
-----------  -----------  -----------  -----------  -----------  ------------  -----------  -----------
point0       -0.428394    0.052448     0.0353171    0.0259549    -0.0541487    1.57929      0.433035
point1       -0.427841    0.0448442    0.0345359    0.0454481    -0.0371304    1.55639      0.431569
point2       -0.424889    0.0486165    0.0278942    0.0455775    -0.0438353    1.57073      0.42857
point3       -0.421985    0.0485442    0.0311218    0.0138094    -0.0307286    1.55606      0.425906
point4       -0.428353    0.0454091    0.0326252    0.039192     -0.0492181    1.59177      0.431987
point5       -0.432111    0.0458869    0.0359774    0.04632      -0.0383476    1.55942      0.436028
mean         -0.427262    0.0476248    0.0329119    0.0360503    -0.0422348    1.56894      0.431183
var           9.9672e-06  6.79218e-06  7.71397e-06  0.000148499   6.11379e-05  0.000174299  1.03945e-05
std           0.00315709  0.00260618   0.0027774    0.012186      0.00781908   0.0132022    0.00322405

我们可以观察两次标定结果的距离的标准差,第一次的标准差小于的第二次的标准差,这表示第一次的标定结果好于第二次。

标准差越小,数据越聚集。

如果有不明白和有错误的地方可以留言,下期更新使用Aruco获取相机中标定板的位姿。

作者介绍:

我是小智,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚

初中学习编程,高中开始学习机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)

目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小智,一起交流技术,学习机器人
在这里插入图片描述

你可能感兴趣的:(机械臂相关算法,机器人,手眼标定,ros,opencv,机械臂,handeye)