I've been bashing my head on this, in one form or another, for about 2.5 years now. I would've asked here earlier, but had had too much of the IRC channel's "how to do X?" "do Y instead" garbage... but apparently the IRC channel has been officially disowned by the forums for a while now.
I want to do physics-based character animation, locomotion, etc.
What I have:
A home-brew physics engine that works, mostly. The one known issue is that collisions between certain kinds of convex primitives currently only generate a single contact point, when the contact region would be better represented by multiple contact points bounding an area.
A character consisting of rigid bodies, with skeletal joint constraints between them. The class is named Dood. I can tell each joint what torque I want it to apply, it will check to make sure it's within an allowed range, and then it will apply that torque across the joined bones.
What I don't have:
Control logic for those joint torques. I've experimented with a bunch of different things, but really I haven't got a clue how to proceed with this. I was able to come up with an analytic solution for the upper body, but only because I was able to sink all of the extra torque into the lower body. To extending this approach to work for the lower body as well would be nontrivial, to say the least. I'm completely stumped.
I've found a few papers on the subject, but I wasn't able to extract anything useful from them.
Possible "black box" formulation:
Inputs:
- Anything and everything about the state of the Dood
- (Maybe) info about objects the Dood is in contact with (or just his feet)
- "Goal Description", possibly in the form of a desired linear and angular velocity (or net force and torque) on the left foot, the right foot, and the pelvis
Outputs:
- Joint torques (3-component vectors) for all of the joints of the Dood's lower body: { left, right } x { hip, knee, ankle }
Little help?