Thursday, May 26, 2005

Automatic Balance in the Face of Motion

I've been thinking of a neato (hypothetical) controller that would be automate the balance shifts that should occur when animating. Consider two animations, the classic walk cycle and a wave action. IRL, the walk motion should be affected by the wave in that the balance is slightly shifted, and likewise the wave is affected when walking because the hand should swing around during balance.
This would then be in the province of the RT animation blender-- to dynamically shift the body, slightly, in order to maintain balance.

Random thought: some fun could definitly be had by giving the skeleton a cane or crutches and seeing what motion emerged.

Some (as yet unread) references:
  • G. Taga, 1997, A Model of Integration of Posture and Locomotion, Proceedings of International Symposium on Computer Simulation in Biomechanics.
  • A. Kun and W. T. Miller, III, Adaptive Dynamic Balance of a Biped Robot using Neural Networks. Proc. IEEE Int. Conf. on RA, pp. 240--245, 1996
  • Kun A. L., Miller W. T. (1997), Adaptive Static Balance of a Biped Robot Using Neural Networks, Proc. of the Int.


Tuesday, May 17, 2005

Distributed ELSE

The physical-simulation evaluation is an obvious choice for distributing.  Roughly, the inputs are:
- the physical sim parameters (gravity, harness, obstacles, friction, time-step, collision parameters, etc),
- the character geometry (limb and joint type and positions, angle limits),
- the character actuators/muscles (strength, PID-params, CFM),
- the controller neural network (or, alternatively, the genome.  It seems cleaner to keep the genotype->phenotype piece out of the client.)
 
The per-frame outputs would be (this is optional, but good for keeping tabs):
- instantanous joint angles, CoG.  (to allow drawing).  Surely there's some compact, standard format for this kind of "motion capture" data.  (want both q and q', plus maybe torques as well.)
- current fitness
 
The per-evaluation outputs would be:
- final fitness

Other Controllers

Random thought:  physical simulation is by far the slowest part in ELSE.  Implicit integration would both speed things up nicely and help stabilize it numerically, reducing the number of checks and so speeding it up further.  But implicit methods don't like impluse-style forces like collisions.
 
So what about flying and swimming behaviors?  They've been done a bit, but not so well.  I'm not sure about the trade-offs, but I'm thinking about a fluid simulation to evolve bird or insect flight controllers.  This would be interesting because, 1) as far as I know, insect flight is still difficult to understand by analysis, 2) implicit fluids would be stable and reasonably fast (wonder what the Korean evolved flight team used for a physics model?), 3) it might be visually impressive: large birds due to grace and small insects due to the strangeness of flight technique.  Though insects, esp, might rely on far too subtle fluid properties (say, micro vortices) that wouldn't be tractable to simulate naively.
 
I don't know much about fluids outside of reading Jos Stam's papers from Siggraph.  It'd be critical to get realistic forces acting on the wing surfaces from the fluid; not sure if the current fast fluid sys techniques do that much.

Sunday, May 15, 2005

Levels of Models in Character Animation

In essence, computer-generated character animation is attempting to mimic the actions and behaviors, down to the nuances, that real, live humans have. So to improve the resulting animation, we need to look hard at the various models we use to see where improvement can be made.

In PF's doctoral work, he uses a SVM to choose, at run-time, a low-level, specialized controller from a pool of available controllers. Each of these controllers is effectively a small program that can look at inputs and actuate motors. The SVM is acting to choose among zombies.

Some possible levels to consider:
- Neuron. Spike vs. CT, etc.
- Neural Network. Learning, construction, evolution, by-hand design.
- Geometrical. The shape and length of limbs, angles of rotation.
- Physical. Mass distribution.
- Actuator. Strength of muscles, location of action. PIDs vs. complex muscle-tendon-ligament.
- Joints.  Ball-and-socket and hinge vs. complex, multi-boned configurations. 
 
An evolutionary approach seems like a good match with making joint models more complex, since it would increase realism without too high (or perhaps any) cost in larger state space.  Probably the initial candidates would be the hip and lower spine-- the swagger/butt swing is a big part of the apparent realism of a walk.

The Neuronal Basis for Consciousness

I spent a couple hours in the bookstore reading a book that follows Prof. Koch's Caltech course CNS/Bi 120, The Neuronal Basis for Consciousness. Although it went a bit more in depth than I could absorb just sitting in the store, but it was highly useful to me for introducing a novel and consistent vocabulary for talking about actions, perceptions and awareness. "Zombie", as defined by Koch, is a sub-awareness action taken without conscious awareness. Something like picking up a glass or shifting gears in a manual car. Zombies tend to come from repetitive training.
I'm quite looking forward to reading the full book and watching the lectures.

Friday, May 13, 2005

Notes on Mutants

Some interesting tidbits, though most thrown out without justification or reference, from Mutants:
  • A polymorphism is a mutation that is common (enough) in the population.  Roughly figured around one percent of the population.  Using this definition, at least one polymorphism is present in about 65% of all genes.

  • Each new embryo gets about 100 mutations during copying.  Of these, four will imply changes in resulting proteins.  Of these four, three will be harmful.