Tom,
I expected implementing a Geo file would be easy however after a day of trial and error i need to ask for help please.
The 8 axis machine has a 50 metre long Y axis that needs error linear compensation interpolated over discrete measurement points as recorded by a laser tracker at 500mm increments.Measurements are metric.
I have attached a file thta i expected to work.
The first 500mm increment shows the error and interpolates between 0mm and 500mm.'
The subsequent 1000mm and 1500mm steps show an incremental increase in the machine position rather than interpolating back down to the nominal value.
i expected to be able to do a single error compensation track but having read the manual two identical traks wou;d give the same error correction at the Y positions regardless of the X axis position ?
The 3mm error at 500mm is possible but is an experimental test to try and work out what is happening.
I obviously am missing something fundamental.
An example would be extremely useful.
Thanks,
Tim
Non Linear Error Correction
Moderators: TomKerekes, dynomotion
Non Linear Error Correction
- Attachments
-
- MeasurementsFlatnessG.txt
- (129 Bytes) Downloaded 43 times
- TomKerekes
- Posts: 2890
- Joined: Mon Dec 04, 2017 1:49 am
Re: Non Linear Error Correction
Hi Tim,
It is possible to do a single axis type of “screw mapping” as described in the wiki here. But your method should work also.
The mapping file is only supported in inches so you would need to convert all the coordinates to inches.
But even so the 503/500 scaling would initially be the same. Your file seems to work for me. Below you can see the GCode commands 500mm and the actual axis position is 503mm (I set 1000 counts/mm resolution)
Is your Y axis actually 50m long ?? What kind of machine is this? That would be a problem. The Solver for searching for the reverse solution is limited to 100 inches. It starts at 0 and walks/converges towards the solution by 1inch maximum steps up to 100 times. Kinematics.cpp would need to be modified to increase this. The Linear Correction (ScrewMapping) would have the same issue. Can you modify and build the libraries with VS2022? Otherwise we will add such a feature in the next Rev.
50m = 1969inches
HTH
It is possible to do a single axis type of “screw mapping” as described in the wiki here. But your method should work also.
The mapping file is only supported in inches so you would need to convert all the coordinates to inches.
But even so the 503/500 scaling would initially be the same. Your file seems to work for me. Below you can see the GCode commands 500mm and the actual axis position is 503mm (I set 1000 counts/mm resolution)
Is your Y axis actually 50m long ?? What kind of machine is this? That would be a problem. The Solver for searching for the reverse solution is limited to 100 inches. It starts at 0 and walks/converges towards the solution by 1inch maximum steps up to 100 times. Kinematics.cpp would need to be modified to increase this. The Linear Correction (ScrewMapping) would have the same issue. Can you modify and build the libraries with VS2022? Otherwise we will add such a feature in the next Rev.
50m = 1969inches
HTH
Regards,
Tom Kerekes
Dynomotion, Inc.
Tom Kerekes
Dynomotion, Inc.
Re: Non Linear Error Correction
Tom,
The machine Y axis carriage does travel 52 metres along a narrow mould bench that is divided into 2.5 metre to 8 metre sections.
The 8 axis screen file i sent last week illustrates the functions of the machine.
Our machine picks steel pins from a storage carousel on the machine and places them in the sections of the mould at designated X and Y positions.
The mould then gets filled with concrete.
The concrete sections or bearers with the pins cast in them are the location points for the rails that are fixed to them for railway tracks.
The X and Y positions for each section vary depending on the curvature of the railway track or points crossing.
I had assumed 500mm increments over 50 metres would have fitted in the 4000*4000 maximum array size without an issue.
i am probably not competent to modify the kinematics file without a lot of help but will do as needed.
When would a next release be expected or could the necessary work be offered as a quotation and when ?
We are casting two individual 2.5 metre bearers tomorrow to test the machine before moving onto the full 50 metres.
The machine does have a probing axis that sets a G92 origin at the start of each section but as these sections are dependent on production requirements we need to error correct the machine coordinate system over the full 50 metre travel.
Regards,
Tim
The machine Y axis carriage does travel 52 metres along a narrow mould bench that is divided into 2.5 metre to 8 metre sections.
The 8 axis screen file i sent last week illustrates the functions of the machine.
Our machine picks steel pins from a storage carousel on the machine and places them in the sections of the mould at designated X and Y positions.
The mould then gets filled with concrete.
The concrete sections or bearers with the pins cast in them are the location points for the rails that are fixed to them for railway tracks.
The X and Y positions for each section vary depending on the curvature of the railway track or points crossing.
I had assumed 500mm increments over 50 metres would have fitted in the 4000*4000 maximum array size without an issue.
i am probably not competent to modify the kinematics file without a lot of help but will do as needed.
When would a next release be expected or could the necessary work be offered as a quotation and when ?
We are casting two individual 2.5 metre bearers tomorrow to test the machine before moving onto the full 50 metres.
The machine does have a probing axis that sets a G92 origin at the start of each section but as these sections are dependent on production requirements we need to error correct the machine coordinate system over the full 50 metre travel.
Regards,
Tim
- TomKerekes
- Posts: 2890
- Joined: Mon Dec 04, 2017 1:49 am
Re: Non Linear Error Correction
Hi Tim,
Attached is an equivalent test Geocorrection file in inches.
Here is a Patch for Version 5.4.1 to allow changing MaxCorrPerIteration by a parameter in Kinematics.txt file.
Copy attached Kinematics.txt file to \Kmotion5.4.1\KMotion\Data folder which sets the increment to 100 inches. 100 increments will allow 10,000 inches of travel.
To apply the patch:
Copy GCodeInterpreter.dll to the \KMotion5.4.1\KMotion\Release folder
Copy KMotionDLL.dlll to the \KMotion5.4.1\KMotion\Release folder
But without these changes commanding to 500mm should have moved to 503mm. I didn't understand what was happening before. Why did you think it wasn't working? It should have worked until you exceeded 2500mm. Although the intention was to scale up to 500mm and then back to normal at 1000mm. Because of the inch issue the scaling would continue to occur until 500inches and then scale back to normal at 1000inches.
Let us know of any issues.
Attached is an equivalent test Geocorrection file in inches.
Here is a Patch for Version 5.4.1 to allow changing MaxCorrPerIteration by a parameter in Kinematics.txt file.
Copy attached Kinematics.txt file to \Kmotion5.4.1\KMotion\Data folder which sets the increment to 100 inches. 100 increments will allow 10,000 inches of travel.
To apply the patch:
Copy GCodeInterpreter.dll to the \KMotion5.4.1\KMotion\Release folder
Copy KMotionDLL.dlll to the \KMotion5.4.1\KMotion\Release folder
But without these changes commanding to 500mm should have moved to 503mm. I didn't understand what was happening before. Why did you think it wasn't working? It should have worked until you exceeded 2500mm. Although the intention was to scale up to 500mm and then back to normal at 1000mm. Because of the inch issue the scaling would continue to occur until 500inches and then scale back to normal at 1000inches.
Let us know of any issues.
- Attachments
-
- Kinematics.txt
- (25 Bytes) Downloaded 58 times
-
- MeasurementsFlatnessGInches.txt
- (195 Bytes) Downloaded 43 times
Regards,
Tom Kerekes
Dynomotion, Inc.
Tom Kerekes
Dynomotion, Inc.
Re: Non Linear Error Correction
Tom,
Thanks for your prompt attention and helping with this issue.
I will try your solution in simulation over the weekend as there is plenty of other commissioning work / C code to add for protection around the machine operation and then on the real machine next week after these initial trials.
As the Y axis is helical rack driven and mounted on the mould bench that is original from 20 years ago the the linear error is due to rack joints etc.
As a G92 datum is set every section the overall error is reset so it is only if a joint is occcurs in a section does the error compensation benefit the machine placing accuracy.
The problem we had yesterday was 500mm was corrected by 3mm as there was 503mm in the file but then at !000mm where we had 1000mm in the file and no correction there was still an error of at least 3mm, the error never interpolated back to zero error.
Adding another 1500mm step made no difference to the error at 1000mm, the error never reduced.
We also tried 995mm instead of 1000mm expecting the error to show a value less than 1000mm but again there was no change.
Tiredness and confusion then set in as the day got later.
Now i understand more i will be able to test more constuctively.
Thanks again.
Tim
Thanks for your prompt attention and helping with this issue.
I will try your solution in simulation over the weekend as there is plenty of other commissioning work / C code to add for protection around the machine operation and then on the real machine next week after these initial trials.
As the Y axis is helical rack driven and mounted on the mould bench that is original from 20 years ago the the linear error is due to rack joints etc.
As a G92 datum is set every section the overall error is reset so it is only if a joint is occcurs in a section does the error compensation benefit the machine placing accuracy.
The problem we had yesterday was 500mm was corrected by 3mm as there was 503mm in the file but then at !000mm where we had 1000mm in the file and no correction there was still an error of at least 3mm, the error never interpolated back to zero error.
Adding another 1500mm step made no difference to the error at 1000mm, the error never reduced.
We also tried 995mm instead of 1000mm expecting the error to show a value less than 1000mm but again there was no change.
Tiredness and confusion then set in as the day got later.
Now i understand more i will be able to test more constuctively.
Thanks again.
Tim
- TomKerekes
- Posts: 2890
- Joined: Mon Dec 04, 2017 1:49 am
Re: Non Linear Error Correction
Hi Tim,
That makes perfect sense as the first grid was 500inches long. It would continue to add 3in of correction over 500inches.The problem we had yesterday was 500mm was corrected by 3mm as there was 503mm in the file but then at !000mm where we had 1000mm in the file and no correction there was still an error of at least 3mm, the error never interpolated back to zero error.
Regards,
Tom Kerekes
Dynomotion, Inc.
Tom Kerekes
Dynomotion, Inc.