九点标定+旋转标定

眼在手外方式

1.夹取make点位置要求

机械手夹具夹持一个款标定板或者物料露出make点让视觉定位抓取

高度:与产品识别高度一致

左右位置:在相机视野内可以拍到make点

2.机械手走9个点移动位置要求(九点标定)

保证make在视野内走个九宫格S型走位(make点角度尽量不要变,横平竖直便于排查误差点)

 

3.机械手旋转标定位置要求(旋转标定)

机械手确定基准位

确定机械手到产品上方取料点(机械手记录当前位置,假设机械手末端坐标为

A(x100,y100,r0)。

视觉确定基准位

机械手移开让视觉完成抓取到产品轮廓然后(视觉记录当前产品位置为

(x0,y0,r0)基准位)。

以机械手旋转轴承为轴心,水平旋转6个点make点在视野内角度越大越好。

旋转完成发送机械手角度坐标给视觉。

4.机械手数据处理方式

1.视觉拍照

偏差值C = 视觉基准位B  - 当前拍照位置

2.机械手执行(计算)

机械手执行坐标  = 机械手基准位A + 偏差值C

个人笔记!!!!!!!

在C++中实现机器视觉自动标定旋转中心计算通常涉及以下几个步骤: ### 1. 图像采集 首先,需要使用摄像头或图像采集设备获取图像。可以使用OpenCV库来简化这一过程。 ```cpp #include <opencv2/opencv.hpp> #include <iostream> int main() { cv::VideoCapture cap(0); // 打开默认摄像头 if (!cap.isOpened()) { std::cerr << "无法打开摄像头" << std::endl; return -1; } cv::Mat frame; while (true) { cap >> frame; // 捕获一帧 if (frame.empty()) break; cv::imshow("Frame", frame); if (cv::waitKey(30) >= 0) break; } return 0; } ``` ### 2. 图像预处理 在进行标定之前,通常需要对图像进行预处理,如灰度化、去噪、边缘检测等。 ```cpp cv::Mat gray; cv::cvtColor(frame, gray, cv::COLOR_BGR2GRAY); cv::GaussianBlur(gray, gray, cv::Size(5, 5), 0); cv::Mat edges; cv::Canny(gray, edges, 50, 150); ``` ### 3. 标定 使用标定板(如棋盘格)进行相机标定,计算相机的内参外参。 ```cpp std::vector<std::vector<cv::Point2f>> imagePoints; std::vector<std::vector<cv::Point3f>> objectPoints; // 假设已经检测到棋盘格的角点 cv::Mat cameraMatrix, distCoeffs; std::vector<cv::Mat> rvecs, tvecs; cv::calibrateCamera(objectPoints, imagePoints, cv::Size(gray.cols, gray.rows), cameraMatrix, distCoeffs, rvecs, tvecs); ``` ### 4. 旋转中心计算 通过计算相机的旋转矩阵位移向量,可以进一步计算出旋转中心。 ```cpp cv::Mat rotationMatrix; cv::Rodrigues(rvecs[0], rotationMatrix); cv::Mat rotationCenter = -rotationMatrix.t() * tvecs[0]; ``` ### 5. 结果展示 将标定结果旋转中心在图像上展示出来。 ```cpp cv::Mat result = frame.clone(); cv::drawChessboardCorners(result, cv::Size(9, 6), cv::Mat(imagePoints[0]), true); cv::putText(result, "Rotation Center: " + cv::format("%.2f, %.2f, %.2f", rotationCenter.at<double>(0), rotationCenter.at<double>(1), rotationCenter.at<double>(2)), cv::Point(10, 30), cv::FONT_HERSHEY_SIMPLEX, 0.6, cv::Scalar(0, 0, 255), 2); cv::imshow("Result", result); ``` ### 总结 通过上述步骤,可以在C++中使用OpenCV库实现机器视觉自动标定旋转中心计算。这种方法在机器人视觉、自动化检测等领域有广泛应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值