机械臂与相机的手眼标定

两个相机固定在机械臂末端。地面上有以一个标定板,需要标定出相机坐标系与末端法兰坐标系的关系。

使用手眼标定方程AX=XB来实现这个标定。

机械臂使用的是库卡机械臂,转角系统是固定轴ZYX,对应角度为abc。

默认A为末端到基座的关系,基座坐标系为当前坐标系。B为标定板到相机的关系,相机坐标系为当前坐标系。

A和B并不是直接这两组关系来计算,而是两组相对运动的变换位姿。即为位置1有A1和B1,当机械臂末端带着相机运动到另一个位置2时有A2和B2。

AX=XB 中:

  • A 应表示 "机器人末端位姿的相对变换":A = A₂⁻¹ × A₁(A₁是第 1 个位姿,A₂是第 2 个位姿)
  • B 应表示 "相机观测位姿的相对变换":B = B₂ × B₁⁻¹(B₁是第 1 个观测,B₂是第 2 个观测)

所以在程序中,组织数据时,需要这样实现

cpp 复制代码
std::vector<Pose> vTempA;
std::vector<Pose> vTempB;
Eigen::Matrix4d X;

for (int i=0;i< m_posA.size()-1;i++)
{
	vTempA.push_back(m_posA.at(i + 1).inverse()* m_posA.at(i));
	vTempB.push_back(m_posB.at(i + 1) * m_posB.at(i).inverse());
}

所以两次运动之间,需要有大角度和相关位移的变化,只有位移,没有角度变化,会导致计算不出正确的结果。

注意:opencv的手眼标定计算函数,传入数据就是绝对的位姿,函数里面会进行计算相对位姿。

后面就需要实现方程的求解就可以了。

根据实际经验,直接的手眼标定精度只能到1~2mm。如果想提高精度,可以使用空间位置补偿的方法来实现,最高可以到0.2mm。

相关推荐
KIHU快狐1 天前
KIHU 快狐|32 寸落地广告机 健身馆器械使用指引展示
相机
ergevv5 天前
球体投影为椭圆的几何原理与求解方法
相机·测距·球体投影·归一化平面·单视图几何
埃科光电9 天前
应用分享丨破解3C行业反光与弱缺陷检测难题
图像处理·数码相机·计算机视觉·制造·相机
故事不长丨13 天前
安卓相机开发:Camera、Camera2与CameraX的使用对比及选型指南
android·相机·camera·camerax·camera2·移动设备·相机开发
memmolo15 天前
【3D视觉中的相机模型详解】
计算机视觉·3d·相机
给算法爸爸上香23 天前
通用多相机多线程采图框架
多线程·相机·采图框架
社会零时工1 个月前
【ROS2】海康相机ROS2设备服务节点开发
linux·c++·相机·ros2
PiaoShiSun1 个月前
索尼Sony R3拍摄文件命名
相机·索尼·sony·文件命名
summerkissyou19871 个月前
Android-Camera-为啥不移到packages/module
android·相机
码界奇点1 个月前
Python与OpenCV集成海康威视工业相机从基础配置到高级应用的全方位指南
python·数码相机·opencv·相机·python3.11