[ODE] Cylinder class stable?

Olivier Michel Olivier.Michel at cyberbotics.com
Thu Jun 26 05:10:01 2003


slipch wrote:

>Hello Olivier,
>
>Wednesday, June 25, 2003, 9:55:56 AM, you wrote:
>
>OM> I am also using Cylinders in my app and I noticed a couple of problems:
>
>OM> (1) No collision between Cylinders and Caped Cylinder (CCylinder)
>
>OM> (2) Some minor bugs: for example when two cylinders have parallel axis 
>OM> the collision detection between these two cylinders is not correct (the 
>OM> error is however small). It seems to me that the CCylinder had the same 
>OM> problem which has been very recently fixed by Russ. Maybe we could take 
>OM> inspiration from the new CCylinder collision code to fix the Cylinder code ?
>
>I do not use CCylinder
>So, I am not sure that I understand what bug do you mean.
>
Hi Konstantin,

I refer to the bug fixed by Russ on/ May 17 2003/ in collision_std.cpp 
as mentioned in the cvs history of this file:

http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/opende/ode/ode/src/collision_std.cpp

Revision *1.7* 
<http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/opende/ode/ode/src/collision_std.cpp?rev=1.7> 
/ *(view)* 
<http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/opende/ode/ode/src/collision_std.cpp?rev=1.7&content-type=text/vnd.viewcvs-markup> 
- annotate 
<http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/opende/ode/ode/src/collision_std.cpp?annotate=1.7> 
- [select for diffs] 
<http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/opende/ode/ode/src/collision_std.cpp?r1=1.7> 
, /Sat May 17 23:58:32 2003 UTC/ (5 weeks, 4 days ago) by /russ_smith/
Branch: *MAIN* 
<http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/opende/ode/ode/src/collision_std.cpp?only_with_tag=MAIN> 

CVS Tags: *HEAD* 
<http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/opende/ode/ode/src/collision_std.cpp?only_with_tag=HEAD> 

Changes since *1.6: +75 -157 lines*
Diff to previous 1.6 
<http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/opende/ode/ode/src/collision_std.cpp.diff?r1=1.6&r2=1.7> 


improved the capped cylinder to capped cylinder code - it is now shorter
and faster, and it does not have a bug that the old code had where
cap-to-cap contact points would not be detected if the cylinder axes
were parallel.


I am not sure however if this has any relationship with the Cylinder 
Cylinder collision problems. I could observe it when both cylinders have 
the same vertical axis. I can describe the problem as follow:

When two cylinders are set on a floor, lying on one of their flat end 
like this (warning: ASCII art coming up):

      __      _
     |  |    | |
     |1 | -> |2|
_____|__|____|_|____


If cylinder 1 moves towards cylinder 2, the collision is not detected 
when it should. The two cylinders have to interpenetrate each other more 
deeply than necessary before the collision is detected, like if the 
radius of the cylinders were a bit too small when computing collision 
detection...

Anyone else experienced a similar problem ?

-Olivier