There was an important change made today to the SetMass function. I have attached the thread below for reference. The first message should be enough to fill most people in. If you are interested in the details the other two replies should suffice.
The new SetMass function does seem to be working, and has now replaced the old function in the GIT repository. However, it seems the masses are not what they used to be. Robots are now generally much lighter. My instinct is to trust the new SetMass code, seeing as robots with the old SetMass code weighed in at around 1 or 2 kilograms (not realistic). The new code requires the masses to be much higher - around 20 or 30 kilograms, and also requires us to start setting MaxForce in our joints so that they exert realistic torques (something that should have been done a long time ago). I will be going through all of the robots except for the Nao today and seeing if I can get the masses and MaxForce to reflect realistic behavior. As a side note for anyone looking to make these changes as well, a good starting value is a MaxForce of 0.2 on the joints and a body mass on the robot of about 30 kg.
From: Sander van Noort [mailto:vannoortsander@...]<mailto:[mailto:vannoortsander@...]>
Sent: Monday, July 11, 2011 11:00 AM
To: Brent, Taylor W.
Cc: Behzad Tabibian; Arnoud Visser; Balakirsky, Stephen B.; Carlson, Stephen
Subject: Re: Problem with SetMass function
I added the SetMass function to the PhysXProxy dll. Inside Utilities it is called SetMass2 (could possible replace the old SetMass function). RB_BodyInstance.GetBodyMass can be used to retrieve the mass (gave it a quick test and works like expected after setting the mass using the SetMass2 function).
On Mon, Jul 11, 2011 at 4:29 PM, Brent, Taylor W. <taylor.brent@...<mailto:taylor.brent@...>> wrote:
> Hi all,
> We have been having problems creating multiple joints at a single
> location using the EmptyMesh as an intermediate part due to what we
> suspect is a problem with the SetMass function (we have already tried
> increasing SolverIterationCount). Currently, the way we do it is by
> looking at the engine calculated mass, setting a target, and
> calculating the correct scaling required to reach our target. However,
> for meshes like the EmptyMesh, who have an engine calculated mass
> close to or even rounded down to 0, the scaling does not work as
> desired. Would the person who maintains the PhysX proxy dll (Sander?)
> be able to add a function to set the mass directly? This would be a
> much more stable long-term change to the code as well.