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

项目开源地址:https://gitee.com/ohhuo/handeye-calib

原理介绍

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

使用指南

1、基础使用

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

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

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

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

2、安装测试

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

<launch><!-- <arg   name="base_handeye_data"   default="The file path of handeye data." /> --><arg   name="base_handeye_data"   default="$(find handeye-calib)/config/base_hand_on_eye_test_data.csv" /><node pkg="handeye-calib" type="base_hand_on_eye_calib.py" name="base_hand_on_eye_calib" output="screen" ><param name="base_handeye_data" value="$(arg base_handeye_data)" /></node>
</launch>

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.013217Tsai-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

3.标定结果误差测试

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

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

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

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

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

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

微信公众号后台回复棋盘格、棋盘格文件即可获取标定用的棋盘格。

如果有不明白和有错误的地方可以留言。最后欢迎大家关注、点赞、分享~

机器人手眼标定都能搞不定?快戳,最好用的手眼标定库!!!相关推荐

  1. 大神,快来救救我,我搞不定啊

    着分享的精神混在IT圈,至今没名没利,之前有童鞋为我什么很多人都不愿意回答我们提的问题,其实不是我们不想回答,而是我们不是神,我们回答的越勤快,你的惰性也就越大,真心为你,却无人理解. 节奏一:大神, ...

  2. 机器人带陀螺仪走钢丝_走直线很难吗?陀螺仪表示,少了它机器人连直线都走不了...

    原标题:走直线很难吗?陀螺仪表示,少了它机器人连直线都走不了 机器人要想完成特定任务,就一定要有所动作,这个时候,必须掌握如何控制机器人走直线.曲线,从而使机器人移动到我们想做任务的地方. 机器人走直 ...

  3. 阿里阿里,搞不定政企

    如果我们问一位关注科技产业,或者关注云计算.AI技术的朋友,4月11日的阿里云北京峰会上讲了什么.他应该马上会说,发布了通义千问啊. 这话确实没错.但仔细观察这场会,却会发现一个问题:嘉宾好像不太对. ...

  4. 屡败屡战的谷歌机器人计划,都交了哪些学费?

    谷歌又要开始做机器人了... 说出这个消息的时候,我忍不住戏精附体,替谷歌小小地尴尬了一下. 实在是因为,谷歌的机器人项目曾经有一手好牌:"Android之父"安迪·鲁宾(Andy ...

  5. 【程序员】区区英语算什么,还搞不定了?

    内容简介 [程序员]区区英语算什么,还搞不定了? 必须学好英语,做社会主义好程序员 经常听到学编程的朋友抱怨英语难学:烦,头痛,不开心,愁死宝宝了,不学又不行不舒服斯基~~ 话说大多数程序员是男同胞吧 ...

  6. 焦头烂额一个上午还是搞不定,跪地相求大家,朋友帮忙啊。。。

    焦头烂额一个上午还是搞不定,跪地相求大家,朋友帮忙啊... Delphi / Windows SDK/API http://www.delphi2007.net/DelphiDB/html/delph ...

  7. 怎样让AI完成人类搞不定的任务?OpenAI提出迭代扩增法给AI设目标

    李林 编译整理 量子位 出品 | 公众号 QbitAI 人类:AI啊,给北京设计一套不堵车的交通系统吧! AI:想不堵车,只好-- 想让AI去完成这种庞大复杂的任务,怎样训练.怎样指导,是个非常严峻的 ...

  8. java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!

    点击蓝色"程序员书单"关注我哟 加个"星标",每天带你读好书! ​ 在介绍本书单之前,我想先问一下各位读者,你们之前对于Java并发编程的了解有多少呢.经过了1 ...

  9. 研一一整年都在搞深度学习,研二醒悟打算转开发

    作者:阿秀 阿秀的学习笔记:https://interviewguide.cn 你好,我是阿秀. 最近阿秀组建了自己的学习圈子,其实圈子里以前只有我一个人的,每天适当充电.看看书或者看一些教学视频,也 ...

  10. PDF编辑搞不定?迅读PDF大师,了解一下?

    工欲善其事,必先利其器.初入职场,想要快速提升自己的业务能力,专业知识必牢牢掌握,但常规的"职场基本功"也不可懈怠,比如Word.Excel.PPT.PDF等.不同岗位用到这些办公 ...

最新文章

  1. 架构师必备技能:教你画出一张合格的技术架构图
  2. [置顶] ros的navigation之———gmapping应用详解(in ros)
  3. 用C#二次封装虹软arcface
  4. oracle proedure 文件_关于oracle存储过程读取文件
  5. 混合粒子群算法原理通俗讲解
  6. 【收藏】运维必备的问题定位工具及案例分析
  7. 工控领域的网络攻击 食尸鬼行动深入解读Operation Ghoul
  8. python函数注解
  9. 年底,喜庆红色中国风C4D电商促销背景,美工收好!
  10. 笨方法学Python3 习题 0
  11. visio专业版svg图片裁剪
  12. 改变iOS searchBar中textField的背景颜色
  13. mac安装linux时触控板不能用,macbookpro上装Deepin 20.2后wifi和触摸板不可用的解决
  14. matlab julia分形图,Three.js 朱丽亚集(Julia set)分形图案
  15. 前端代理解决跨域问题
  16. LeetCode每日一题——952. 按公因数计算最大组件大小
  17. python3进阶篇(二)——深析函数装饰器
  18. *.manifest
  19. 计算机类自主招生推荐信,自主招生推荐信范文2017
  20. 霍常亮app淘宝客开发视频教程第5节

热门文章

  1. 交通流理论3——交通流三大参数
  2. 【Unity Native Plugins】1.调用动态库so-android篇 附录完整工程
  3. 数据库可视化软件 安装 for windows
  4. Vim命令大全(linux)
  5. Kaggle Tabular Playground Series - Jan 2022 学习笔记1(数据分析)
  6. 地理大数据下载网址推荐
  7. [unity独立游戏]多人游戏插件
  8. Visio2016卸载干净,以及同时安装Office2016和Visio2016的方法
  9. <<流畅的Python>>读书笔记--汇总
  10. Windows server 2012 R2 搭建文件服务器(五):映射网络驱动器(图形和批处理)