iMSTK issueshttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues2019-07-28T15:58:19-04:00https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/144Add api for line to mesh CCD2019-07-28T15:58:19-04:00Sreekanth ArikatlaAdd api for line to mesh CCDat present the CCD api supports only mesh-mesh collisionsat present the CCD api supports only mesh-mesh collisionshttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/253Add data visualizer for the collision data2021-01-08T18:15:11-05:00Sreekanth ArikatlaAdd data visualizer for the collision datahttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/186Add FCL integration2019-07-04T16:20:55-04:00Sreekanth ArikatlaAdd FCL integrationiMSTK can benefit from a comprehensive library for collision detection like FCL
https://github.com/flexible-collision-library/fcliMSTK can benefit from a comprehensive library for collision detection like FCL
https://github.com/flexible-collision-library/fclhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/152Add nearest neighbor search for a point set2019-07-04T16:21:46-04:00Sreekanth ArikatlaAdd nearest neighbor search for a point set**Where is it needed?**
particle-based fluid simulations
**Status-quo**
Brute force neighbor search is used
**References**:
1. https://drive.google.com/file/d/0B27NWVZbNDyGa214ejRZejhjcDA/view
2. Thesis: http://www.mit.edu/~andoni/thes...**Where is it needed?**
particle-based fluid simulations
**Status-quo**
Brute force neighbor search is used
**References**:
1. https://drive.google.com/file/d/0B27NWVZbNDyGa214ejRZejhjcDA/view
2. Thesis: http://www.mit.edu/~andoni/thesis/main.pdf
3. Using k-d trees: http://www.alglib.net/other/nearestneighbors.phphttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/216Add PhysX support for rigid bodies2019-07-28T15:59:38-04:00Nicholas MilefAdd PhysX support for rigid bodies@sreekanth\-arikatla@sreekanth\-arikatlahttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/453Boundary Condition Handling Using Constraints2022-08-01T17:08:45-04:00Jacob MooreBoundary Condition Handling Using ConstraintsThe way rigid boundary conditions are handled normally in PBD is to set the inverse mass of a node to zero, making the mass infinite and therefore immoveable. While this works, it has negative side effects on collision, namely the solut...The way rigid boundary conditions are handled normally in PBD is to set the inverse mass of a node to zero, making the mass infinite and therefore immoveable. While this works, it has negative side effects on collision, namely the solution explodes if a user contacts near to or at a boundary point that is fixed. This is because collision constraints are expected to be solved exactly, and a small deformation near a fixed point causes a large deformation far from the fixed point along a constraint axis. This is a feature of the method, not a bug. There is currently a MR for a patch that will allow the solution to stay mostly stable under these conditions by ignoring collision constraints at and near fixed points.
A better long term solution would be to replace the current handling of boundary conditions with (zero inverse mass) with stiff constraints between boundary points and corresponding virtual points. That way the points are allowed to move slightly which *should* alleviate the explosion issue and still allow for contact constraints near a boundary.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/309Boundary Value Testing for CD2022-05-12T22:29:50-04:00Andrew WilsonBoundary Value Testing for CDMany intersection methods may be inclusive or exclusive. To keep them consistent we should add boundary value tests for them.
A list of all CDs with boundary value testing:
- [ ] BidirectionalPlaneToSphereCD
- [ ] ImplicitGeometryToPoi...Many intersection methods may be inclusive or exclusive. To keep them consistent we should add boundary value tests for them.
A list of all CDs with boundary value testing:
- [ ] BidirectionalPlaneToSphereCD
- [ ] ImplicitGeometryToPointSetCCD
- [ ] ImplicitGeometryToPointSetCD
- [ ] MeshToMeshBruteForceCD
- [ ] PointSetToCapsuleCD
- [ ] PointSetToOrientedBoxCD
- [ ] PointSetToPlaneCD
- [ ] PointSetToSphereCD
- [ ] SphereToCylinderCD
- [ ] SphereToSphereCD
- [ ] SurfaceMeshToCapsuleCD
- [ ] SurfaecMeshToSphereCD
- [ ] SurfaceMeshToSurfaceMeshCD
- [ ] TetraToLineMeshCD
- [ ] TetraToPointSetCD
- [ ] UnidirectionalPlaneToSphereCDhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/454CapsuleToLineMeshCD and SphereToLineMeshCD2022-08-10T15:41:14-04:00Andrew WilsonCapsuleToLineMeshCD and SphereToLineMeshCDCapsuleToLineMeshCD is important for thread to laparoscopic tool collision. Would be a great addition to imstk. Since SphereToLineMeshCD is so similar, it would also be nice to tackle.
- Thread on laparoscopic capsule collision.
- Line...CapsuleToLineMeshCD is important for thread to laparoscopic tool collision. Would be a great addition to imstk. Since SphereToLineMeshCD is so similar, it would also be nice to tackle.
- Thread on laparoscopic capsule collision.
- LineMesh ligament on tool collision.Jacob MooreJacob Moorehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/353CDHRefactor Backlog2022-06-02T01:27:13-04:00Andrew WilsonCDHRefactor Backlog- [x] OctreeIntersection OctreeDebugObject Bug
- [x] Fix warnings introduced in MR
- [x] Sign Issues in SphereToCylinderCD (need to make a manual example to check the contacts)
- [ ] GeometryDebugObject as a VisualModel instead of a Scen...- [x] OctreeIntersection OctreeDebugObject Bug
- [x] Fix warnings introduced in MR
- [x] Sign Issues in SphereToCylinderCD (need to make a manual example to check the contacts)
- [ ] GeometryDebugObject as a VisualModel instead of a SceneObject
- [x] CDElementVector was more or less untouched from previous imstk. Some of it's functions need some locks. Also we've experienced a few instances were the locks didn't appear to work when adding data in parallel. (I would do more investigation in the future)https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/172Collidable objects without collision geometry2018-11-12T12:35:59-05:00Sreekanth ArikatlaCollidable objects without collision geometryCrash can occur if the collision mesh is not supplied to the colidable object.Crash can occur if the collision mesh is not supplied to the colidable object.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/72Continous Collision Detection2018-09-15T12:29:20-04:00Nicholas MilefContinous Collision Detection* Currently in imstk, pbd collision is not implemented using CCD. Small timestep is required to prevent penetration. Fast movement of tool cause penetration.
* Use the SCCD in imstk?* Currently in imstk, pbd collision is not implemented using CCD. Small timestep is required to prevent penetration. Fast movement of tool cause penetration.
* Use the SCCD in imstk?https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/463Failed test on Linux for PbdObjectCollision2022-10-11T11:28:44-04:00Jacob MooreFailed test on Linux for PbdObjectCollisionJust here as a reminder. Passes all test on windows. Something GCC specific, but went ahead and merged the branch since it was already so large.Just here as a reminder. Passes all test on windows. Something GCC specific, but went ahead and merged the branch since it was already so large.Andrew WilsonAndrew Wilsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/446Geometry To Collision Map2022-07-26T11:10:10-04:00Andrew WilsonGeometry To Collision MapNow that geometry inputs for CD is reversible, out of the constructor, you can create CD methods by name with the factory, and a number of more cases added, tested, and fixed. I think it would be a good time to introduce a map for geomet...Now that geometry inputs for CD is reversible, out of the constructor, you can create CD methods by name with the factory, and a number of more cases added, tested, and fixed. I think it would be a good time to introduce a map for geometry to CollisionDetectionAlgorithms applied in PbdObjectCollision such that users need to provide it and get a decent default.
We just need to provide a map of geometry types (ideally not geometry strings) to CD strings. But make sure to provide it as a default parameter such that it can still be replaced since a number of geometries map to multiple CollisionDetection strategies.Jacob MooreJacob Moorehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/412In imstkPbdCollisionHandling, getEdge() with cell ID causes a crash.2022-07-12T02:17:41-04:00Shreeraj JadhavIn imstkPbdCollisionHandling, getEdge() with cell ID causes a crash.Inside imstkPbdCollisionHandling.cpp, the [`getEdge()`](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/CollisionHandling/imstkPbdCollisionHandling.cpp#L81) function is called when constructing Edge related constraints. The f...Inside imstkPbdCollisionHandling.cpp, the [`getEdge()`](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/CollisionHandling/imstkPbdCollisionHandling.cpp#L81) function is called when constructing Edge related constraints. The function `getEdge()` expects a cell ID if `idCount == 1` and tries to access `side.m_indicesPtr` which is explicitly assigned as nullptr [here](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/CollisionHandling/imstkPbdCollisionHandling.cpp#L417) and [here](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/CollisionHandling/imstkPbdCollisionHandling.cpp#L423).https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/439Pbd Collision Benchmark2022-08-09T11:23:22-04:00Andrew WilsonPbd Collision BenchmarkA pbd collision benchmark could be really useful. I have, at many points, wanted to know if changes to code effected performance. But not all of our examples are representation of full usage as they don't produce many contacts.A pbd collision benchmark could be really useful. I have, at many points, wanted to know if changes to code effected performance. But not all of our examples are representation of full usage as they don't produce many contacts.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/249PBD collision simulation is sensitive to the timestep2021-08-05T21:02:00-04:00Sreekanth ArikatlaPBD collision simulation is sensitive to the timestephttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/280PbdObject-CollidingObject Collision2021-08-05T21:02:51-04:00Andrew WilsonPbdObject-CollidingObject CollisionCurrently PbdObject only can collide with other PbdObjects whose masses are set to 0 for static collision. But it should be able to collide with CollidingObject.Currently PbdObject only can collide with other PbdObjects whose masses are set to 0 for static collision. But it should be able to collide with CollidingObject.Andrew WilsonAndrew Wilsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/281RbdObject2-CollidingObject Collision2021-03-16T18:53:14-04:00Andrew WilsonRbdObject2-CollidingObject CollisionCurrently for rigid object collision in RigidBodyModel2 both objects need to be of type RbdObject2. But one way collision should be supported through CollidingObject.Currently for rigid object collision in RigidBodyModel2 both objects need to be of type RbdObject2. But one way collision should be supported through CollidingObject.Andrew WilsonAndrew Wilsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/421SurfaceMeshToCapsuleCD Uncovered Cases2022-07-26T20:03:04-04:00Andrew WilsonSurfaceMeshToCapsuleCD Uncovered CasesTwo cases I know of aren't covered with triangle to capsule. Documenting that issue here.
1. When the capsule is completely inside the triangle. It does *sometimes* generate data, but it's not the correct/expected manifold that would gi...Two cases I know of aren't covered with triangle to capsule. Documenting that issue here.
1. When the capsule is completely inside the triangle. It does *sometimes* generate data, but it's not the correct/expected manifold that would give good behavior.
2. When the triangles edge is in contact along the lengthwise portion of a capsule, a point contact is produced instead of an edge. This one isn't as critical as a point contact here gives ok behaviour.Jacob MooreJacob Moorehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/251Triangle Index Ordering Issue2020-04-10T00:34:53-04:00Andrew WilsonTriangle Index Ordering IssueTriangle index orders such as {a,b,c} should flip the face when permuted to {b,a,c}. They should also flip when permuted to {c,b,a}. The latter doesn't work and produces the wrong visual (it's unclear if this effects the collision or any...Triangle index orders such as {a,b,c} should flip the face when permuted to {b,a,c}. They should also flip when permuted to {c,b,a}. The latter doesn't work and produces the wrong visual (it's unclear if this effects the collision or any other part of the physics pipeline that relies on correct winding orders but I think it might).