Open moorepants opened 9 years ago
From Andy:
You comment about your inferred controller not working on a robot is interesting. But I don’t think you have done a good enough job, or at least you haven’t convinced me of that, to have the controller specified. More about this later.
Our "inverse dynamic" model that is used to compute torques is not really the inverse dynamics of the plant. It is more of a measurement model that allows us to use the force plate to measure joint torques. The plant dynamics is very different. For instance, in the real plant, an ankle plantarflexion torque in the stance phase causes an increase in GRF and an upward acceleration of the torso. In the "inverse dynamic" measurement model, torso acceleration is not represented and the GRF is not part of the system dynamics, it is an input.
Possible reasons why the identified controller could not control a full body model:
(1) Our controller is incomplete. We only identify control for sagittal plane leg torques. The human may use other actuators (torso, out of plane).
(2) Our planar movement simulation model is not complete.
(3) The controller model is too simple.
Only in the indirect method can we make sure that the controller can actually control something.
In the direct method we should probably be less ambitious: we just want a controller in which the torque responds to perturbations like humans do. Maybe present it as a next generation of Goldfarb's approach for gain-scheduled control. With only 12 parameters he gets perfectly fitting torques but did not use perturbations. Only the nominal gait cycle. For sure this is not the actual human control, and for sure it can't control a robot or model. Nevertheless, it works when paired with a human (amputee or exoskeleton user) who adds whatever actuation and control that is needed to make it work. What we do is exactly that, but better because of using perturbations and much more data. We can actually get a unique solution for continuously varying gains.
Yes, those are things we've mentioned or talked about before. Seems we'll just have to be happy with what it is and I'll have to get the indirect id working to get a working controller. I'll try to use the improved Goldfarb angle. But it isn't clear to me how this thing just automatically "works" when paired with a human that has some ability to move their limbs. Seems like you'd need an identification model that includes the limited control ability of the human to be able to identify the needed additive controller for them both to work to together. I'll read Goldfarb again to see how they explain it.
BTW, what Goldfarb publication are you referencing above?
This one:
Sup, Frank, Amit Bohara, and Michael Goldfarb. “Design and Control of a Powered Transfemoral Prosthesis.” The International Journal of Robotics Research 27, no. 2 (February 1, 2008): 263–73. doi:10.1177/0278364907084588.
I've read it before. Refreshing again.
I just carefully read the above paper again and I'm not sure their results are what you claim above. They start by taking Winter's joint angle, rate, and torque data from an able bodied human and doing a non-linear least squares to fit it to this model:
T = k1*(theta - theta_eq) + k2*(theta-theta_eq)^3 + b*theta'
for the ankle and knee and for four gait modes. They show a pretty fit from this (Fig 10) and the identified parameters: k1, k2, b, and a chosen parameter theta_eq. This model is setup to proportionally drive the angle to some chosen equilibrium angle and to proportionally drive the rate to zero, given positive k1, k2, and b. They call this "impedance control" but I don't really see anything more than an slightly elaborate PD controller. This method falls prey to the pitfalls Elliot Rouse describes in [1].
They start with these identified parameters and setup a robotic prosthesis on an able bodied person by holding their leg in a harness to simulate having an amputated leg above the knee. They end up hand tuning the parameters such that the ankle torque is simply a proportional control relative to some chosen set point, i.e. now k2 = 0 and b = 0, and the knee torque has stiffness and some damping in swing. So it doesn't really seem to be anything much different than a passive spring and damper at this point with manually chosen values based on the user's feel. They of course don't replot the fit figure (10) with this new set of parameters, as I'm guessing it would no longer fit well.
I redid their Fig 12 that compares the measured prosthetic joint angles with able bodied ones so you can actually compare it:
I don't think it has a good of match as what they claim in the text.
So I wasn't really impressed with this method or results. It doesn't seem that far from a simple passively stiff and damped prosthetic that can change properties at four stages in the gait cycle.
Our method is likely to give a much better picture than this.
[1] Rouse, E.J., R.D. Gregg, L.J. Hargrove, and J.W. Sensinger. “The Difference Between Stiffness and Quasi-Stiffness in the Context of Biomechanical Modeling.” IEEE Transactions on Biomedical Engineering 60, no. 2 (February 2013): 562–68. doi:10.1109/TBME.2012.2230261.
Yes, I agree completely. Goldfarb's approach is curve fitting rather than system identification. It works because they constrain the design space to spring-damper-like controllers and the user can adapt to it. Somewhat. The human test results are no better than with a controlled damper or a passive knee.
It is entirely equivalent to PD control, as far as I can tell, except that the "setpoint" is not the desired posture. It is placed intentionally away from the desired posture. Otherwise, the PD control would have zero torque when you're following the desired trajectory and clearly normal gait does not have zero torques. Instead of turning up the gain, they move the setpoint to a different place which is a good way to get nonzero torques with low gains.
But it is fundamentally flawed in ways that Rouse has explained very well. You just can't do this from one gait cycle. You need more data, and perturbations.
I am now convinced that it is not necessary for us to prove that our results are a controller. I thought that we needed to do that for a long time now, but I think it is fine to simply characterize the combined passive+active stiffness and damping during gait. So I'm going to close this issue.
I am still not convinced that "impedance" is the right term though. Rouse calls what he's doing "identifying the system's impedance". I am going to read the "Hogan, N. “Impedance Control: An Approach to Manipulation.” In American Control Conference, 1984, 304–13, 1984." to understand what "impedance control" actually means. It still is not clear to me.
Reopening because I have some additional comments that can be useful for the paper.
I agree that we do not have to prove that this is a controller. Some justifications:
Have you decided on the terminology (feedback gains, or impedance)? They seem mathematically equivalent to me.
Here is an important paper from Sup & Goldfarb if you don't have it already: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2836171/ I think you cited an earlier paper with a pneumatic system, a cubic term in the impedance, and rather poor results from a test subject. This one is the electric system that is being commercialized, only linear terms in the impedance, and pretty good test results (kinematics) from the human subject.
Important points we can use in our intro or discussion section:
Sorry for the long post, but these are things that make me realize that we have something that is better than what already exists.
- We are basically doing what Goldfarb does, just with more data and variations between gait cycles so we can identify more parameters.
Yes, but I think we are more closely doing what Rouse does. Goldfarb identifies what Rouse calls "quasi-stiffness", where as we are identifying the lumped passive and active stiffness in each joint (also damping too). Note that Rouse 2014 [1] also found that the stiffness values he identified were pretty much identical to the quasi-stiffness computed from the same data. We could check the same thing, in fact I tried it with one joint and didn't get the same result.
[1] Rouse, Elliott, Levi Hargrove, Eric Perreault, and Todd Kuiken. “Estimation of Human Ankle Impedance During the Stance Phase of Walking.” IEEE Transactions on Neural Systems and Rehabilitation Engineering, 2014, 1–1. doi:10.1109/TNSRE.2014.2307256.
Have you decided on the terminology (feedback gains, or impedance)?
Actually I'm not sure I like either. I still haven't read the original impedance control paper. Will do that this week. We frame our identification method using a control system as the model, so I'm inclined to stick with "gain". But it isn't the real "gain" a human uses because the "real gain" would only be the active portion of the control. But this would be the gain that you introduce to a control system for a robot that has joint that have negligible passive joint properties.
Ok, those are nice points about this Goldfarb paper which I hadn't read (in depth at least) yet. I'll incorporate them into the paper.
One of my concerns is that we identify this gait phase scheduled matrix but that there is no way to use that as a controller in a simulated or real system. For example, it fails to control the forward dynamics walking model I constructed that has the same properties as the inverse dynamics model used in the identification process. But it may fail to control, i.e. stabilize, the model because the controller is crude. This crude controller may still be representative of the control process the human utilizes but isn't precise enough to work. Or it isn't a representative model of the control system and just some weird extraction of the data. I'm not sure how to prove that it is a real controller without having it control something.