[ODE] vector has zero size

Hampus Soderstrom hampus at sxp.se
Wed Oct 18 07:56:11 MST 2006


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