机器人手眼标定求解C++

机器人手眼标定从数学上看是求解矩阵方程:

AX=XB

A 为工具手两次运动对应变换矩阵,B 为摄像机两次运动对应的变换矩阵,X是需要求解的摄像机坐标系到工具手坐标系的变换矩阵,即手眼标定。

可以用李群和李代数的知识求解矩阵方程

AX=XB

首先保持标定板不动,从三个不同的位置拍摄标定板采集图像,得到三个摄像机外参矩阵,两个变换矩阵B1和B2。然后又机器人控制器得到机器人的三个位姿矩阵,工具手的两个变换矩阵A1和A2。

C++实现如下

//Hgij为机器人执行器末端坐标系之间相对位置姿态的齐次变换矩阵;[A1,A2]

//Hcij为摄像机坐标系之间相对位置姿态的齐次变换矩阵;[B1,B2]

//Hcg为相机与机器人执行器末端之间的相对位置姿态齐次矩阵。

void Navy_HandEye(Mat Hcg, vector<Mat> Hgij, vector<Mat> Hcij)
{
    CV_Assert(Hgij.size() == Hcij.size());
    int nStatus = Hgij.size();

    Mat Rgij(3, 3, CV_64FC1);
    Mat Rcij(3, 3, CV_64FC1);

    Mat alpha1(3, 1, CV_64FC1);
    Mat beta1(3, 1, CV_64FC1);
    Mat alpha2(3, 1, CV_64FC1);
    Mat beta2(3, 1, CV_64FC1);
    Mat A(3, 3, CV_64FC1);
    Mat B(3, 3, CV_64FC1);

    Mat alpha(3, 1, CV_64FC1);
    Mat beta(3, 1, CV_64FC1);
    Mat M(3, 3, CV_64FC1, Scalar(0));

    Mat MtM(3, 3, CV_64FC1);
    Mat veMtM(3, 3, CV_64FC1);
    Mat vaMtM(3, 1, CV_64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

矛盾和规律

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值