Arms rising body - How can I do? (video to better explain)

Dear All,
I would like to ask you help on a relatively common issue. This video should explain it rather clearly.

The orange objects behave like I would like them to: when the tip of the arms touch the ground, any further rotation leads to the rising the body block to whom they are connected (and parented).
To obtain this, I manually edited the IPO curves with the Graph Editor, tweaking (slightly impercisesly) the curve and slope to mimic a segment of sinusoid. I’m sure that there is a way to do it using CONSTRAINTS. So I wish I could do the correct thing on the grey objects.

…I tried to do what I thought as most logical: I added a TRANSFORM constraint having the tip of the arms (vertex group) as target, the central block as owner, and I set the Z of the owner to move up 1 unit when the tip of the arm moved down 1 unit, starting from the ground level.
The result is absolutely unacceptable. This kind of recursive constraint led to weird things in my case.
I tried the same using Empties, not parented and parented, limiting the Z etc.

I also tried to use a simple script to use the trigonometrical approach (dZ=L*sin(a-a1)) but the Script constraint seems unusable in Blender 2.6x (and to be honest it would be an overkill for such simple thing).

Can you suggest me a way to do it cleverly? I attach the reference .blend file.

Thank you very much in advance!


ArmsRisingBody.blend (532 KB)

Self-answer also for this thread: I can use a Driver to replace Script modifiers.