Skip to content

Commit 631b001

Browse files
Add setLimits to forward and inverse kinematics
1 parent e0de5be commit 631b001

18 files changed

+297
-82
lines changed

tesseract/tesseract_kinematics/include/tesseract_kinematics/core/forward_kinematics.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class ForwardKinematics
150150
* @brief Setter for kinematic limits (joint, velocity, acceleration, etc.)
151151
* @param Kinematic Limits
152152
*/
153-
// virtual void setLimits(tesseract_common::KinematicLimits& limits) = 0;
153+
virtual void setLimits(tesseract_common::KinematicLimits limits) = 0;
154154

155155
/**
156156
* @brief Number of joints in robot

tesseract/tesseract_kinematics/include/tesseract_kinematics/core/inverse_kinematics.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ class InverseKinematics
124124
* @brief Setter for kinematic limits (joint, velocity, acceleration, etc.)
125125
* @param Kinematic Limits
126126
*/
127-
// virtual void setLimits(tesseract_common::KinematicLimits& limits) = 0;
127+
virtual void setLimits(tesseract_common::KinematicLimits limits) = 0;
128128

129129
/**
130130
* @brief Number of joints in robot

tesseract/tesseract_kinematics/include/tesseract_kinematics/core/rep_inverse_kinematics.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ class RobotWithExternalPositionerInvKin : public InverseKinematics
8282

8383
const tesseract_common::KinematicLimits& getLimits() const override;
8484

85+
void setLimits(tesseract_common::KinematicLimits limits) override;
86+
8587
tesseract_scene_graph::SceneGraph::ConstPtr getSceneGraph() const;
8688
unsigned int numJoints() const override;
8789
const std::string& getBaseLinkName() const override;

tesseract/tesseract_kinematics/include/tesseract_kinematics/core/rop_inverse_kinematics.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ class RobotOnPositionerInvKin : public InverseKinematics
8080

8181
const tesseract_common::KinematicLimits& getLimits() const override;
8282

83+
void setLimits(tesseract_common::KinematicLimits limits) override;
84+
8385
tesseract_scene_graph::SceneGraph::ConstPtr getSceneGraph() const;
8486
unsigned int numJoints() const override;
8587
const std::string& getBaseLinkName() const override;

tesseract/tesseract_kinematics/include/tesseract_kinematics/ikfast/ikfast_inv_kin.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ class IKFastInvKin : public InverseKinematics
113113
const std::vector<std::string>& getLinkNames() const override;
114114
const std::vector<std::string>& getActiveLinkNames() const;
115115
const tesseract_common::KinematicLimits& getLimits() const override;
116+
void setLimits(tesseract_common::KinematicLimits limits) override;
116117
const std::string& getBaseLinkName() const override;
117118
const std::string& getTipLinkName() const override;
118119
const std::string& getName() const override;

tesseract/tesseract_kinematics/include/tesseract_kinematics/ikfast/impl/ikfast_inv_kin.hpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,17 @@ const std::vector<std::string>& IKFastInvKin::getJointNames() const { return joi
191191
const std::vector<std::string>& IKFastInvKin::getLinkNames() const { return link_names_; }
192192
const std::vector<std::string>& IKFastInvKin::getActiveLinkNames() const { return active_link_names_; }
193193
const tesseract_common::KinematicLimits& IKFastInvKin::getLimits() const { return limits_; }
194+
195+
void IKFastInvKin:: ::setLimits(tesseract_common::KinematicLimits limits)
196+
{
197+
unsigned int nj = numJoints();
198+
if (limits.joint_limits.size() != nj || limits.velocity_limits.size() != nj ||
199+
limits.acceleration_limits.size() != nj)
200+
throw std::runtime_error("Kinematics limits assigned are invalid!");
201+
202+
limits_ = std::move(limits);
203+
}
204+
194205
const std::string& IKFastInvKin::getBaseLinkName() const { return base_link_name_; }
195206
const std::string& IKFastInvKin::getTipLinkName() const { return tip_link_name_; }
196207
const std::string& IKFastInvKin::getName() const { return name_; }

tesseract/tesseract_kinematics/include/tesseract_kinematics/kdl/kdl_fwd_kin_chain.h

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,19 @@ class KDLFwdKinChain : public ForwardKinematics
9494

9595
const tesseract_common::KinematicLimits& getLimits() const override;
9696

97-
tesseract_scene_graph::SceneGraph::ConstPtr getSceneGraph() const { return scene_graph_; }
98-
unsigned int numJoints() const override { return kdl_data_.robot_chain.getNrOfJoints(); }
99-
const std::string& getBaseLinkName() const override { return kdl_data_.base_name; }
100-
const std::string& getTipLinkName() const override { return kdl_data_.tip_name; }
101-
const std::string& getName() const override { return name_; }
102-
const std::string& getSolverName() const override { return solver_name_; }
97+
void setLimits(tesseract_common::KinematicLimits limits) override;
98+
99+
unsigned int numJoints() const override;
100+
101+
const std::string& getBaseLinkName() const override;
102+
103+
const std::string& getTipLinkName() const override;
104+
105+
const std::string& getName() const override;
106+
107+
const std::string& getSolverName() const override;
108+
109+
tesseract_scene_graph::SceneGraph::ConstPtr getSceneGraph() const;
103110

104111
/**
105112
* @brief Initializes Forward Kinematics as chain

tesseract/tesseract_kinematics/include/tesseract_kinematics/kdl/kdl_fwd_kin_tree.h

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,19 @@ class KDLFwdKinTree : public ForwardKinematics
9292

9393
const tesseract_common::KinematicLimits& getLimits() const override;
9494

95-
tesseract_scene_graph::SceneGraph::ConstPtr getSceneGraph() const { return scene_graph_; }
96-
unsigned int numJoints() const override { return static_cast<unsigned>(joint_list_.size()); }
97-
const std::string& getBaseLinkName() const override { return scene_graph_->getRoot(); }
98-
const std::string& getTipLinkName() const override
99-
{
100-
return link_list_.back();
101-
} // TODO: Should make this be
102-
// provided
103-
const std::string& getName() const override { return name_; }
104-
const std::string& getSolverName() const override { return solver_name_; }
95+
void setLimits(tesseract_common::KinematicLimits limits) override;
96+
97+
unsigned int numJoints() const override;
98+
99+
const std::string& getBaseLinkName() const override;
100+
101+
const std::string& getTipLinkName() const override; // TODO: Should make this be provided
102+
103+
const std::string& getName() const override;
104+
105+
const std::string& getSolverName() const override;
106+
107+
tesseract_scene_graph::SceneGraph::ConstPtr getSceneGraph() const;
105108

106109
/**
107110
* @brief Initializes Forward Kinematics as tree
@@ -121,15 +124,7 @@ class KDLFwdKinTree : public ForwardKinematics
121124
* @brief Checks if kinematics has been initialized
122125
* @return True if init() has completed successfully
123126
*/
124-
bool checkInitialized() const
125-
{
126-
if (!initialized_)
127-
{
128-
CONSOLE_BRIDGE_logError("Kinematics has not been initialized!");
129-
}
130-
131-
return initialized_;
132-
}
127+
bool checkInitialized() const;
133128

