Open christian-rauch opened 5 years ago
However, even if FCL does not support planes, EXOTica should throw a warning instead of crashing.
Absolutely
MoveIt uses FCL so they have the same limitation.
I'd like to test this with your minimal example from above. It should work with CollisionSceneFCLLatest
(new FCL has some half-space fixes). I will report back once done.
I did some more digging: the issue is related with the dispatch via the DynamicAABBTreeManager
. Adding a plane and box by themselves and checking with isCollisionFree
by themselves is fine:
import pyexotica as exo
ik = exo.Setup.loadSolver('{exotica_examples}/resources/configs/example_manipulate_ik.xml')
problem = ik.getProblem()
scene = problem.getScene()
test_scene = '''(ExampleScene)+
* Box
1
box
0.1 0.1 0.1
0 0 0
0 0 0.968912 -0.247404
1 0 0 1
* Plane
1
plane
0 0 1.0 0
0 0 -0.5
0 0 0 1
0 0 1 1
.
'''
scene.cleanScene()
scene.loadScene(test_scene)
print("Collision-free?", scene.isCollisionFree("Box", "Plane"))
print("isStateValid(False, 0.01)?", scene.isStateValid(False, 0.01))
While the parameter d
has an influence on the AABB (cf. here), changing it to a small value (1e-6, 1e-2) did not help. I checked with MoveIt again and they do the same setup and similar dispatch as we do. Strangely enough, they have a special if-case for planes, but then treat it the same as other shapes in the end.
EXOTica crashes when using a collision scene that contains a plane:
Full example: example_attach_plane.py.txt (derived from
example_attach_plane.py
).Backtrace:
Edit: I imagine that collision checking with planes is not well supported since planes do not have a volume. However, even if FCL does not support planes, EXOTica should throw a warning instead of crashing. Is mesh to plane collision supported in FCL and MoveIt!?