Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 01 Jan 2004
Offline Last Active Yesterday, 04:34 PM

Posts I've Made

In Topic: Simulating Human with Rigid Body Joints

25 April 2016 - 04:23 AM

You can do a lot of balancing by just considering the ankles or, more generally, rotating the floor contact plane relative to the character. For side-side balance, the equivalent of "ankle balance" in the fwd/back direction is pushing down with one foot - and you can generalise this into having a target plane for the feet that. This works when the feet are at awkward angles too, and can be extended to handle the feet being on uneven terrain.


However, you can do a lot more than just balancing with the ankles/feet. If you imagine standing facing out over a cliff top, feet so near the edge you can't step, and somebody gives you a shove from behind, you use your whole body to balance/try to recover - leaning forwards at the hip and "windmilling" your arms. It's worth thinking about what these actions are actually doing, how they induce forces on your feet which are the only ones that can affect your COM - its position and velocity. Ankles/feet are good for COM position control. Upper body motion is good for COM velocity control.


There are two types of forces on the feet that are relevant - normal and tangential (the latter coming from friction). It's easy to imagine (or even do!) an experiment where there's no tangential/frictional force - e.g. standing on ice. The other extreme, where you have a single contact point (i.e. you can make use of the friction forces, but the centre of pressure is always fixed) is harder to experience - would it be possible to stand on the tip of a spike, where you have no option to balance with just "ankle control"? See the "Balance Controller (new)" video here for the answer! http://royfeatherstone.org/skippy/

In Topic: Simulating Human with Rigid Body Joints

23 April 2016 - 03:14 PM

1. Physics simulation:
Imagine a human standing on only one leg. That's a system of 20 bodies and the foot body and ankle joint has to carry all the weight.
Mass ratio here is 1:50, worst case for game physics libs. Bullet can't even simulate a stack of a few equal mass bodies without jitter (the last time i've checked),
and also it may miss the necessary features for powered joints. So it's not the best choice for a demanding simulation like this and you'll have to add a lot of work,
probably ending up doing your own constraint solver.
I have experience with Bullet, Havok and ODE, but when i tried Newton i was blown away by the difference in stability, accuracy and robustness it offers.
It's by far the best library for this kind of simulation - sadly only few people know about this.

If you want accurate, stable control of a mechanism with lots of joints and large mass ratios, the important thing is to be using an appropriate solver. Bullet does have a Featherstone solver, though I don't know how good it is for actively driving articulations. PhysX has an articulation solver, and I know from first hand experience that it can be used to drive articulations accurately, without excessive numbers of iterations/small timesteps.

* Cheat and use external forces to stabilize the system :)
(I assume Natural Motion does this, but that's just an assumption)

Your assumption is wrong :) Of course, we can use external "cheat" forces to add stability, but that's not the fundamental method (and it all works without this). I can't discuss the methods by which we calculate the joint torques, but the character is controlled by joint torques.

For example, there's some nice demo here:


You want to know masses and moments of inertia for the different body parts, and don't want to go to the messy trouble of chopping up a cadaver yourself? OK - take a look here: http://www.smf.org/docs/articles/hic/USAARL_88-5.pdf

In Topic: Airfoil simulation

24 March 2016 - 09:38 AM


Does this makes sense?


You need to be careful that you handle the varying air flow speed and angle of attack over the wing. For example, if the plane is rolling, then this doesn't change the angle of attack much at the root, but it does (increasingly) towards the tip. This is what makes the plane stop rolling almost as soon as you centralise the ailerons. It sounds like you're in danger of losing this (which would affect every other characteristic too) - or did I misunderstand?!

In Topic: Airfoil simulation

22 March 2016 - 09:33 AM

But as I see it, scaling is non linear in respect to pre 45l and aft 45 degrees AoA coefficients. For example, at positive angles of control surface deflection, Cl generally shifts to the left, while staying the same at 45 degrees AoA. At the same time pre 45 degrees values are scaling up non linearly while post 45 are scaling down in more linear fashion.

Not quite sure what you're getting at... I'd say the graph of CL vs alpha show two things:

1. +ve flap deflection shifts the graph left by pretty much the same amount at all angles of attack

2. +ve flap deflection shifts the graph up, but only in the non-stalled regions. Also, it has a greater effect in the normal flow region than for reverse flow.

If you mentally do the "horizontal" shift first, then you'll see there isn't much/any "vertical" shift left in the stalled regions.

In case with Cm it might look a bit simpler, but actually Cm at 0 AoA is changing rather rapidly.

It's true there's some slope introduced, but mostly it just shifts up/down in the non-stalled region.

Cm curve is a bit weird as it's around the 1/4 chord point - which is obviously the wrong place for reverse flow!

Btw, they are using symmetrical airfoil but still have figures for Cm. Aren't Cm is suppose to be zero for non-chambered airfoils?

It will be zero at alpha=0 and flap=0, and will be close to zero for the non-stalled region.

Regarding calculating angle of attack, do you mean something like this?:

Yes - exactly that. I use that geometry to estimate the change in effective angle of attack (the horizontal shift), plus some heuristic for the vertical shift.

In Topic: Airfoil simulation

21 March 2016 - 04:34 PM

IFor a proper airplane I'm planning on cutting wings into multiple pieces, which means that Cd approximation won't work anymore as using aspect ratio for segment of the wing (rather than full wing) will drastically lower drag coefficient.

Just use the aspect ratio for the wing on each segment.  

The question is, can I simply sum up Cl and Cd coefficients of wing section and aileron section...

No. However, you don't really need to get curves for the flap up/down and interpolate either - you can get a very good approximation by:

1. Adding a constant (depending on the flap deflection) to the CL curve.

2. Shifting the CL vs alpha curve left/right (depending on the flap deflection).

The way you do this depends significantly on the fraction of the wing chord that the flap occupies. Obviously if it's 100% (i.e. it's a fully moving surface) then the CL shift is zero, and the angle shift is just the flap angle deflection.

For more "normal" flaps you can estimate the CL offset, and you can practically calculate the alpha shift geometrically (calculate the change in angle between the original wing, and the new wing leading and trailing edges).

You might find two papers here useful:


Hope this helps - Danny