I've been busy here. Hope you have been well.
Attached should be my latest basic screw mapping kinematic class. It seems to work properly. It also now will map between the offset/start point and end of map/table length in either screw + or - direction. The kinematics.txt file allows for a few variables to be set as well.
I need to update my measuring program to handle negative measurements and offsets/startpoints. As soon as that is cleaned up, I should be good to go for my final measurement and mapping.
Some final house cleaning of the class questions:
- what is the value behind the define at start of the class.h and should it be any different than what I copied from other classes?
- In my initialization, do I need to be setting m_MotionParams.MaxRapidFRO = 1.0; and
m_MotionParams.UseOnlyLinearSegments = true;
- I don't think I do, but should I do anything regarding soft limits within this kinematic?
After doing some very aggressive tests with mapping, I have a few thoughts on notes you may want to add to your GeoCorrection wiki and manual. It would be good to note the correction table, as with my mapping, is best used for small and gradual corrections from step to step of the table. Large variations in correction from table increment to increment can throw the system into a follow error or violent motion. I found deviation in correction percent of +/-10% at 1" increments to be about as much as my system could handle before it accused me of abuse. For example, at 1" increments, if I said the screw measured 0.9" for this increment, 1.1" for the next, it might be OK, but more would crash. Part of that finding was simple torture testing to see how things would fail, but I also had mistakenly and ignorantly assumed I could cheat and use screw mapping or the correction table to more dramatically distort running gcode to morph to a less linear scenario for special cases (trying to avoid doing it with CAM). The intention was to essentially mash or stretch the gcoded program to fit whatever shape of material I wanted it to machine. Cheating never works out well. For those use cases, it appears I need to either make a program to alter the gcode, or go back to CAM.
It is getting there. Thanks again.