手眼标定搞定了,手眼矩阵不知道怎么用?快戳!!

手眼标定搞定了,手眼矩阵不知道怎么用?快戳!! 虽万人吾往矣 2023-04-14 11:21:37 704
手眼标定得到手眼矩阵到底该咋用?

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

很多同学做完了手眼标定之后得到了手眼矩阵,但是不知道怎么用于程序当中去,还有很多同学搞不清楚各个坐标系之间的关系,今天小智就给大家讲讲手眼矩阵的使用问题。

一、手眼矩阵为什么会长的不一样?

做完手眼标定,得到的手眼矩阵,有可能会长的不一样,这是因为旋转变换是有很多种表示方法的。

1.旋转的表示方式
1.1三个数字

欧拉角(就是欧拉他家的墙角),欧拉角又分角度制和弧度制。通常使用英文:rx,ry,rz表示

1.2四个数字

四元数,三个数字的欧拉角表示其实是有奇异性的(后面再和大家讲一讲旋转)所以四元数可以避免这个问题。四元数的常用英文符号:qx,qy,qz,qw

一定要注意四元数的顺序,qw在第一位还是最后一位,小智是吃过亏的。

1.3九个数字的
旋转矩阵,使用九个数字表示旋转,是一个3×3的方阵。

2.手眼矩阵=机械臂末端到相机的平移+机械臂的末端到相机的旋转

上面小智讲了如何表示旋转,那么手眼矩阵是到底是什么呢?

大家可以知道的是平移变换一定是3个数字,分表表示沿着原来的x,y,z轴进行的平移长度。

所以常见的手眼矩阵有三种表现形式:

2.1欧拉角版

[x,y,z,rx,ry,rz]

2.2四元数版

[x,y,z,qx,qy,qz,qw]

2.3旋转矩阵版本

[
[r11,r12,r13,x],
[r21,r22,r23,y],
[r31,r32,r33,z]
]

2.4齐次矩阵

为了方便运算,我们在旋转矩阵版本上增加一行[0,0,0,1]构成齐次矩阵,这个也是传说中的齐次矩阵

[
[r11,r12,r13,x],
[r21,r22,r23,y],
[r31,r32,r33,z],
[0, 0, 0, 1]
]

二、手眼矩阵有哪些运算法则,对应的物理意义是什么?

手眼矩阵有了,那么该怎么进行运算呢?

其实我们只需要用到两个运算即可,一个叫做乘法,一个叫做求逆。

1.乘法

乘法运算其实就是转换变换:

比如:末端到相机的位姿矩阵表示为Tgc,相机识别到的工件位姿为Tct,那么末端到工件的位姿该如何计算呢?很简单,对他们做乘法运算

Tgt = Tgc*Tct
大家放心,一个4x4的矩阵乘以4x4的矩阵,最终结果还是一个4x4的矩阵。

2.求逆

求逆运算是最神奇的,求逆其实就是置换坐标系。

已知相机中标记物的坐标系Tcm,那么标记物中相机的坐标系Tmc是多少呢?

其实很简单:

Tmc = Tcm.inverse() //就是求个逆即可
逆矩阵也是4X4的,且 Tmc*Tcm=I,I是单位矩阵秀一波线性代数,回头给大家推荐一本书,讲线性代数的,后台回复线性代数即可获取哈~

三、自己写计算太麻烦,有什么好用的库进行矩阵运算和坐标转换?
1.C++推荐库

C++版本当然推荐小智自己的开源库啦,详细请戳链接:

开源库推荐:C++坐标转换库TransForms3d_Cpp

输入base@grapper、grapper@camera、camera@marker,乘一下就完成了~

这个库有多牛我就不吹了,自己看下代码是多么的流畅

int main()
{
/ base@grapper /
Matrix4d Tbg = TransForms::ComposeEuler(-0.544, -0.203,0.037, 180, 0.00000, 140);
/ grapper@camera/
Matrix4d Tgc = TransForms::ComposeEuler(0.020,-0.040,0.300,0,0,-45);
/ camera@marker /
Matrix4d Tcm = TransForms::ComposeEuler(-0.663,-0.193,-0.231,-180,0,140);

TransFormsGroup Tbw  = Tbg*Tgc*Tcm ;

//输出手眼转换结果
cout<<Tbw.toString()<<endl;

}

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
虽万人吾往矣
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区