1 #ifndef ROBOTICS_STABILITY_H 2 #define ROBOTICS_STABILITY_H 5 #include <KrisLibrary/geometry/UnboundedPolytope2D.h> 6 #include <KrisLibrary/optimization/LinearProgram.h> 7 #include <KrisLibrary/optimization/LPRobust.h> 10 bool TestForceClosure(
const std::vector<ContactPoint>& contacts,
int numFCEdges);
11 bool TestForceClosure(
const std::vector<CustomContactPoint>& contacts);
14 bool TestForceClosure(
const std::vector<ContactPoint2D>& contacts);
15 bool TestForceClosure(
const std::vector<CustomContactPoint2D>& contacts);
19 bool TestCOMEquilibrium(
const std::vector<ContactPoint>& contacts,
const Vector3& fext,
int numFCEdges,
const Vector3& com,std::vector<Vector3>& f);
20 bool TestCOMEquilibrium(
const std::vector<CustomContactPoint>& contacts,
const Vector3& fext,
const Vector3& com,std::vector<Vector3>& f);
23 bool TestAnyCOMEquilibrium(
const std::vector<ContactPoint>& contacts,
const Vector3& fext,
int numFCEdges);
24 bool TestAnyCOMEquilibrium(
const std::vector<CustomContactPoint>& contacts,
const Vector3& fext);
28 bool TestCOMEquilibrium(
const std::vector<ContactPoint2D>& contacts,
const Vector2& fext,
const Vector2& com,std::vector<Vector2>& f);
29 bool TestCOMEquilibrium(
const std::vector<CustomContactPoint2D>& contacts,
const Vector2& fext,
const Vector2& com,std::vector<Vector2>& f);
32 bool TestAnyCOMEquilibrium(
const std::vector<ContactPoint2D>& contacts,
const Vector2& fext);
33 bool TestAnyCOMEquilibrium(
const std::vector<CustomContactPoint2D>& contacts,
const Vector2& fext);
53 void Setup(
const std::vector<ContactPoint>& contacts,
const Vector3& fext,
int numFCEdges,
const Vector3& com);
54 void Setup(
const std::vector<CustomContactPoint>& contacts,
const Vector3& fext,
const Vector3& com);
56 void SetupAnyCOM(
const std::vector<ContactPoint>& contacts,
const Vector3& fext,
int numFCEdges);
59 bool TestCOM(
const std::vector<ContactPoint>& contacts,
const Vector3& fext,
int numFCEdges,
const Vector3& com);
60 bool TestCOM(
const std::vector<CustomContactPoint>& contacts,
const Vector3& fext,
const Vector3& com);
62 bool TestAnyCOM(
const std::vector<ContactPoint>& contacts,
const Vector3& fext,
int numFCEdges);
63 bool TestAnyCOM(
const std::vector<CustomContactPoint>& contacts,
const Vector3& fext);
65 void ChangeContacts(
const std::vector<ContactPoint>& contacts);
67 void ChangeGravity(
const Vector3& fext);
68 void ChangeCOM(
const Vector3& com);
69 void SetRobustnessFactor(Real frobust);
70 void SetRobustnessFactor(
int i,Real frobust);
71 void LimitContactForce(
int i,Real maximum,
const Vector3& dir);
72 void LimitContactForceSum(
const std::vector<int>& indices,Real maximum,
const Vector3& dir);
74 void GetValidCOM(
Vector3& com)
const;
75 void GetForceVector(Vector& f)
const;
76 void GetForces(std::vector<Vector3>& f)
const;
79 int NumContacts()
const;
80 int NumFCEdges()
const;
111 bool Set(
const std::vector<ContactPoint>& contacts,
const Vector3& fext,
int numFCEdges,
int maxExpandDepth=6);
112 bool Set(
const std::vector<CustomContactPoint>& contacts,
const Vector3& fext,
int maxExpandDepth=6);
115 bool TestCOM(
const Vector3& com)
const;
116 Real COMMargin(
const Vector3& com)
const;
120 std::vector<ContactPoint> contacts;
129 bool Set(
const std::vector<ContactPoint>& contacts,
const Vector3& fext,
int numFCEdges);
130 bool Set(
const std::vector<CustomContactPoint>& contacts,
const Vector3& fext);
132 bool TestCOM(
const Vector3& com)
const;
133 Real COMMargin(
const Vector3& com)
const;
void Setup(const std::vector< ContactPoint > &contacts, const Vector3 &fext, int numFCEdges, const Vector3 &com)
Definition: Stability.cpp:757
Linear program definition with sparse matrix A.
Definition: LinearProgram.h:158
A 3D vector class.
Definition: math3d/primitives.h:136
void SetupAnyCOM(const std::vector< ContactPoint > &contacts, const Vector3 &fext, int numFCEdges)
Definition: Stability.cpp:907
A class that tries out as many available routines as possible to solve an LP.
Definition: LPRobust.h:12
A representation of a possibly unbounded polytope in the 2d plane.
Definition: UnboundedPolytope2D.h:17
Testing COM equilibrium given some number of contacts.
Definition: Stability.h:49
Calculation of the support polygon given a number of contacts.
Definition: Stability.h:108
Calculation of a support polygon with a non-vertical gravity vector.
Definition: Stability.h:126
A 2D vector class.
Definition: math3d/primitives.h:41