Jump to content

Iterative secondary alignment


---
 Share

Recommended Posts

I have a program which measures two mirrored parts in one run. Both parts produced a high standard deviation on repeated measurements. I was able to reduce the sigma of the first part by looping the base alignment, but the second part uses a secondary alignment and continued to show high spread. So I put a loop on the secondary alignment too, but the deviations didn't improve.

I suscpect I might be making a mistake here. So which steps do I have to perform to properly make an iterative secondary alignment in the same way it's done by looping a base alignment?
Link to comment
Share on other sites

You would have to make multiple alignment features for second part which will have parent alignment from previous one.
Since loop will end up with taking same points on same spot, then looped alignment will have almost same results.

Have been there too - ending up with duplicating alignment and features
Link to comment
Share on other sites

Please sign in to view this quote.

That's something I was considering as well. I haven't tried yet, but if that really improves results, then why does it work differently from iterating the base alignment (where I don't need to duplicate anything)?
Link to comment
Share on other sites

differenceSystem().valueA instead of baseSystem()

otherwise you loop it the same way with your features from the second part. However, for whatever reason I found that when you loop a secondary alignment it runs it out of order right after your Base Alignment... which was frustrating as I was trying to loop after a part flip.

that was in 6.6.28, hopefully that's fixed in newer releases.
Link to comment
Share on other sites

Without going into detail, I've encountered much of what Martin describes.
However, are you using the new Calypso colorless 2023 version?
I haven't had to try the loop in a secondary alignment in this colorless version but, because you don't have to put a formula in it anymore (just the delta value) I wonder it is referencing the same "differenceSystem().valueA<0.000? formula that you'd use in the older versions?
Link to comment
Share on other sites

Please sign in to view this quote.

Hmmm, right now I'm using no break formula at all! Just a loop with two iterations. What does it do then?
I rarely use break conditions as they make it hard to estimate run time and usually with our plastic parts there's no real benefit in going beyond two or three iterations anyway.

I'm still using Calypso 2022.
Link to comment
Share on other sites

Nobody from Zeiss told me this, I just made it up. Maybe It's nonsense...
I think it's analogous to the difference between iteration and recursion. I'm not sure how best to put it into text, but I'll give it a shot.
The base alignment features are themselves in the base alignment, so similar to recursion, a base alignment loop sort of calls from within itself and gets better and better each time.
In a base alignment that loops thrice, the steps are something like this:
1) start from some older existing alignment as an initial condition - manual, base, base(CNC), etc.
2) navigate within the initial alignment and collect the needed points following the feature strategies.
3) calculate a new alignment based on the resulting features, call this base alignment 1.
4) throw away the initial alignment and work within base alignment 1.
5) navigate within base alignment 1 and collect the needed points following the feature strategies.
6) calculate a new alignment based on the resulting features, call this base alignment 2.
7) throw away the base alignment 1 and work within base alignment 2.
8) navigate within base alignment 2 and collect the needed points following the feature strategies.
9) calculate a new alignment based on the resulting features, call this base alignment 3.
... proceed with the rest of the measurement plan using base alignment 3.

The secondary alignment features are in the base alignment, so the calculated alignments are not built upon one another and getting better and better. Instead, each new alignment is thrown out before it is used, and the next round through the loop just starts over again from the base alignment. Something like this:
1) calculate the base alignment by the method above, or however you choose
2) navigate within the base alignment and collect the needed points for the secondary alignment features.
3) calculate a new alignment based on the resulting features, call this secondary alignment 1.
4) throw away the secondary alignment 1 and work within the base alignment.
5) navigate within the base alignment and collect the needed points for the secondary alignment features.
6) calculate a new alignment based on the resulting features, call this secondary alignment 2.
7) throw away the secondary alignment 2 and work within the base alignment.
8) navigate within the base alignment and collect the needed points for the secondary alignment features.
9) calculate a new alignment based on the resulting features, call this secondary alignment 3.
... proceed with the rest of the measurement plan using secondary alignment 3.

The iteration on the secondary alignment has no real effect. Martin's suggestion to build multiple secondary alignments, one within another, circumvents this problem.
Link to comment
Share on other sites

You may have hit the nail on the head with your analysis When I went through the steps of my program, similar thoughts crossed my mind. As you said, the features of the secondary alignment are measured in the base alignment (or in my case in another secondary alignment, but the effect is the same), so there's a fundamental difference between both.

