标定板标定和九点标定的区别_TCP坐标标定

TCP(Tool Center Point)工具座标系标定
在机器人工具上建立一个工具坐标系,其原点即为工具中心点(Tool Center Point,TCP)。
单臂:法兰到工具坐标系的标定
举例说明: https:// support.pickit3d.com/ar ticle/43-defining-the-tool-center-point-tcp-on-a-universal-robot

5135d7610696269cb96d58d113d4a366.png

”四点法“实施方法:

  1. 在机器人的工作空间内放置一个固定点
  2. 通过控制机器人的姿态,使TCP与空间内的固定点重合
  3. 重复上述步骤3次,改变机器人的姿态 使 TCP 移动到同一点
  4. 以四次TCP点在世界坐标系中坐标相等为条件来建 立方程组并求解,从而实现工具坐标系位置的标定。

let

is base to tool,
is base to end-effector,
is end-effector to tool.

then

=

i.e./that is (to say):

so,

其中,

,位置矢量
未知,为所求。

为已知,因为通过示教,触碰一个目标点,(Q: 触碰一个目标点,在机器上是直接可以得到前向运动学的解的吗?还是说可以看到各个关节的theta值)/A: 其它paper是说,,从机器人控制器读取当前 的关节转角为
,也可以在下图拿到位置信息:

2a893ba5a91c3f06e2f24f27a9fcf85b.png

通过多种位姿触碰同一个目标点:

i.e.

i.e.

Similarly,

因为

为3*3 matrix

so,

(9*3cdot 3*1=9*1)

so,inverse can get the answer.

i.e.


如果有帮助的话,请点赞或者关注支持一下~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
九点标定是一种常用的相机标定方法,它通过将相机在不同位置下对同一平面进行拍摄,采集到的图像信息来计算出相机的内参矩阵和外参矩阵,从而建立相机的几何模型。在进行九点标定时,需要先在拍摄平面上放置一个已知大小的标定板,通过提取标定板上的角点坐标,并将其与世界坐标系中对应的角点坐标进行匹配,从而得到相机的内参矩阵和外参矩阵。 下面是使用C++实现九点标定的代码: ```c++ #include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { // 设置标定板参数 Size boardSize(9, 6); // 内角点个数 float squareSize = 24.23f; // 标定板上每个格子的大小,单位为mm // 准备标定板上的角点坐标 vector<Point3f> objectPoints; for (int i = 0; i < boardSize.height; i++) { for (int j = 0; j < boardSize.width; j++) { objectPoints.push_back(Point3f(j * squareSize, i * squareSize, 0)); } } // 读取标定图像 vector<vector<Point2f>> imagePoints; vector<String> filenames; glob("images/*.jpg", filenames); // 读取images文件夹下所有jpg格式的图像 for (size_t i = 0; i < filenames.size(); i++) { Mat image = imread(filenames[i]); vector<Point2f> corners; bool found = findChessboardCorners(image, boardSize, corners); if (found) { Mat gray; cvtColor(image, gray, COLOR_BGR2GRAY); cornerSubPix(gray, corners, Size(11, 11), Size(-1, -1), TermCriteria(TermCriteria::EPS + TermCriteria::COUNT, 30, 0.1)); imagePoints.push_back(corners); drawChessboardCorners(image, boardSize, corners, found); imshow("image", image); waitKey(500); } } // 进行标定 Mat cameraMatrix, distCoeffs; vector<Mat> rvecs, tvecs; calibrateCamera(objectPoints, imagePoints, Size(640, 480), cameraMatrix, distCoeffs, rvecs, tvecs); // 输出标定结果 cout << "camera matrix:\n" << cameraMatrix << endl; cout << "distortion coefficients:\n" << distCoeffs << endl; return 0; } ``` 在上述代码中,我们先设置了标定板的参数,包括内角点个数和每个格子的大小。然后准备了标定板上的角点坐标,用于与提取出的图像角点进行匹配。接着使用`glob`函数读取指定文件夹下的所有图像,并在每张图像中提取出标定板的角点坐标。对于每个角点坐标,使用`cornerSubPix`函数进行亚像素级别的精细化处理。最后,使用`calibrateCamera`函数进行相机标定,并输出标定结果。 需要注意的是,在进行九点标定时,需要保证标定板的姿态不变,因此在拍摄过程中需要尽可能保持相机与标定板的相对位置和姿态不变。同时,为了提高标定的准确性,最好使用多张图像进行标定,且图像中的标定板应该尽可能覆盖整个图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值