[ODE] vector has zero size

Wouter Mollemans wouter.mollemans at gmail.com
Wed Oct 18 08:47:29 MST 2006


TIMESTEP: 0.001 (but even with 0.0001, i have this problem)
ERP : 0.01
CFM : 0.07
OBJECTS: trimeshes (approx 4000 triangles)

Greetings
Wouter

Hampus Soderstrom wrote:
> Hi Wouter,
> 
> I meant you should try different ERP and CFM values, not making them 
> smaller.
> 
> What timestep are you running? Lowering that can help too.
> 
> Are you using any ball joints or angular motors, thoose can be unstable 
> aswell if you have a wide range in their stops.
> 
> /Hampa
> 
> On 18 Oct 2006, at 10:12 PM, Wouter Mollemans wrote:
> 
>> I don't think the problem arises from performing simulations with 
>> small ERP or CFM values. To clarify:
>> after i call the nearcallback function and perfrom dCollide(), the 
>> position of most contact points is completely correct. Only for a few 
>> (most often only for one point) a NaN position value is returned. So I 
>> don't think that simulation goes wrong.
>>
>> Best regards
>> Wouter
>>
>> Hampus Soderstrom wrote:
>>> Hi,
>>> I think the best way to get rid of this is to fine tune ERP and CFM 
>>> values.
>>> If it is a case of exploding simulation that causes this, adding 
>>> damping and making sure the mass of objects isn't to small can also 
>>> help.
>>> /Hampa
>>> On 18 Oct 2006, at 8:20 PM, Wouter Mollemans wrote:
>>>> Thx I will try to use your solution, but this is of course only a work
>>>> around.  Does anyone has an idea what causes these infinite values?
>>>>
>>>> Is it the collision detection algorithm? I noticed that the collision
>>>> algorithm (dCollide()) frequently reports a NaN value for the position
>>>> value of the first contact (contact[0]).
>>>>
>>>>
>>>> Alex Green wrote:
>>>>> Apporx once every 12000 simulations I get the same error. The error 
>>>>> can
>>>>> be detected. I run a function called 'checkPhysicsForError()' per 
>>>>> frame.
>>>>> It works as follows:
>>>>>
>>>>> bool checkPhysicsForError(void){
>>>>> dReal *pos = (dReal*) dBodyGetPosition(bodyID of one of my boxes);
>>>>> if(!(pos[0]==pos[0]) || !(_finite(pos[0])))
>>>>> {
>>>>>     dWorldDestroy(world);
>>>>>     reset all my stuff
>>>>>     create everything again;
>>>>>     rewind one test (ie do the one that failed from the beginning);
>>>>>     return true;
>>>>> }
>>>>> else return false;
>>>>> }
>>>>>
>>>>> Notes:
>>>>> pos[0] == pos[0] checks for NAN (not a number);
>>>>> _finite() is windows, is there a cross platform check?
>>>>>
>>>>> Cheers -alex
>>>>>
>>>>> Wouter Mollemans wrote:
>>>>>> After some debugging, I noted that some of the collision points are
>>>>>> lying at infinity. This causes dNormalize4() to go nuts. Has anyone
>>>>>> seen this problem before and do you know what causes this effect?
>>>>>>
>>>>>> Greetz
>>>>>> Wouter
>>>>>>> Hi,
>>>>>>>
>>>>>>> In my simulator I try to fit two rigid objects into eachother (a
>>>>>>> little bit like a 3D puzzle).  The rigid objects are trimeshes
>>>>>>> (around 4000 triangles) and all my joint are of the type contact.
>>>>>>> Sometimes this works nicely, but mostly I get following message: 
>>>>>>> "ODE
>>>>>>> message 2 : vector has zero size" emmtted by dNormalize4().
>>>>>>> Consequently the velocity becomes Nan and my simulation is ruined.
>>>>>>>
>>>>>>> Is there a solution? Is there a maximum number of triangles that can
>>>>>>> be used or what is the source of the error?
>>>>>>>
>>>>>>> Thanks
>>>>>>> Greetz
>>>>>>> Wouter
>>>>>>>
>>>>>>>
>>>>>>> --_______________________________________________
>>>>>>> ODE mailing list
>>>>>>> ODE at q12.org
>>>>>>> http://q12.org/mailman/listinfo/ode
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> ODE mailing list
>>>>>> ODE at q12.org
>>>>>> http://q12.org/mailman/listinfo/ode
>>>>>>
>>>>>
>>>> _______________________________________________
>>>> ODE mailing list
>>>> ODE at q12.org
>>>> http://q12.org/mailman/listinfo/ode
>>>>
>>
> 
> 


More information about the ODE mailing list