7 #include <Eigen/StdVector> 11 #include "drake/drakeControlUtil_export.h" 21 typedef struct _support_state_element {
23 std::vector<Eigen::Vector3d, Eigen::aligned_allocator<Eigen::Vector3d>>
25 bool support_logic_map[4];
40 bool kinematic_contact_detected);
42 DRAKECONTROLUTIL_EXPORT Eigen::Matrix<bool, Eigen::Dynamic, 1>
46 Eigen::aligned_allocator<SupportStateElement>> &
48 const Eigen::Ref<
const Eigen::Matrix<bool, Eigen::Dynamic, 1>> &
49 contact_force_detected,
50 double contact_threshold);
52 DRAKECONTROLUTIL_EXPORT std::vector<
55 const RigidBodyTree &r,
const Eigen::VectorXd &q,
const Eigen::VectorXd &qd,
57 Eigen::aligned_allocator<SupportStateElement>> &
59 const Eigen::Ref<
const Eigen::Matrix<bool, Eigen::Dynamic, 1>> &
60 contact_force_detected,
61 double contact_threshold);
63 template <
typename DerivedA,
typename DerivedB>
64 DRAKECONTROLUTIL_EXPORT
void getRows(std::set<int> &rows,
65 Eigen::MatrixBase<DerivedA>
const &M,
66 Eigen::MatrixBase<DerivedB> &Msub);
68 template <
typename DerivedA,
typename DerivedB>
69 DRAKECONTROLUTIL_EXPORT
void getCols(std::set<int> &cols,
70 Eigen::MatrixBase<DerivedA>
const &M,
71 Eigen::MatrixBase<DerivedB> &Msub);
73 template <
typename DerivedPhi1,
typename DerivedPhi2,
typename DerivedD>
75 Eigen::MatrixBase<DerivedPhi1>
const &phi1,
76 Eigen::MatrixBase<DerivedPhi2>
const &phi2, Eigen::MatrixBase<DerivedD> &d);
80 Eigen::aligned_allocator<SupportStateElement>> &supports,
83 const Eigen::Vector3d &normal,
84 Eigen::Matrix<double, 3, m_surface_tangents> &d);
88 Eigen::VectorXd &phi);
91 std::vector<double> support_mus,
93 Eigen::aligned_allocator<SupportStateElement>> &supp,
94 Eigen::MatrixXd &
B, Eigen::MatrixXd &JB, Eigen::MatrixXd &Jp,
95 Eigen::VectorXd &Jpdotv, Eigen::MatrixXd &normals);
99 Eigen::aligned_allocator<SupportStateElement>> &
101 const Eigen::MatrixXd &normals,
const Eigen::MatrixXd &
B,
102 const Eigen::VectorXd &beta);
105 const int body_index,
const Eigen::Isometry3d &body_pose_des,
106 const Eigen::Ref<const Vector6d> &body_v_des,
107 const Eigen::Ref<const Vector6d> &body_vdot_des,
108 const Eigen::Ref<const Vector6d> &Kp,
const Eigen::Ref<const Vector6d> &Kd,
109 const Eigen::Isometry3d &T_task_to_world = Eigen::Isometry3d::Identity());
113 Eigen::Isometry3d &body_pose_des,
Vector6d &xyzdot_angular_vel,
DRAKECONTROLUTIL_EXPORT bool inSupport(const std::vector< SupportStateElement, Eigen::aligned_allocator< SupportStateElement >> &supports, int body_idx)
Definition: controlUtil.cpp:55
std::vector< Eigen::Vector3d, Eigen::aligned_allocator< Eigen::Vector3d > > contact_pts
Definition: controlUtil.h:24
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition: controlUtil.h:28
DRAKECONTROLUTIL_EXPORT void getRobotJointIndexMap(JointNames *joint_names, RobotJointIndexMap *joint_map)
Definition: controlUtil.cpp:475
DRAKECONTROLUTIL_EXPORT void getRows(std::set< int > &rows, Eigen::MatrixBase< DerivedA > const &M, Eigen::MatrixBase< DerivedB > &Msub)
Eigen::Matrix< double, 7, 1 > Vector7d
Definition: controlUtil.h:19
Definition: controlUtil.h:122
DRAKECONTROLUTIL_EXPORT void surfaceTangents(const Eigen::Vector3d &normal, Eigen::Matrix< double, 3, m_surface_tangents > &d)
Eigen::VectorXi drake_to_robot
Definition: controlUtil.h:117
Eigen::VectorXd qd
Definition: controlUtil.h:35
DRAKECONTROLUTIL_EXPORT int contactConstraintsBV(const RigidBodyTree &r, const KinematicsCache< double > &cache, int nc, std::vector< double > support_mus, std::vector< SupportStateElement, Eigen::aligned_allocator< SupportStateElement >> &supp, Eigen::MatrixXd &B, Eigen::MatrixXd &JB, Eigen::MatrixXd &Jp, Eigen::VectorXd &Jpdotv, Eigen::MatrixXd &normals)
DRAKECONTROLUTIL_EXPORT Vector6d bodySpatialMotionPD(const RigidBodyTree &r, const DrakeRobotState &robot_state, const int body_index, const Eigen::Isometry3d &body_pose_des, const Eigen::Ref< const Vector6d > &body_v_des, const Eigen::Ref< const Vector6d > &body_vdot_des, const Eigen::Ref< const Vector6d > &Kp, const Eigen::Ref< const Vector6d > &Kd, const Eigen::Isometry3d &T_task_to_world=Eigen::Isometry3d::Identity())
std::vector< std::string > drake
Definition: controlUtil.h:124
Definition: controlUtil.h:31
DRAKECONTROLUTIL_EXPORT void getCols(std::set< int > &cols, Eigen::MatrixBase< DerivedA > const &M, Eigen::MatrixBase< DerivedB > &Msub)
static double * t
Definition: inverseKinSnoptBackend.cpp:62
DRAKECONTROLUTIL_EXPORT bool isSupportElementActive(SupportStateElement *se, bool contact_force_detected, bool kinematic_contact_detected)
Definition: controlUtil.cpp:234
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition: controlUtil.h:119
DRAKECONTROLUTIL_EXPORT Eigen::MatrixXd individualSupportCOPs(const RigidBodyTree &r, const KinematicsCache< double > &cache, const std::vector< SupportStateElement, Eigen::aligned_allocator< SupportStateElement >> &active_supports, const Eigen::MatrixXd &normals, const Eigen::MatrixXd &B, const Eigen::VectorXd &beta)
const int m_surface_tangents
Definition: controlUtil.h:13
DRAKECONTROLUTIL_EXPORT void evaluateXYZExpmapCubicSpline(double t, const PiecewisePolynomial< double > &spline, Eigen::Isometry3d &body_pose_des, Vector6d &xyzdot_angular_vel, Vector6d &xyzddot_angular_accel)
Eigen::VectorXi robot_to_drake
Definition: controlUtil.h:118
double t
Definition: controlUtil.h:33
Eigen::VectorXd q
Definition: controlUtil.h:34
Eigen::Matrix< double, 6, 1 > Vector6d
Definition: controlUtil.h:18
Definition: controlUtil.h:21
DRAKECONTROLUTIL_EXPORT void angleDiff(Eigen::MatrixBase< DerivedPhi1 > const &phi1, Eigen::MatrixBase< DerivedPhi2 > const &phi2, Eigen::MatrixBase< DerivedD > &d)
DRAKECONTROLUTIL_EXPORT int contactPhi(const RigidBodyTree &r, const KinematicsCache< double > &cache, SupportStateElement &supp, Eigen::VectorXd &phi)
Definition: controlUtil.h:116
DRAKECONTROLUTIL_EXPORT Eigen::Matrix< bool, Eigen::Dynamic, 1 > getActiveSupportMask(RigidBodyTree *r, Eigen::VectorXd q, Eigen::VectorXd qd, std::vector< SupportStateElement, Eigen::aligned_allocator< SupportStateElement >> &available_supports, const Eigen::Ref< const Eigen::Matrix< bool, Eigen::Dynamic, 1 >> &contact_force_detected, double contact_threshold)
std::vector< std::string > robot
Definition: controlUtil.h:123
Definition: RigidBodyTree.h:72
DRAKECONTROLUTIL_EXPORT std::vector< SupportStateElement, Eigen::aligned_allocator< SupportStateElement > > getActiveSupports(const RigidBodyTree &r, const Eigen::VectorXd &q, const Eigen::VectorXd &qd, std::vector< SupportStateElement, Eigen::aligned_allocator< SupportStateElement >> &available_supports, const Eigen::Ref< const Eigen::Matrix< bool, Eigen::Dynamic, 1 >> &contact_force_detected, double contact_threshold)
Eigen::Vector4d support_surface
Definition: controlUtil.h:26
int body_idx
Definition: controlUtil.h:22