Mathjax

Thursday, October 31, 2013

Buckling of a spoked wheel

I thought my model was pretty close to right so I thought that it should predict a critical spoke stress for buckling or the condition when you turn a nipple and the wheel spontaneously assumes a warped taco shape.  

The method I used was the classic stored energy method.  I calculated the stored energy and tried to take the second derivatives with respect to all the displacements and solve for a maximum.  The result was no maximum, no unstable mode, no critical stress.  It was always stable.  I know this is wrong so the model must be wrong.  This got me to thinking and reading the buckling chapter in Bauchau and Craig and reading a classic book, Timoshenko's Theory of Elastic Stability (that I was able to get off Amazon for something like $50!)  I realized that in my transverse bending models I did not consider the term for longitudinal stress that leads to buckling so I am spending a bit of time putting the azimuthal compression term in the differential equation.  This is going to make a huge difference in the solution.  Timoshenko solves the radial buckling mode but not with an elastic restoring force like the spokes.  I don't know if the revised equation with the axial term will be solvable or not.  The original equations work for low levels of azimuthal stress so it may not affect the truing control problem.

This is still fun.

Sunday, October 6, 2013

The control problem is solved

I have implemented a one step control algorithm. AND IT WORKS. This is the simplest version of Model Predictive Control. One step means that given an out of true wheel, the algorithm computes a change in spoke position to bring the wheel back to fully true in one step. The algorithm solves a least squares minimization of a performance index. The performance index for the minimization includes the the tension in each spoke, the axial and radial displacements at each spoke, and the number of turns of the spokes. Including the number of turns in the performance index means that the minimization does not produce an exactly zero error solution of the problem. There is a balance between turning the spokes as little as possible and getting the trueness as close as possible. We say a balance between control effort and control error. Control engineers have found that this approach adds stability to the process in contrast a mathematical approach that tries to solve for an exact match of the setpoints. The control error can be made very small by increasing the weight on the displacement errors with respect to the number of turns. I raised the weight on the errors pretty high to ensure that the one step algorithm would sufficiently close.

I have run several test cases with different out-of-true initial conditions (by entering unequal spoke nipple positions so far). The control solution has solved them all. What I mean is that if I arbitrarily set all the spokes nipple at 10 except for the first one which I set at 15 then compute a set of displacements and tensions in that configuration. I then input that result that to the control algorithm to compute how much to change the spokes to bring it back to true. The algorithm calculates that I need to turn the nipple #1 about -5 turns to get back to true. Perfect. It is a little less because of the inclusion of the control inputs in the performance index.

What this test does is mainly to check my implementation of the control algorithm. It is like when you learned long division in grammar school. After you got an answer, you multiplied your answer by the divisor to see if you got back the number you started with. The division test checks the process of dividing is correct but does nothing to show that the numbers you were working with were right. In the analogy, the wheel model is like the dividend (then number you are dividing into), the computation of the control matrix is like the long division (this analogy is really good here. The computation of the control algorithm is really very much a kind of generalized division.) Checking the number of turns against the amount I dialed in as the error in the spoke initil position is like multiplying the answer and the divisor. The test checks the process by which I computed the control matrix but does not check that the wheel model is right or that the control algorithm is robust to modeling errors. Lets address the robustness first.

Robustness means that the algorithm gets the wheel to true despite a difference between the way the wheel actually responds and the way my model used in the control predicts it. The differences fall into two categories. First is modeling error. Modeling error could be an error in a parameter used in the model, say for example the bending moment of inertia of the rim is off. (I picked this one because I don't have a good way to get this parameter for any given rim. Rim shapes are complicated and the details of the design are hidden inside the rim and I don't have the data nor can I easily measure the data for calculating the bending moments.) It could be an approximation in the math (I linearized the calculation of spoke length for example). It could be something I did not model, like the effect of the spoke hole on the bending stiffness. It could be a clump of glue on the rim that I did not clean off. This class of errors is repeatable and constant in the model. The other type of error is random error. Random error is typically associated with the measurement device. For example, you have to estimate where the dial on the tension meter is pointing between two lines. You can't just read the exact number. The measured value is the sum of the true value plus a random number that has something to do with your ability to see a fractional distance.

Random error could also be some random external influence on the process that we are not measuring or accounting for. Stiction in the spoke nipples is an example of this. By stiction, I mean that when you turn a spoke a small amount the nipple doesn't turn on the threads at first. It just twists the spoke. You go farther and the suddenly the torsional spring force of the spoke is greater than the static friction of the thread and the spoke unwinds into the nipple. There are wheel building techniques to combat this, like turning the nipple past the desired position then backing off just the amount that the spoke is twisted. (Bladed spokes are great for showing the amount of twist in the spoke. Round spokes are harder.) Despite efforts to minimize this effect, the amount of deviation between the number of turns you intended and the actual position of the thread in the spoke is a random variable. The truing algorithm needs to be robust to these errors. Robust means that the wheel converges on true closely enough despite the errors. Failure of the algorithm would be if the errors increase rather than decrease, the errors diminish to a constant value that is not low enough or that the iterations of the wheel algorithm just bounce around randomly but never small enough to be satisfactory. We want the process to be robust. Experience in controls suggest that a process that an iterative process that takes a couple of partial steps to bring the wheel into true is likely to be more robust than the one step routine that I initially tried.

My next step of development will be to test the current control algorithm with modeling errors and random errors. First, I will separate the modeling of the controls from the simulated wheel model so I can incorporate the difference between them. I will create test cases with parametric errors. (A parametric error is a modeling error due to an error in a parameter. I won't be attempting to check for unmodeled effects or approximations errors.) For example, I will double the bending moment of inertia in the control model and try the same out-of-true problems I tried when the model and predictor were the same. I will be comparing the sum of residuals from the cases above where the control and simulated wheel are the same with the cases with the parametric errors.

Next I will try cases that add a random variable to the measurements and to the spoke turns. The idea is to see if the uncertainty in reading the gauges in the truing stand are too large to get the wheel to a true state.

The development after that will be to implement a multi-step control algorithm. I suspect that I will find that I want the control to be more stable so I plan to upgrade to a multi-step model predictive control algorithm. Model predictive control is very easy to implement on this problem. I shall try to put it in.

Testing the model. All the control logic is useless if the model is not sufficiently accurate. To test for modeling errors are two-fold, comparison to other calculations and comparison to experimental data. Jobst Brandt published the total results for cases in which his finite element wheel model is subjected to external loads (vertical, axial and azimuthal loads) for. He also gave the wheel modeling parameters that he used. If his model and my model compare well, it is a pretty strong case that both are right. If they differ then one (or both) of us is wrong. Can't tell for sure. I have a wheel truing stand with dial indicators and tension meter to measure the wheel's variables to gather data for experimental comparisons. So I am working on it. It's fun.