[ODE] how to stopbody enabling by joint

Krystian Ligenza kxxl at poczta.onet.pl
Mon Oct 29 05:43:24 MST 2007


Mark Williams pisze:
> Mark Williams wrote:
>   
>> Krystian Ligenza wrote:
>>   
>>     
>>> Mark Williams pisze:
>>>     
>>>       
>>>>> Krystian Ligenza wrote:
>>>>>     
>>>>>         
>>>>>           
>>>>>> I have look more in mailing list archive, and see that this topic was 
>>>>>> many times discussed. Main problem is how to set that joint should only 
>>>>>> affect  one body and other  left  unforced.  Maybe we should think about 
>>>>>> adding flag for this, by adding dJointSetXXXParam with dParamAffectBoth, 
>>>>>> dParamAffectFirst, dParamAffectSecond? If joint can link with world, 
>>>>>> this should not be impossible to do - correct me if I'm wrong?    
>>>>>>       
>>>>>>           
>>>>>>             
>>>>> Why wouldn't you just create the joint attached to the affected body and 
>>>>> the world (NULL), then? I do that for collisions in certain cases, for 
>>>>> example.
>>>>>     
>>>>>         
>>>>>           
>>>> If you attach a joint to a null-body, then the joint considers that body 
>>>> to have zero velocity. This is a potential source of error when 
>>>> colliding against non-simulated yet animated geoms. I think Krystian's 
>>>> patch has a great deal of value.
>>>>   
>>>>       
>>>>         
>>> Hope that you are talking about "void dJointSetFixedBodies (dJointID 
>>> j,const dVector3 p1,const
>>> dQuaternion q1,const dVector3 p2,const dQuaternion q2)" function that 
>>> I proposed for adding, becouse I haven't add what I was talking about 
>>> in this mail (about dJointSetXXXParam ). I have thought, that only 
>>> thing that is need to be change for all joints is XXXGetInfo2(...), 
>>> but It seems that all step functions also check if joint is attached 
>>> to Body and World, so this become too time consume for me to make it 
>>> good. Also joint can be attached to World - Body, or Body - World, but 
>>> internally it is always Body-World, so making a param that hide one of 
>>> Bodies as World would be a tricky part.  
>>>       
>> Apologies, I realised after I wrote this that you'd not submitted a 
>> patch for the dJointSetXXXParam stuff. I think it's a good idea, though.
>>     
>   Alternatively, can the JointFeedback structures be used to query how 
> much force/torque the joint is applying, then apply the exact
> opposites to the body you'd like to remain unaffected? Or is this always 
> going to be out of sync by one time step?
>   
Feedback structures are filled in stepper function, so we would always 
be one step behind. Also, I think we would need to correct 
forces/torques for all joint in the chain, not only for one body. I will 
try to investigate this topic more, but now I have very limited time.

Krystian


More information about the ODE mailing list