您当前的位置: 首页 > 

鱼香ROS

暂无认证

  • 0浏览

    0关注

    498博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

机械臂手眼标定-使用AUBO机械臂自动标定

鱼香ROS 发布时间:2021-02-19 19:14:12 ,浏览量:0

机械臂手眼标定-使用AUBO机械臂自动标定

你好,我是小智,通过上两节的我们已经知道怎么使用已经获取的坐标数据进行计算手眼位姿,以及怎么获取标记物在相机中的位姿了,这一节我们来讲一下怎么使用AUBO的机械臂获取机械臂的位姿,以及如果使用我们的标定程序进行自动化的标定。

开源地址

github: https://github.com/aiotrobot/handeye-calib gitee: https://gitee.com/ohhuo/handeye-calib

#mermaid-svg-PYxgwlEU2gpdPzMg .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .label text{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .node rect,#mermaid-svg-PYxgwlEU2gpdPzMg .node circle,#mermaid-svg-PYxgwlEU2gpdPzMg .node ellipse,#mermaid-svg-PYxgwlEU2gpdPzMg .node polygon,#mermaid-svg-PYxgwlEU2gpdPzMg .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-PYxgwlEU2gpdPzMg .node .label{text-align:center;fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .node.clickable{cursor:pointer}#mermaid-svg-PYxgwlEU2gpdPzMg .arrowheadPath{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-PYxgwlEU2gpdPzMg .flowchart-link{stroke:#333;fill:none}#mermaid-svg-PYxgwlEU2gpdPzMg .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-PYxgwlEU2gpdPzMg .edgeLabel rect{opacity:0.9}#mermaid-svg-PYxgwlEU2gpdPzMg .edgeLabel span{color:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-PYxgwlEU2gpdPzMg .cluster text{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-PYxgwlEU2gpdPzMg .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-PYxgwlEU2gpdPzMg text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-PYxgwlEU2gpdPzMg .actor-line{stroke:grey}#mermaid-svg-PYxgwlEU2gpdPzMg .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-PYxgwlEU2gpdPzMg #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .sequenceNumber{fill:#fff}#mermaid-svg-PYxgwlEU2gpdPzMg #sequencenumber{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg #crosshead path{fill:#333;stroke:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .messageText{fill:#333;stroke:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-PYxgwlEU2gpdPzMg .labelText,#mermaid-svg-PYxgwlEU2gpdPzMg .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-PYxgwlEU2gpdPzMg .loopText,#mermaid-svg-PYxgwlEU2gpdPzMg .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-PYxgwlEU2gpdPzMg .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-PYxgwlEU2gpdPzMg .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-PYxgwlEU2gpdPzMg .noteText,#mermaid-svg-PYxgwlEU2gpdPzMg .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-PYxgwlEU2gpdPzMg .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-PYxgwlEU2gpdPzMg .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-PYxgwlEU2gpdPzMg .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-PYxgwlEU2gpdPzMg .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg .section{stroke:none;opacity:0.2}#mermaid-svg-PYxgwlEU2gpdPzMg .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-PYxgwlEU2gpdPzMg .section2{fill:#fff400}#mermaid-svg-PYxgwlEU2gpdPzMg .section1,#mermaid-svg-PYxgwlEU2gpdPzMg .section3{fill:#fff;opacity:0.2}#mermaid-svg-PYxgwlEU2gpdPzMg .sectionTitle0{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .sectionTitle1{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .sectionTitle2{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .sectionTitle3{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-PYxgwlEU2gpdPzMg .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg .grid path{stroke-width:0}#mermaid-svg-PYxgwlEU2gpdPzMg .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-PYxgwlEU2gpdPzMg .task{stroke-width:2}#mermaid-svg-PYxgwlEU2gpdPzMg .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg .taskText:not([font-size]){font-size:11px}#mermaid-svg-PYxgwlEU2gpdPzMg .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-PYxgwlEU2gpdPzMg .task.clickable{cursor:pointer}#mermaid-svg-PYxgwlEU2gpdPzMg .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-PYxgwlEU2gpdPzMg .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-PYxgwlEU2gpdPzMg .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-PYxgwlEU2gpdPzMg .taskText0,#mermaid-svg-PYxgwlEU2gpdPzMg .taskText1,#mermaid-svg-PYxgwlEU2gpdPzMg .taskText2,#mermaid-svg-PYxgwlEU2gpdPzMg .taskText3{fill:#fff}#mermaid-svg-PYxgwlEU2gpdPzMg .task0,#mermaid-svg-PYxgwlEU2gpdPzMg .task1,#mermaid-svg-PYxgwlEU2gpdPzMg .task2,#mermaid-svg-PYxgwlEU2gpdPzMg .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-PYxgwlEU2gpdPzMg .taskTextOutside0,#mermaid-svg-PYxgwlEU2gpdPzMg .taskTextOutside2{fill:#000}#mermaid-svg-PYxgwlEU2gpdPzMg .taskTextOutside1,#mermaid-svg-PYxgwlEU2gpdPzMg .taskTextOutside3{fill:#000}#mermaid-svg-PYxgwlEU2gpdPzMg .active0,#mermaid-svg-PYxgwlEU2gpdPzMg .active1,#mermaid-svg-PYxgwlEU2gpdPzMg .active2,#mermaid-svg-PYxgwlEU2gpdPzMg .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-PYxgwlEU2gpdPzMg .activeText0,#mermaid-svg-PYxgwlEU2gpdPzMg .activeText1,#mermaid-svg-PYxgwlEU2gpdPzMg .activeText2,#mermaid-svg-PYxgwlEU2gpdPzMg .activeText3{fill:#000 !important}#mermaid-svg-PYxgwlEU2gpdPzMg .done0,#mermaid-svg-PYxgwlEU2gpdPzMg .done1,#mermaid-svg-PYxgwlEU2gpdPzMg .done2,#mermaid-svg-PYxgwlEU2gpdPzMg .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-PYxgwlEU2gpdPzMg .doneText0,#mermaid-svg-PYxgwlEU2gpdPzMg .doneText1,#mermaid-svg-PYxgwlEU2gpdPzMg .doneText2,#mermaid-svg-PYxgwlEU2gpdPzMg .doneText3{fill:#000 !important}#mermaid-svg-PYxgwlEU2gpdPzMg .crit0,#mermaid-svg-PYxgwlEU2gpdPzMg .crit1,#mermaid-svg-PYxgwlEU2gpdPzMg .crit2,#mermaid-svg-PYxgwlEU2gpdPzMg .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-PYxgwlEU2gpdPzMg .activeCrit0,#mermaid-svg-PYxgwlEU2gpdPzMg .activeCrit1,#mermaid-svg-PYxgwlEU2gpdPzMg .activeCrit2,#mermaid-svg-PYxgwlEU2gpdPzMg .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-PYxgwlEU2gpdPzMg .doneCrit0,#mermaid-svg-PYxgwlEU2gpdPzMg .doneCrit1,#mermaid-svg-PYxgwlEU2gpdPzMg .doneCrit2,#mermaid-svg-PYxgwlEU2gpdPzMg .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-PYxgwlEU2gpdPzMg .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-PYxgwlEU2gpdPzMg .milestoneText{font-style:italic}#mermaid-svg-PYxgwlEU2gpdPzMg .doneCritText0,#mermaid-svg-PYxgwlEU2gpdPzMg .doneCritText1,#mermaid-svg-PYxgwlEU2gpdPzMg .doneCritText2,#mermaid-svg-PYxgwlEU2gpdPzMg .doneCritText3{fill:#000 !important}#mermaid-svg-PYxgwlEU2gpdPzMg .activeCritText0,#mermaid-svg-PYxgwlEU2gpdPzMg .activeCritText1,#mermaid-svg-PYxgwlEU2gpdPzMg .activeCritText2,#mermaid-svg-PYxgwlEU2gpdPzMg .activeCritText3{fill:#000 !important}#mermaid-svg-PYxgwlEU2gpdPzMg .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-PYxgwlEU2gpdPzMg g.classGroup text .title{font-weight:bolder}#mermaid-svg-PYxgwlEU2gpdPzMg g.clickable{cursor:pointer}#mermaid-svg-PYxgwlEU2gpdPzMg g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-PYxgwlEU2gpdPzMg g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-PYxgwlEU2gpdPzMg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-PYxgwlEU2gpdPzMg .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-PYxgwlEU2gpdPzMg .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-PYxgwlEU2gpdPzMg .dashed-line{stroke-dasharray:3}#mermaid-svg-PYxgwlEU2gpdPzMg #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PYxgwlEU2gpdPzMg #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PYxgwlEU2gpdPzMg #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-PYxgwlEU2gpdPzMg #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-PYxgwlEU2gpdPzMg #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PYxgwlEU2gpdPzMg #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PYxgwlEU2gpdPzMg #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PYxgwlEU2gpdPzMg #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-PYxgwlEU2gpdPzMg .commit-id,#mermaid-svg-PYxgwlEU2gpdPzMg .commit-msg,#mermaid-svg-PYxgwlEU2gpdPzMg .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-PYxgwlEU2gpdPzMg g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-PYxgwlEU2gpdPzMg g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-PYxgwlEU2gpdPzMg g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-PYxgwlEU2gpdPzMg .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-PYxgwlEU2gpdPzMg .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-PYxgwlEU2gpdPzMg .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-PYxgwlEU2gpdPzMg .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-PYxgwlEU2gpdPzMg .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-PYxgwlEU2gpdPzMg .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-PYxgwlEU2gpdPzMg .edgeLabel text{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-PYxgwlEU2gpdPzMg .node circle.state-start{fill:black;stroke:black}#mermaid-svg-PYxgwlEU2gpdPzMg .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-PYxgwlEU2gpdPzMg #statediagram-barbEnd{fill:#9370db}#mermaid-svg-PYxgwlEU2gpdPzMg .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-PYxgwlEU2gpdPzMg .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-PYxgwlEU2gpdPzMg .statediagram-state .divider{stroke:#9370db}#mermaid-svg-PYxgwlEU2gpdPzMg .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-PYxgwlEU2gpdPzMg .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-PYxgwlEU2gpdPzMg .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-PYxgwlEU2gpdPzMg .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-PYxgwlEU2gpdPzMg .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-PYxgwlEU2gpdPzMg .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-PYxgwlEU2gpdPzMg .note-edge{stroke-dasharray:5}#mermaid-svg-PYxgwlEU2gpdPzMg .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-PYxgwlEU2gpdPzMg .error-icon{fill:#522}#mermaid-svg-PYxgwlEU2gpdPzMg .error-text{fill:#522;stroke:#522}#mermaid-svg-PYxgwlEU2gpdPzMg .edge-thickness-normal{stroke-width:2px}#mermaid-svg-PYxgwlEU2gpdPzMg .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-PYxgwlEU2gpdPzMg .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-PYxgwlEU2gpdPzMg .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-PYxgwlEU2gpdPzMg .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-PYxgwlEU2gpdPzMg .marker{fill:#333}#mermaid-svg-PYxgwlEU2gpdPzMg .marker.cross{stroke:#333} :root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-PYxgwlEU2gpdPzMg { color: rgba(0, 0, 0, 0.75); font: ; }
机械臂位姿
手眼标定程序
相机中标定板位姿
末端与相机位姿关系

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

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

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

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

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

  • 机器人手眼标定原理介绍(含详细推导过程)使用Tsai-Lenz算法
  • 手眼标定算法TSAI_LENZ,眼在手外python代码实现
  • 手眼标定算法Tsai-Lenz代码实现(Python、C++、Matlab)
