Open moorepants opened 9 years ago
I am critical of inverse dynamics also, but here we need to pretend that we "measure" the joint torques. We have a torque sensor (the force plate) but there is some distance and some mass between the sensor and the joint. We do the cross product to deal with the distance and the m*a term to deal with the mass. In the ankle, that is very reliable, in the hip less so but we use what we have. (I will comment on your "fake data" results elsewhere)
We do not want to enforce periodicity in the inverse dynamic results (the perturbed gait is essentially non-periodic!) but we do so in the controller model.
Because our controller model is linear, we already identify "nominal" trajectories that are the same as the average trajectories. We could have computed these average trajectories first and then only identify the gain, but like you, I do not the result will be different. And it's more elegant to identofy everything at the same time. This is similar to fitting a straight line y=mx+c to (x,y) data. If you subtracted the mean of x and y first, you can fit a simpler model y=mc but the m would be the same.
Yes, this reformulation would make it more clear what's open loop and what is feedback due to deviation from the nominal trajectory. But you do not have to redo the identification to obtain that. You are now identifying M0(t) and K(t) from this model:
M = M0(t) + K(t)*x
You also have the mean state trajectory x0(t). So you can rewrite the control law as:
M = M0(t) + K(t)*x - K(t)*x0(t) + K(t)*x0(t)
= [ M0(t) + K(t)*x0(t) ] + K(t) * (x - x0(t))
The first term would be the nominal torque (which you could also have obtained by averaging all gait cycles) and the second term would be the feedback control.
I think it may be better to present the results like this.
I agree with Andy that each cycle should have the same reference trajectory (and that is what we already do!). It's the very foundation of control identification that we have to assume that the same control law is used in all gait cycles.
(I will comment on your "fake data" results elsewhere)
Great. I'm really hung up on that.
We do not want to enforce periodicity in the inverse dynamic results (the perturbed gait is essentially non-periodic!) but we do so in the controller model.
I think he must have meant to enforce periodicity in the mean gait cycle, if that makes sense. Actually, I'm no longer sure what exactly he meant about enforcing periodicity in the inverse dynamics calcs.
But you do not have to redo the identification to obtain that.
I agree.
I agree with Andy that each cycle should have the same reference trajectory
For some reason I had been convinced early on in this project that we can't assume this. Early on I made graphs that showed the contribution to joint torques from feedback and from nominal torques, but you didn't seem to find those interesting or helpful. I thought you even said that we can't use the average torques and state trajectories like that and that we should assume that they are unknown, i.e. leave the m*(phi)
term as is. This could just be something I heard, misinterpreted, and it stuck.
I think it may be better to present the results like this.
That's easy enough and it is much easier to explain. The m*(phi)
term is just difficult to say anything about.
More from Andy:
2) Only consider data after being processed to being mechanically self consistent. That is, when you talk about joint torques, etc, it can only be in the context of a completely self consistent inverse-dynamics. You have to put all of your residual in marker errors. When doing the fit (inverse dynamics), you might allow yourself to take all model parameters as free in the optimization (masses, lengths, inertias). Then, at least, when you are talking about control you are talking about a sensible thing. And in this world, for example, torques are totally independent of positions and velocities, so you have none of the contamination of input with output.
On Andy's comment: we are not doing actual inverse dynamics in the data processing. The use of that term is perhaps inappropriate for what we do, but it's what they call this in gait analysis. The indirect approach will actually put a plant model in the system identification process. This approach does not. We are just pretending that we are measuring joint torques.
On the previous comment. We estimate m-star and K and then we can rearrange the control law into open loop and feedback terms. If you write the feedback term as K*(x-x0(t)), where x0(t) is the average gait cycle, the feedback term will average zero and the remainder (the open loop term) should automatically become equal to the mean torque over all cycles. When presented that way, the breakdown into various contributions is meaningful. The m-star itself is meaningless so it would be good to avoid presenting it. It does not change the controller at all, it is just a matter of presentation.
For the linear control model, yes, we could have computed average x(t) and M(t) to eliminate the need to estimate M-star and only K would be estimated. But I wanted a more general approach in which all control parameters (for any black box controller) are estimated at once from the data. The result is the same (for this model), I think we agree on that.
Andy Ruina seemed to think that we should consider our inverse dynamics methods more carefully. He said Art Kuo is very critical of most people's inverse dynamics methods. Since we work up from the foot there is inevitably more error in the joint torque predictions that are higher up the chain, e.g. in our case the hip joint torque is more erroneous than the ankle joint torque. He was suggesting that since we rely heavily on the inverse dynamics calculations that using the standard methods may not be the best idea. He discussed the weighting choices you inevitably make and also mentioned that you can enforce periodicity in the inverse dynamics.
I mentioned that we did not make the assumption that the average gait cycle is the nominal cycle that the feedback controller is trying to push the state towards. We have always been assuming that the nominal (or limit cycle) state and torque trajectories were an unknown. Andy essentially convinced me that we should consider the average gait cycle trajectories as the nominal (commanded) trajectories. I don't think this would change the controller we find, but it would allow the torque contributions from the feedback and the nominal torques to be separated and quantified.
I can't really remember what Ton's reasoning was behind not assuming that the average gait cycle was the reference trajectory. I remember being convinced of it and believe(d) that there is no way to know the reference trajectory in any given gait cycle. I tried to argue to Andy that each gait cycle could have a slightly different reference trajectory but he didn't buy that. He said the definition of periodic walking implies a common reference trajectory for each gait cycle. So I'm not sure what I think now.