16class RBY1_SDK_API
Joint :
public std::enable_shared_from_this<Joint> {
21 static std::shared_ptr<Joint> Make(std::string name, math::se3v::MatrixType S);
23 static std::shared_ptr<Joint> MakeRevoluteJoint(std::string name,
24 const math::SE3::MatrixType& T = math::SE3::Identity(),
25 const Eigen::Vector3d& axis = {0, 0, 1});
27 static std::shared_ptr<Joint> MakePrismaticJoint(std::string name,
28 const math::SE3::MatrixType& T = math::SE3::Identity(),
29 const Eigen::Vector3d& axis = {0, 0, 1});
31 static std::shared_ptr<Joint> MakeFixedJoint(std::string name);
33 std::string GetName()
const;
35 void ConnectLinks(
const std::shared_ptr<Link>& parent_link,
const std::shared_ptr<Link>& child_link,
36 const math::SE3::MatrixType& T_pj = math::SE3::Identity(),
37 const math::SE3::MatrixType& T_jc = math::SE3::Identity());
41 void SetLimitQ(
double lower,
double upper);
43 void SetLimitQdot(
double lower,
double upper);
45 void SetLimitQddot(
double lower,
double upper);
47 void SetLimitTorque(
double value);
49 double GetLimitQLower()
const;
51 double GetLimitQUpper()
const;
53 double GetLimitQdotLower()
const;
55 double GetLimitQdotUpper()
const;
57 double GetLimitQddotLower()
const;
59 double GetLimitQddotUpper()
const;
61 double GetLimitTorque()
const;
63 void SetLimitQLower(
double val);
65 void SetLimitQUpper(
double val);
67 void SetLimitQdotLower(
double val);
69 void SetLimitQdotUpper(
double val);
71 void SetLimitQddotLower(
double val);
73 void SetLimitQddotUpper(
double val);
75 std::weak_ptr<const Link> GetParentLink()
const;
77 std::weak_ptr<Link> GetParentLink();
79 std::shared_ptr<Link> GetChildLink();
81 std::shared_ptr<const Link> GetChildLink()
const;
86 explicit Joint(std::string name);
88 Joint(std::string name, math::se3v::MatrixType S);
93 math::se3v::MatrixType S_;
94 double limit_torque_{(std::numeric_limits<double>::max)()};
95 double limit_q_lower_{-(std::numeric_limits<double>::max)()};
96 double limit_q_upper_{(std::numeric_limits<double>::max)()};
97 double limit_qdot_lower_{-(std::numeric_limits<double>::max)()};
98 double limit_qdot_upper_{(std::numeric_limits<double>::max)()};
101 double limit_qddot_lower_{-10.};
102 double limit_qddot_upper_{10.};
104 std::weak_ptr<Link> parent_link_;
105 std::shared_ptr<Link> child_link_{
nullptr};
106 math::SE3::MatrixType T_pj_, T_jc_;