介绍
  • 使用AUBO机械臂标定需要来自两个话题的信息,一个是机械臂的姿态话题,一个是相机中标定板的位姿话题
安装编译
git clone https://gitee.com/ohhuo/handeye-calib.git
cd handeye-calib
catkin_make or catkin build

安装所需文件

​ 1.安装aubo python sdk

cd src/aubo_comuniate/lib/libpy3auboi5-v1.2.3.x64
./install.sh

​ 2.安装python3 rospkg

pip3 install rospkg
配置aubo机械臂ip地址信息
cd src/aubo_comuniate/launch/

修改aubo_comuniate.launch的aubo_host为aubo机械臂所在的IP地址:


    
    
         
    

运行aubo通信节点
source devel/setup.bash
roslaunch aubo_comuniate aubo_comuniate.launch
运行标定板识别程序

请参考 手眼标定-Aruco使用与相机标定(使用ArUco获取标志物姿,请根据相机选择标定程序)

source devel/setup.bash
roslaunch handeye-calib aruco_start_usb_cam.launch
配置标定所需话题信息

主要配置参数有aubo_pose_topiccamera_pose_topic。分别代表aubo机械臂的通信话题和相机中标记物的位姿话题。

通过这两个话题我们就可以拿到机械臂和标志物在相机中的位姿信息.

