@@ -48,37 +48,44 @@ def test_pairwise_collisions(self):
4848 cone = fcl .CollisionObject (self .geometry ['cone' ])
4949 mesh = fcl .CollisionObject (self .geometry ['mesh' ])
5050
51+ result = fcl .CollisionResult ()
5152 ret = fcl .collide (box , cone , self .crequest , result )
5253 self .assertTrue (ret > 0 )
5354 self .assertTrue (result .is_collision )
5455
56+ result = fcl .CollisionResult ()
5557 ret = fcl .collide (box , mesh , self .crequest , result )
5658 self .assertTrue (ret > 0 )
5759 self .assertTrue (result .is_collision )
5860
61+ result = fcl .CollisionResult ()
5962 ret = fcl .collide (cone , mesh , self .crequest , result )
6063 self .assertTrue (ret > 0 )
6164 self .assertTrue (result .is_collision )
6265
6366 cone .setTranslation (np .array ([0.0 , 0.0 , - 0.6 ]))
6467
68+ result = fcl .CollisionResult ()
6569 ret = fcl .collide (box , cone , self .crequest , result )
6670 self .assertTrue (ret > 0 )
6771 self .assertTrue (result .is_collision )
6872
73+ result = fcl .CollisionResult ()
6974 ret = fcl .collide (cone , mesh , self .crequest , result )
7075 self .assertTrue (ret == 0 )
7176 self .assertFalse (result .is_collision )
7277
7378 cone .setTranslation (np .array ([0.0 , - 0.9 , 0.0 ]))
7479 cone .setRotation (self .x_axis_rot )
7580
81+ result = fcl .CollisionResult ()
7682 ret = fcl .collide (box , cone , self .crequest , result )
7783 self .assertTrue (ret > 0 )
7884 self .assertTrue (result .is_collision )
7985
8086 cone .setTranslation (np .array ([0.0 , - 1.1 , 0.0 ]))
8187
88+ result = fcl .CollisionResult ()
8289 ret = fcl .collide (box , cone , self .crequest , result )
8390 self .assertTrue (ret == 0 )
8491 self .assertFalse (result .is_collision )
@@ -90,31 +97,38 @@ def test_pairwise_distances(self):
9097 cone = fcl .CollisionObject (self .geometry ['cone' ])
9198 mesh = fcl .CollisionObject (self .geometry ['mesh' ])
9299
100+ result = fcl .DistanceResult ()
93101 ret = fcl .distance (box , cone , self .drequest , result )
94102 self .assertTrue (ret < 0 )
95103
104+ result = fcl .DistanceResult ()
96105 ret = fcl .distance (box , mesh , self .drequest , result )
97106 self .assertTrue (ret < 0 )
98107
108+ result = fcl .DistanceResult ()
99109 ret = fcl .distance (cone , mesh , self .drequest , result )
100110 self .assertTrue (ret < 0 )
101111
102112 cone .setTranslation (np .array ([0.0 , 0.0 , - 0.6 ]))
103113
114+ result = fcl .DistanceResult ()
104115 ret = fcl .distance (box , cone , self .drequest , result )
105116 self .assertTrue (ret < 0 )
106117
118+ result = fcl .DistanceResult ()
107119 ret = fcl .distance (cone , mesh , self .drequest , result )
108120 self .assertAlmostEqual (ret , 0.1 )
109121
110122 cone .setTranslation (np .array ([0.0 , - 0.9 , 0.0 ]))
111123 cone .setRotation (self .x_axis_rot )
112124
125+ result = fcl .DistanceResult ()
113126 ret = fcl .distance (box , cone , self .drequest , result )
114127 self .assertTrue (ret < 0 )
115128
116129 cone .setTranslation (np .array ([0.0 , - 1.1 , 0.0 ]))
117130
131+ result = fcl .DistanceResult ()
118132 ret = fcl .distance (box , cone , self .drequest , result )
119133 self .assertAlmostEqual (ret , 0.1 )
120134
@@ -129,7 +143,7 @@ def test_pairwise_continuous_collisions(self):
129143 ret = fcl .continuousCollide (box , fcl .Transform (),
130144 cone , fcl .Transform (),
131145 request , result )
132-
146+
133147 '''
134148 ## WHY DOES THIS FAIL ##
135149 self.assertTrue(result.is_collide)
@@ -225,6 +239,47 @@ def test_updates(self):
225239 manager .collide (cdata , fcl .defaultCollisionCallback )
226240 self .assertTrue (cdata .result .is_collision )
227241
242+ def test_many_objects (self ):
243+ manager = fcl .DynamicAABBTreeCollisionManager ()
244+
245+ objs = [fcl .CollisionObject (self .geometry ['sphere' ]),
246+ fcl .CollisionObject (self .geometry ['sphere' ], fcl .Transform (np .array ([0.0 , 0.0 , - 5.0 ]))),
247+ fcl .CollisionObject (self .geometry ['sphere' ], fcl .Transform (np .array ([0.0 , 0.0 , 5.0 ])))]
248+
249+ manager .registerObjects (objs )
250+ manager .setup ()
251+
252+ self .assertTrue (len (manager .getObjects ()) == 3 )
253+
254+ # Many-to-many, internal
255+ cdata = fcl .CollisionData (self .crequest , fcl .CollisionResult ())
256+ manager .collide (cdata , fcl .defaultCollisionCallback )
257+ self .assertFalse (cdata .result .is_collision )
258+
259+ objs [1 ].setTranslation (np .array ([0.0 , 0.0 , - 0.3 ]))
260+ manager .update (objs [1 ])
261+ cdata = fcl .CollisionData (self .crequest , fcl .CollisionResult ())
262+ manager .collide (cdata , fcl .defaultCollisionCallback )
263+ self .assertTrue (cdata .result .is_collision )
264+
265+ objs [1 ].setTranslation (np .array ([0.0 , 0.0 , - 5.0 ]))
266+ manager .update (objs [1 ])
267+ cdata = fcl .CollisionData (self .crequest , fcl .CollisionResult ())
268+ manager .collide (cdata , fcl .defaultCollisionCallback )
269+ self .assertFalse (cdata .result .is_collision )
270+
271+ objs [2 ].setTranslation (np .array ([0.0 , 0.0 , 0.3 ]))
272+ manager .update (objs [2 ])
273+ cdata = fcl .CollisionData (self .crequest , fcl .CollisionResult ())
274+ manager .collide (cdata , fcl .defaultCollisionCallback )
275+ self .assertTrue (cdata .result .is_collision )
276+
277+ objs [2 ].setTranslation (np .array ([0.0 , 0.0 , 5.0 ]))
278+ manager .update (objs [2 ])
279+ cdata = fcl .CollisionData (self .crequest , fcl .CollisionResult ())
280+ manager .collide (cdata , fcl .defaultCollisionCallback )
281+ self .assertFalse (cdata .result .is_collision )
282+
228283 def test_managed_distances (self ):
229284 manager1 = fcl .DynamicAABBTreeCollisionManager ()
230285 manager2 = fcl .DynamicAABBTreeCollisionManager ()
0 commit comments