Iterative Alignment Issues: Part Rotates On Final Iteration

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Iterative Alignment Issues: Part Rotates On Final Iteration

    Morning everyone, hopefully you are all doing well right now!

    I have a part here about which PC-DMIS is giving me a very hard time.

    So, in essence the part is three sides of a cube - two parallel faces and a face connecting them. The parallel sides each have a hole, datums B1 and B2, with planes A1, and A2 around each hole respectively and a point for datum C on the perpendicular side connecting the other two. Hopefully you are able to picture the part.

    The main problem is that PC-DMIS will run through the first and second iterations just fine, then on the third, if it doesn't throw an "Iterative Alignment Error" it will rotate the part by nearly 90° about the X-Axis.

    I set up the co-ordinate system matching the CMMs but centered in a hole on the faces in which datum C lies. What I am trying to do in the alignment is level to A1 and A2, rotate about the midpoint of B1 and B2 to datum C, then origin on the midpoint. Every time that I run this offline it works just fine but it doesn't work the way that I want it to on the machine.

    I have tried changing the axis the iterative alignment uses and it doesn't seem to make a difference.


  • #2
    Here is the code.

    Code:
    STARTUP =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
    ALIGNMENT/END
    MODE/MANUAL
    FORMAT/TEXT,OPTIONS, ,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,DEV,OUTTOL, ,
    LOADPROBE/STAR_90
    MOVESPEED/ 100
    TOUCHSPEED/ 2
    ACCELERATION/MAXACCELX=300, MAXACCELY=300, MAXACCELZ=300
    PREHIT/1
    RETRACT/1
    
    TIP/T2A0B0, SHANKIJK=-1, 0, 0, ANGLE=0
    
    COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
    Place Tip T2A0B0 in the center of Datum B2.
    -------------------------------------------------
    
    READ_B2 =FEAT/POINT,CARTESIAN
      THEO/<24.685,53.345,39.223>,<0,0,1>
      ACTL/<385.035,-820.151,-517.101>,<0,0,1>
    READPOINT/
    
    TIP/T3A0B0, SHANKIJK=1, 0, 0, ANGLE=0
    
    COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
    Place tip T3A0B0 in the center of Datum B1.
    ------------------------------------------------
    
    READ_B1 =FEAT/POINT,CARTESIAN
      THEO/<-24.614,53.461,39.11>,<1,0,0>
      ACTL/<334.318,-819.367,-517.202>,<1,0,0>
    READPOINT/
    
    LIN1 =FEAT/LINE,CARTESIAN,UNBOUNDED,NO
      THEO/<-24.614,53.461,39.11>,<0.9999946,-0.002353,0.0022921>
      ACTL/<334.318,-819.367,-517.202>,<0.9998786,-0.0154567,0.0019827>
      CONSTR/LINE,BF,3D,READ_B1,READ_B2,,
      OUTLIER_REMOVAL/OFF,3
    FILTER/OFF,WAVELENGTH=0
    
    ALN_MAN =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
       ALIGNMENT/ROTATE,XPLUS,TO,LIN1,ABOUT,ZMINUS
       ALIGNMENT/TRANS,XAXIS,LIN1
       ALIGNMENT/TRANS,YAXIS,LIN1
       ALIGNMENT/TRANS,ZAXIS,LIN1
    ALIGNMENT/END
    
    CLEARP/ZPLUS,30,ZPLUS,30,OFF
    MODE/DCC

    Comment


    • #3
      Code:
      iter_start =label/
      
      dat_b1 =feat/contact/circle/default,cartesian,in,least_sqr
      theo/<-24.65,0,-0.056>,<0.9999974,0.0000031,0.002296>,8
      actl/<-24.968,0.342,-0.166>,<0.9999639,0.0001793,-0.0084993>,8.074
      targ/<-24.65,0,-0.056>,<0.9999974,0.0000031,0.002296>
      start ang=0,end ang=360
      angle vec=<0.0022945,0.0341411,-0.9994144>
      direction=ccw
      show feature parameters=no
      show contact parameters=no
      
      a1_1 =feat/contact/vector point/default,cartesian
      theo/<-24.991,0,17.943>,<0.9999974,0.0000031,0.002296>
      actl/<-24.819,0.036,17.956>,<0.9999629,0.0005643,-0.0085994>
      targ/<-24.991,0,17.943>,<0.9999974,0.0000031,0.002296>
      snap=no
      show feature parameters=yes
      surface=theo_thickness,-0.3
      measure mode=nominals
      rmeas=none,none,none
      auto wrist=no
      graphical analysis=no
      feature locator=no,no,""
      show contact parameters=yes
      avoidance move=before,distance=5
      show hits=no
      
      a1_2 =feat/contact/vector point/default,cartesian
      theo/<-24.95,-18,-0.057>,<0.9999974,0.0000031,0.002296>
      actl/<-24.992,-17.846,-0.154>,<0.9999629,0.0005643,-0.0085994>
      targ/<-24.95,-18,-0.057>,<0.9999974,0.0000031,0.002296>
      snap=no
      show feature parameters=yes
      surface=theo_thickness,-0.3
      measure mode=nominals
      rmeas=none,none,none
      auto wrist=no
      graphical analysis=no
      feature locator=no,no,""
      show contact parameters=yes
      avoidance move=no,distance=10
      show hits=no
      
      a1_3 =feat/contact/vector point/default,cartesian
      theo/<-24.909,0,-18.057>,<0.9999974,0.0000031,0.002296>
      actl/<-25.128,0.297,-18.032>,<0.9999629,0.0005643,-0.0085994>
      targ/<-24.909,0,-18.057>,<0.9999974,0.0000031,0.002296>
      snap=no
      show feature parameters=yes
      surface=theo_thickness,-0.3
      measure mode=nominals
      rmeas=none,none,none
      auto wrist=no
      graphical analysis=no
      feature locator=no,no,""
      show contact parameters=yes
      avoidance move=no,distance=10
      show hits=no
      
      a1_4 =feat/contact/vector point/default,cartesian
      theo/<-24.95,18,-0.057>,<0.9999974,0.0000031,0.002296>
      actl/<-25.01,18.17,0.076>,<0.9999629,0.0005643,-0.0085994>
      targ/<-24.95,18,-0.057>,<0.9999974,0.0000031,0.002296>
      snap=no
      show feature parameters=yes
      surface=theo_thickness,-0.3
      measure mode=nominals
      rmeas=none,none,none
      auto wrist=no
      graphical analysis=no
      feature locator=no,no,""
      show contact parameters=yes
      avoidance move=no,distance=10
      show hits=no
      
      tip/t2a0b0, shankijk=-0.424, -0.906, 0, angle=0
      
      dat_b2 =feat/contact/circle/default,cartesian,in,least_sqr
      theo/<24.65,0,0.057>,<-0.9999974,-0.0000031,-0.002296>,8
      actl/<24.78,0.021,-0.344>,<-0.9999188,0.0067825,0.0107852>,8.076
      targ/<24.65,0,0.057>,<-0.9999974,-0.0000031,-0.002296>
      start ang=0,end ang=360
      angle vec=<-0.0022945,-0.0341411,0.9994144>
      direction=ccw
      show feature parameters=no
      show contact parameters=no
      
      a2_1 =feat/contact/vector point/default,cartesian
      theo/<24.909,0,18.058>,<-0.9999974,-0.0000031,-0.002296>
      actl/<24.979,0.069,17.528>,<-0.9999634,-0.00049,0.0085377>
      targ/<24.909,0,18.058>,<-0.9999974,-0.0000031,-0.002296>
      snap=no
      show feature parameters=yes
      surface=theo_thickness,-0.3
      measure mode=nominals
      rmeas=none,none,none
      auto wrist=no
      graphical analysis=no
      feature locator=no,no,""
      show contact parameters=yes
      avoidance move=before,distance=5
      show hits=no
      
      a2_2 =feat/contact/vector point/default,cartesian
      theo/<24.95,-18,0.058>,<-0.9999974,-0.0000031,-0.002296>
      actl/<24.679,-17.807,-0.587>,<-0.9999634,-0.00049,0.0085377>
      targ/<24.95,-18,0.058>,<-0.9999974,-0.0000031,-0.002296>
      snap=no
      show feature parameters=yes
      surface=theo_thickness,-0.3
      measure mode=nominals
      rmeas=none,none,none
      auto wrist=no
      graphical analysis=no
      feature locator=no,no,""
      show contact parameters=yes
      avoidance move=no,distance=10
      show hits=no
      
      a2_3 =feat/contact/vector point/default,cartesian
      theo/<24.991,0,-17.942>,<-0.9999974,-0.0000031,-0.002296>
      actl/<24.579,0.33,-18.463>,<-0.9999634,-0.00049,0.0085377>
      targ/<24.991,0,-17.942>,<-0.9999974,-0.0000031,-0.002296>
      snap=no
      show feature parameters=yes
      surface=theo_thickness,-0.3
      measure mode=nominals
      rmeas=none,none,none
      auto wrist=no
      graphical analysis=no
      feature locator=no,no,""
      show contact parameters=yes
      avoidance move=no,distance=10
      show hits=no
      
      a2_4 =feat/contact/vector point/default,cartesian
      theo/<24.95,18,0.058>,<-0.9999974,-0.0000031,-0.002296>
      actl/<24.94,18.21,-0.355>,<-0.9999634,-0.00049,0.0085377>
      targ/<24.95,18,0.058>,<-0.9999974,-0.0000031,-0.002296>
      snap=no
      show feature parameters=yes
      surface=theo_thickness,-0.3
      measure mode=nominals
      rmeas=none,none,none
      auto wrist=no
      graphical analysis=no
      feature locator=no,no,""
      show contact parameters=yes
      avoidance move=no,distance=10
      show hits=no
      
      pnt_b =feat/point,cartesian,no
      theo/<0,0,0>,<0.9210653,-0.0932596,0.3780759>
      actl/<-0.094,0.181,-0.255>,<0.9222083,-0.0811819,0.3780759>
      constr/point,mid,dat_b1,dat_b2
      
      tip/t1a0b0, shankijk=0, 0, 1, angle=64.911
      
      dat_c =feat/contact/vector point/default,cartesian
      theo/<0.086,-65,-37.15>,<-0.002296,0.0013984,0.9999964>
      actl/<-0.327,-64.558,-37.867>,<0.0086025,-0.0057263,0.9999466>
      targ/<0.086,-65,-37.15>,<-0.002296,0.0013984,0.9999964>
      snap=no
      show feature parameters=yes
      surface=thickness_none,0
      measure mode=nominals
      rmeas=none,none,none
      auto wrist=no
      graphical analysis=no
      feature locator=no,no,""
      show contact parameters=yes
      avoidance move=both,distance=10
      show hits=no
      
      aln_iter =alignment/start,recall:aln_man,list=yes
      alignment/iterate
      pnt target rad=0.05,start label=iter_start,fixture tol=0.05,error label=iter_error
      meas all feat=always,max iterations=2,level axis=xaxis,rotate axis=zaxis,origin axis=yaxis
      level=a1_1,a1_2,a1_3,a1_4,a2_1,a2_2,a2_3,a2_4,
      rotate=dat_c,pnt_b,,
      origin=pnt_b,,
      alignment/end
      iter_error =label/

      Comment


      • #4
        The theoreitcal offset is due to a rev change (that wasn't added to the CAD) of a 0.6mm increase in the distance between the faces of A1 and A2.

        Comment


        • #5
          For iterative alignment all features in each set (Level, Rotate, Origin) must point in roughly the same direction.

          You have points in both XPLUS 1,0,0 and XMINUS -1,0,0 for your Level.

          You then use pnt_b in both the rotate and the origin sections, which makes no sense (as far as I can tell).
          Applications Engineer
          Hexagon UK

          Comment


          • Matthew D. Hoedeman
            Matthew D. Hoedeman commented
            Editing a comment
            I've never had to do it for the LEVEL features, but I've used opposite vectors for rotate and origin a LOT, no issue doing so. Imagine offset keys, I want/need the center of the key. Could do it with extra constructed points, but a point on each side of each key, not an issue.

          • plopperzz
            plopperzz commented
            Editing a comment
            So I did just that: created some generic points from the set of points that made up datum plane A2 and simply flipped the vectors direction and now it is working great. Thank you very much for pointing it out!

          • NinjaBadger
            NinjaBadger commented
            Editing a comment
            I don't know why it doesn't work, I just remember it being a 'rule' of doing iterative alignments.

            Have a read of this thread I made which explains how to do an 'iterative alignment' without the iterative command.

            It could also be used in a situation like this.

            https://www.pcdmisforum.com/forum/pc...gnment-command

        Related Topics

        Collapse

        Working...
        X