I am doing some work on Holey Calibration, which will hopefully be an update to how the calibration routine. One issue that has come up, which I do not believe to be isolated to Holey Calibration, is when Firmware cannot perform a Kinematics::forward calculation.
The Kinematics::forward is a function in the Firmware that is numeric and iterative. The Kinematics::_verifyValidTarget function checks if the position is on the worksurface, and if not, replaces it with a point that is on the worksurface. Because of this, the Kinematics::forward function will not converge when it calculates a position that is off the worksurface, and an error is issued.
The calibration parameters are written to the Firmware one parameter at a time. The intermediate-state that is present in the Firmware before all the parameters have been written can result in a position that is not on the worksurface, even if the full calibration is valid. This can cause a failure with valid calibration parameters.
I would like to change the code such that Kinematics::_verifyValidTarget is not called from Kinematics::forward. Which will enable the Kinematics::forward function to converge when the position is not on the worksurface.
I want to ask the question: is there any reason to not do this?
The purpose of Kinematics::_verifyValidTarget within the Kinematics.inverse function is to prevent the system from commanding a position which causes the sled to fall off the worksurface. It is a diagnostics check. However, I cannot think of a reason it needs to be called from the Kinematics::forward function.
Your thoughts are appreciated.