[原创]九点标定工具之机械手头部相机标定

打印 上一主题 下一主题

主题 886|帖子 886|积分 2658

1、机械手头部相机与龙门架头部相机的区别?


  • 上篇文字讲解了机械手头部相机标定原理及方法,中间有提到只适用于龙门架,那为什么呢?
  • 答:龙门架在运动过程中,固定在龙门架上的移动相机相对与龙门架本身只有平移关系,而架在机械手上的相机存在角度旋转;机械手在运动过程中机械臂J1与机械臂J2两个的角度一直在变化,而龙门架的X,Y并没有旋转
2、原理分析



  • 如上图所示,J2上面挂载一个相机, 怎么计算旋转关系呢?
  • 换个角度看问题,相机相对于P1点的相对位置从来就没有改变,也就是说图像坐标点相对于P1坐标点从来没有改变。
  • 假如新建一个坐标系W2,W2以P1为坐标系原点,J2臂延长方向为X轴,J2垂直方向为Y轴。那么相机的图像坐标系与W2存在固定的仿射变换关系(和固定相机一样了)
  • 而W2与机械手坐标系存在旋转与平移的关系,平移关系可以通过P1的点位来确定,旋转关系可以通过J1,J2的角度来确定。
  • 通过这样分解机械手头部相机就变成了坐标系(平移+旋转)+仿射变换了。
3、详细步骤

4、源码

  1.       private void updatePoiMatrix(Position pcbPoi,Position poi1, Position poi2,Position takePhotoPoi)
  2.         {
  3.             //更新对应的数组
  4.             imagePoiList.Add(new Position() { X = (poi1.X + poi2.X) / 2, Y = (poi1.Y + poi2.Y) / 2 });
  5.             //dstPoi- takePhotoPoi,获取takePhoto的J1与J2,
  6.             System.Windows.Point p1=new System.Windows.Point();
  7.             p1.X = pcbPoi.X - takePhotoPoi.X;
  8.             p1.Y = pcbPoi.Y - takePhotoPoi.Y;
  9.             var jAngles=this.currentRobot.GetJAngle();
  10.             double angleJ = -jAngles[0] - jAngles[1];
  11.             System.Windows.Point p2= MatrixHelper.GetRotatePoint(p1, angleJ, new System.Windows.Point() { X = 0, Y = 0 });
  12.             Position newDstPoi = new Position();
  13.             newDstPoi.X = p2.X;
  14.             newDstPoi.Y = p2.Y;
  15.             robotPoiList.Add(newDstPoi);
  16.         }
  17.         
  18.          /// <summary>
  19.         /// 逆时针旋转,获取旋转后的点位
  20.         /// </summary>
  21.         /// <param name="p1">待旋转的点</param>
  22.         /// <param name="angle">旋转角度</param>
  23.         /// <param name="center">旋转中心</param>
  24.         /// <returns></returns>
  25.         public static Point GetRotatePoint(Point p1, double angle, Point center)
  26.         {
  27.             //使用旋转矩阵求值
  28.             RotateTransform rotateTransform = new RotateTransform(angle, center.X, center.Y);
  29.             Point p = new Point(p1.X, p1.Y);
  30.             System.Windows.Point p2 = rotateTransform.Transform(p);
  31.             return p2;
  32.         }
复制代码
5. 后续计划[敬请期待],如需完整代码请微信联系


  • 下相机定位算法
  • 基于头部相机的载具定位算法
  • 基于顶部相机的塑盘取料算法
  • 基于头部相机的检测算法实现
  • 一种面向接口接口、依赖注入的运控框架的总体介绍及分层实现

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表