7 #include "imstkPbdObject.h" 8 #include "imstkPbdRigidObjectGrasping.h" 9 #include "imstkPbdRigidBaryPointToPointConstraint.h" 10 #include "imstkRigidBodyModel2.h" 11 #include "imstkRigidObject2.h" 12 #include "imstkTaskGraph.h" 16 PbdRigidObjectGrasping::PbdRigidObjectGrasping(
17 std::shared_ptr<PbdObject> obj1,
18 std::shared_ptr<RigidObject2> obj2) :
19 PbdObjectGrasping(obj1), m_rbdObj(obj2)
22 m_taskGraph->addNode(obj2->getRigidBodyModel2()->getSolveNode());
29 for (
int i = 0; i < m_constraints.size(); i++)
33 constraint->
compute(m_rbdObj->getRigidBodyModel2()->getConfig()->m_dt);
34 m_rbdObj->getRigidBodyModel2()->addConstraint(constraint);
40 const std::vector<PbdParticleId>& ptsA,
41 const std::vector<double>& weightsA,
42 const std::vector<PbdParticleId>& ptsB,
43 const std::vector<double>& weightsB,
44 double stiffnessA,
double stiffnessB)
47 auto constraint = std::make_shared<PbdRigidBaryPointToPointConstraint>(m_rbdObj->getRigidBody());
48 constraint->initConstraint(
54 m_constraints.push_back(constraint);
62 std::shared_ptr<PbdModel> pbdModel = m_objectToGrasp->getPbdModel();
63 std::shared_ptr<RigidBodyModel2> rbdModel = m_rbdObj->getRigidBodyModel2();
65 m_taskGraph->addEdge(m_pickingNode, rbdModel->getSolveNode());
void updatePicking()
Update picking state, this should move grasp points.
std::shared_ptr< TaskGraph > m_taskGraph
Computational Graph.
void addPointToPointConstraint(const std::vector< PbdParticleId > &ptsA, const std::vector< double > &weightsA, const std::vector< PbdParticleId > &ptsB, const std::vector< double > &weightsB, double stiffnessA, double stiffnessB) override
Add constraint between a point on each element given via barycentric coordinates pt position = weight...
void initGraphEdges()
Initializes the edges of the SceneObject's computational graph.
virtual void updatePicking()
Update picking state, this should move grasp points.
void compute(double dt) override
Compute constraint jacobian.