134129
private:
135130
bool initialized_{ false }; /**< Identifies if the object has been initialized */

tesseract/tesseract_kinematics/include/tesseract_kinematics/kdl/kdl_inv_kin_chain_lma.h

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,19 @@ class KDLInvKinChainLMA : public InverseKinematics
8282

8383
const tesseract_common::KinematicLimits& getLimits() const override;
8484

85-
tesseract_scene_graph::SceneGraph::ConstPtr getSceneGraph() const { return scene_graph_; }
86-
unsigned int numJoints() const override { return kdl_data_.robot_chain.getNrOfJoints(); }
87-
const std::string& getBaseLinkName() const override { return kdl_data_.base_name; }
88-
const std::string& getTipLinkName() const override { return kdl_data_.tip_name; }
89-
const std::string& getName() const override { return name_; }
90-
const std::string& getSolverName() const override { return solver_name_; }
85+
void setLimits(tesseract_common::KinematicLimits limits) override;
86+
87+
unsigned int numJoints() const override;
88+
89+
const std::string& getBaseLinkName() const override;
90+
91+
const std::string& getTipLinkName() const override;
92+
93+
const std::string& getName() const override;
94+
95+
const std::string& getSolverName() const override;
96+
97+
tesseract_scene_graph::SceneGraph::ConstPtr getSceneGraph() const;
9198

9299
/**
93100
* @brief Initializes Inverse Kinematics as chain
@@ -119,15 +126,7 @@ class KDLInvKinChainLMA : public InverseKinematics
119126
* @brief Checks if kinematics has been initialized
120127
* @return True if init() has completed successfully
121128
*/
122-
bool checkInitialized() const
123-
{
124-
if (!initialized_)
125-
{
126-
CONSOLE_BRIDGE_logError("Kinematics has not been initialized!");
127-
}
128-
129-
return initialized_;
130-
}
129+
bool checkInitialized() const;
131130

132131
private:
133132
bool initialized_{ false }; /**< Identifies if the object has been initialized */

tesseract/tesseract_kinematics/include/tesseract_kinematics/kdl/kdl_inv_kin_chain_nr.h

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,19 @@ class KDLInvKinChainNR : public InverseKinematics
8484

8585
const tesseract_common::KinematicLimits& getLimits() const override;
8686

87-
tesseract_scene_graph::SceneGraph::ConstPtr getSceneGraph() const { return scene_graph_; }
88-
unsigned int numJoints() const override { return kdl_data_.robot_chain.getNrOfJoints(); }
89-
const std::string& getBaseLinkName() const override { return kdl_data_.base_name; }
90-
const std::string& getTipLinkName() const override { return kdl_data_.tip_name; }
91-
const std::string& getName() const override { return name_; }
92-
const std::string& getSolverName() const override { return solver_name_; }
87+
void setLimits(tesseract_common::KinematicLimits limits) override;
88+
89+
unsigned int numJoints() const override;
90+
91+
const std::string& getBaseLinkName() const override;
92+
93+
const std::string& getTipLinkName() const override;
94+
95+
const std::string& getName() const override;
96+
97+
const std::string& getSolverName() const override;
98+
99+
tesseract_scene_graph::SceneGraph::ConstPtr getSceneGraph() const;
93100

94101
/**
95102
* @brief Initializes KDL Forward Kinematics
@@ -121,15 +128,7 @@ class KDLInvKinChainNR : public InverseKinematics
121128
* @brief Checks if kinematics has been initialized
122129
* @return True if init() has completed successfully
123130
*/
124-
bool checkInitialized() const
125-
{
126-
if (!initialized_)
127-
{
128-
CONSOLE_BRIDGE_logError("Kinematics has not been initialized!");
129-
}
130-
131-
return initialized_;
132-
}
131+
bool checkInitialized() const;
133132

134133
private:
135134
bool initialized_{ false }; /**< Identifies if the object has been initialized */

0 commit comments

Comments
 (0)