BUT: The help file states clearly that an alignment with a loop is treated as an iterative alignment and it doesn't distinguish between base and secondary alignments.So my expectation would be that Calypso automatically takes care of this difference. A simple transformation of the features (like when you change the alignment of a feature) would be sufficient to convert them to a first instance of the secondary alignment and then be able to perform the loops:

1) Calculate first version of secondary alignment from features in base alignment
2) Temporarily transform the features to the secondary alignment
3) Perform the loop(s) as defined and optimize secondary alignment with transformed features.
Link to comment
Share on other sites

Please keep in mind that alignments done by use of stable prismatic features, such as planes, cylinders etc. often require only two iterative steps of alignment until the best solution has been calculated.

Even the use of a start alignment and then a subsequent base alignment qualify as two iterative steps, and mostly another step doesn't improve on the alignment.

That is the reason why many iterative loops end after two iterations. If, on the other hand, the loop runs more than two times, your alignment features might not be stable enough. Personally, I would try to find better alignment features (if possible) to save time, but if you absolutely rely on unstable features, you should increase the number of loops accordingly.
Link to comment
Share on other sites

Unfortunately I have no choice other than to use unstable features. It's not so much the features that are unstable, but the part itself, which has a certain grade of flexibility (plastic). This leads to slightly different touch points of the alignment features and to high spread of the results. That's why I'm using a loop in the first place.

I think I will give Martin's method a try.
Link to comment
Share on other sites

What if the second part needs 2 secondary alignments?
The best way i can explain this is by putting it like this:
Part 1 has machine alignment and then the base alignment which loops but technically comes from the machine alignment.
Part 2 will have a secondary alignment and then another seconday alignment that will loop.

The idea is the first secondary alignment acts like the machine alignment and the second secondary alignment that loops acts like a base alignment. Every feature on the second part will have its alignment based on the second secondary alignment and the "Keep position" box needs to be checked.

Actually making sure the "keep position" box is checked on the features for the second program and making sure they all are calling the same secondary alignment might be all you need to be honest.
Link to comment
Share on other sites

Please sign in to view this quote.

I understand the idea behind your suggestion, but even then I will have to make at least one copy of all the features of the second part, since the first secondary alignment will still be based on features measured in the base alignment. But it would make things easier in case I need more than two iterations.
Link to comment
Share on other sites

Please sign in to view this quote.

Yeah it will be based off the base alignment which comes from the part. And the first part is setup on a fixture. That fixture should have a second location for the second part thats exactly a specific amount on its x and y axis.

I guess what i am imagining is a plate with standoffs on one side to hold your first part and specific distance to its right with the same standoffs configuration to hold your second part. And because the plate is cut to be precise, as long as you input the correct distance, your program should be able to find it.

But you said your sigma was high on the first part. How many loops does it take for it to run? if its more than 3 then you might need to look at your fixturing and how you're holding both parts.
Link to comment
Share on other sites

Please sign in to view this quote.

Also you don't have to make a a copy of all the features of the second program. Just a copy of your secondary base alignment features.
Here is what you can do.

on the second part, you will have a secondary alignment that is used as the second part's own base alignment right? Every feature in that second part needs to have the "Keep position" box checked because if that second base alignment moves a bit, you want all the features to move with it.

Then you make a copy of the secondary alignment and the features used to create it. the copy will stay the same but the originals will use formulas to reference the copy.

Basically the copy will act as a start alignment.
Copied features will travel to the nominal x y z position.
Because the part is not sitting exactly where it should be, the copied features will scan them badly with high forms.
The actual dimensions will be different from the nominal dimensions.
Then the original features will RESCAN those same features
but instead of going to the nominal location, it will go to the actual locations of the features which we got from the copied features.
You do that by using formulas for the x y z nominal dimensions.
Your new nominal dimensions and new actual dimensions of the original features will be very closely to each other with a lower form.
you then make sure that original secondary alignment is being used on all the features that are used for the second part with "keep position" on.

I've done this with inner diameters that would vary a lot in location to the point my probes crashed.
I would make a copy of the feature. The copy would measure it to its nominal location. but because the ID was off, it measured it bad. Then the original feature would reference the x y z location of the copy through formulas so when it scans, it goes to the actual location of it. Then i would only report the measurements of the original which would give me correct measurements.
In your case instead of reporting the measurements, you just use that as the features of your secondary base alignment.
I believe it should work.
Link to comment
Share on other sites

 Share

×
×
  • Create New...