• 载具定位算法


    1、什么是载具定位算法?哪些场景需要?

    • 什么是载具定位:如瓶盖需放置到瓶子上,瓶子的位置发生了变化,怎么把瓶盖还能放到瓶子上。假如瓶子是载具,重新计算瓶子的位置的算法就是载具定位算法。
    • 哪些场景需要:载具的位置会存在少许变化的场景,如轨道等

    2、载具定位算法原理及难点

    • 载具定位主要是根据当前载具位置与模版载具位置比较,先计算出旋转角度,后计算X,Y偏移
    • 载具定位同样需要使用载具的2个mark点进行定位,难点其实在于头部相机的标定

    3、解决方案

    • 根据模版中2个mark点位置,计算此向量与x轴的夹角J1
    • 运行过程中,同样方式计算夹具X2,X2-X1就是旋转夹具J
    • 放置pcb的龙门架/机械手点位P1,夹具两个mark点的中心点P2绕P1旋转角度J得到P3。P3与模版的两个mark点的中心点P4的X,Y偏差就是夹具的X,Y偏差了

    4、源码

      private Position getCorrectionPoi(List<Position> firstPoiList, List<Position> secondPoiList, Position putPcbPoi, out double offsetAngle)
            {
                //获取旋转角度  
                List<Position> runImageRobotPoiList = new List<Position>() { firstPoiList[0], secondPoiList[0] };
                List<Position> tempImageRobotPoiList = new List<Position>() { firstPoiList[1], secondPoiList[1] };
                offsetAngle = this.getOffsetAngle(runImageRobotPoiList, tempImageRobotPoiList);
                //获取中心点
                Position currentRobotPoi = this.getCenterRobotPoi(runImageRobotPoiList);
                Position templateRobotPoi = this.getCenterRobotPoi(tempImageRobotPoiList);
                //模板点绕机械手点位旋转与目标平行
                Position rotatedPoi = this.getRotatePoi(templateRobotPoi, offsetAngle, putPcbPoi);
                //旋转后的模板点位与拍照点的平移值
                Position newDstPoi = this.getTransPoi(currentRobotPoi, rotatedPoi, putPcbPoi);
                //角度补偿
                newDstPoi.Z = putPcbPoi.Z;
                return newDstPoi;
            }
    

    5. 后续计划[敬请期待],如需完整代码请微信联系

    • 基于顶部相机的塑盘取料算法
    • 基于头部相机的检测算法实现
    • EPson机械手驱动
    • 光源及相机驱动
    • 一种面向接口接口、依赖注入的运控框架的总体介绍及分层实现
  • 相关阅读:
    存储过程sql拼接
    收集 一个数字转大写金额的方法
    判断打印机是否可用
    TortoiseSVN解决冲突
    特殊符号
    [转]Winform用匿名方法新建线程的方法
    [转]利用SqlBulkCopy快速大批量导入数据(SqlBulkCopy强大)
    DevExpress GridControl使用
    GridView自动调整列宽
    'display','position'和'float'相互关系
  • 原文地址:https://www.cnblogs.com/Bonker/p/16548132.html
Copyright © 2020-2023  润新知