cd src/handeye-calib/launch
修改 aubo_hand_on_eye_calib.launch

    
    

    
    

    
    
         
         
    


运行标定程序
 source devel/setup.bash
 roslaunch handeye-calib aubo_hand_on_eye_calib.launch
开始标定

程序运行是会对话题数据进行检测,先检测是否收到机械臂数据,如果没有会一直等待。 当检测到已经接收到数据之后,就会出现,命令提示。 命令定义如下:

r  rocord    记录一组手眼数据(当记录的数据大于程序计算所需的数据量之后会进行自动计算)
c  calculate 计算当前数据
s  save      保存数据
p  print     打印当前数据到屏幕上(格式为 type,x,y,z,rx,ry,rz 角度制)
q  quit      退出标定程序
[INFO] [1612856654.307437]: Get topic from param server: aubo_pose_topic:/aubo_pose camera_pose_topic:/aruco_single/pose
[INFO] [1612856655.311045]: Waiting aubo pose topic data ...
[INFO] [1612856656.313039]: Waiting aubo pose topic data ...
[INFO] [1612856657.314364]: Waiting aubo pose topic data ...
input:  r     record,c    calculate,s     save,q    quit:

拖拽机械臂或者用视校器移动机械臂,但要保证相机事业中依然可以看到标定板。 输入r记录一组手眼数据。

生成参数

完成标定之后输入s即可进行保存,将保存标定结果数据和计算所使用的数据。

标定结果误差分析

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

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

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

比如:

标定板在机械臂基坐标系的位置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

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

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

如果有不明白和有错误的地方可以留言~

作者介绍:

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

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

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

关注
打赏
1666092100
查看更多评论
立即登录/注册

微信扫码登录

0.0397s