Mathjax

Monday, March 20, 2017

Truing Based on Measured Influence Functions

The truing algorithm is a model-based control algorithm.  The "model" is a structural model of the wheel that predicts how much tension and displacement change when a spoke nipple is adjusted.  I have worked for a number of years on an analytical solution to the structural mechanics model of the bicycle wheel.  Another approach is to measure experimentally the structural response instead of calculating it.  In either approach, the model of the wheel boils down to a relationship called the influence function.  An influence function is the response of all the measured variables to a unit input applied to one controlled variable.   In the case of the wheel, the controlled variable is the spoke nipple rotation.  The ensemble of influence functions from all controlled variables is the influence matrix.   Because the wheel is very closely approximated as a linearly elastic structure, the influence functions can be combined by superposition.  The predicted result for set of spoke adjustments is just  a matrix multiplication.  

The influence function is something that can be measured by simply turning each spoke nipple a single turn and measuring how much the axial and radial displacments and the tension changes all around the wheel.  We have measured the influence function since the very beginning of the project to to validate the calculated influence function as a way of testing of the analytical modeling.   Obviously, we could just use the measured influence functions in place of the calculated in the truing function.  The trade off is the accuracy of the measured functions versus the accuracy of the calculated model, the time and difficulty of making the measurements versus gathering the modeling data.   To some people, the measured just seem simpler to understand.  For different users, one or the other might be favored.  So I have created a version of the truing algorithm that uses measured influence functions.

It is not necessary to measure the influence function for every spoke.  A bicycle wheel typically has a group of spokes that are geometrically similar.   The similarity is that they cover all the combinations of leading/trailing, drive/nondrive, inside/outside flange positions of the spokes.   This is the repeatable group.  The influence matrix can be formed by repeating and shifting circularly the influence functions of the repeatable group around the rim.  Matlab has a function circshift that facilitates the full matrix formulation from the repeatable group.  For a typical wheel that has crossed spokes on both sides the repeatable group would consist of four spokes.   For a radially spoked wheel, the repeatable group is 2.   A wheel that is radially spoked on one side and crossed on the other could have a group of 3 if the radial side does not have an inside/outside attribute.

The influence matrix is the modeling input to the control problem to bring the wheel from the as-found condition to a true, round equally tensioned condition by set of spoke adjustments.  The control problem is overdetermined.  That is the number of variables that one would like to control to zero error (displacements radially and axially and the spoke tensions form set of errors that are three times the number of spokes).  Consequently, we have to solve a problem minimizes some combination of errors.  In our case we form a quadratic summation of squares of errors and proposed adjustments of the spokes which we call the cost function.  This function is easily minimized by solving a linear system of equations to yield a gain matrix. The adjustments to true a wheel is the product of the gain matrix times the set of error vector.

If you are interested in the measured influence function version of the code, drop me a comment and we will figure out how get it to you.  If you would like to see some equations or results posted here, you can mention that in the comments and I will put some effort into doing that as well

TW