Go to the documentation of this file.
31 #ifndef TESSERACT_STATE_SOLVER_OFKT_NODES_H
32 #define TESSERACT_STATE_SOLVER_OFKT_NODES_H
45 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
52 std::string link_name,
53 std::string joint_name,
54 const Eigen::Isometry3d& static_tf);
86 const std::vector<const OFKTNode*>&
getChildren()
const override;
93 Eigen::Isometry3d
static_tf_{ Eigen::Isometry3d::Identity() };
94 Eigen::Isometry3d
joint_tf_{ Eigen::Isometry3d::Identity() };
95 Eigen::Isometry3d
local_tf_{ Eigen::Isometry3d::Identity() };
96 Eigen::Isometry3d
world_tf_{ Eigen::Isometry3d::Identity() };
97 Eigen::Matrix<double, 6, 1>
local_twist_{ Eigen::VectorXd::Zero(6) };
117 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
146 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
149 OFKTFixedNode(
OFKTNode* parent, std::string link_name, std::string joint_name,
const Eigen::Isometry3d& static_tf);
168 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
171 OFKTFloatingNode(
OFKTNode* parent, std::string link_name, std::string joint_name,
const Eigen::Isometry3d& static_tf);
190 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
194 std::string link_name,
195 std::string joint_name,
196 const Eigen::Isometry3d& static_tf,
197 const Eigen::Vector3d& axis);
202 const Eigen::Vector3d&
getAxis()
const;
219 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
223 std::string link_name,
224 std::string joint_name,
225 const Eigen::Isometry3d& static_tf,
226 const Eigen::Vector3d& axis);
230 const Eigen::Vector3d&
getAxis()
const;
247 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
251 std::string link_name,
252 std::string joint_name,
253 const Eigen::Isometry3d& static_tf,
254 const Eigen::Vector3d& axis);
258 const Eigen::Vector3d&
getAxis()
const;
269 #endif // TESSERACT_STATE_SOLVER_OFKT_NODES_H
Eigen::Isometry3d computeLocalTransformation(double joint_value) const override
Compute the local tranformation but do not save.
double getJointValue() const override
Get the current joint value.
Eigen::Isometry3d computeLocalTransformation(double joint_value) const override
Compute the local tranformation but do not save.
std::vector< const OFKTNode * > children_const_
void setStaticTransformation(const Eigen::Isometry3d &static_tf) override
Set the static transformation.
void computeAndStoreLocalTransformation() override
Compute and save the local transformation 'L = S * J(Joint Value)'.
Eigen::Isometry3d joint_tf_
std::vector< OFKTNode * > children_
EIGEN_MAKE_ALIGNED_OPERATOR_NEW OFKTFloatingNode(OFKTNode *parent, std::string link_name, std::string joint_name, const Eigen::Isometry3d &static_tf)
void computeAndStoreLocalTransformation() override
Compute and save the local transformation 'L = S * J(Joint Value)'.
void computeAndStoreWorldTransformation() override
Compute and store the nodes world transformation.
void computeAndStoreLocalTransformationImpl()
Eigen::Isometry3d computeLocalTransformation(double joint_value) const override
Compute the local tranformation but do not save.
void setParent(OFKTNode *parent) override
Set the parent node.
const std::string & getJointName() const override
Get the joint name associated with the node.
bool hasJointValueChanged() const override
Indicates that the joint value has changed and that local and world transformation need to be recompu...
tesseract_scene_graph::JointType type_
Eigen::Isometry3d computeLocalTransformation(double joint_value) const override
Compute the local tranformation but do not save.
void storeJointValue(double joint_value) override
Set the nodes joint value if it has one.
const std::string & getLinkName() const override
Get the link name associated with the node.
Eigen::Matrix< double, 6, 1 > getLocalTwist() const override
Return the twist of the node in its local frame.
Eigen::Isometry3d computeLocalTransformation(double joint_value) const override
Compute the local tranformation but do not save.
const Eigen::Isometry3d & getWorldTransformation() const override
Get the nodes world transformation.
bool update_world_required_
Eigen::Isometry3d static_tf_
void computeAndStoreLocalTransformation() override
Compute and save the local transformation 'L = S * J(Joint Value)'.
EIGEN_MAKE_ALIGNED_OPERATOR_NEW OFKTContinuousNode(OFKTNode *parent, std::string link_name, std::string joint_name, const Eigen::Isometry3d &static_tf, const Eigen::Vector3d &axis)
Eigen::Isometry3d local_tf_
Eigen::Isometry3d computeLocalTransformation(double joint_value) const override
Compute the local tranformation but do not save.
JointType getType() const override
Get the type of joint associated with the node.
OFKTNode * getParent() override
Get the parent node.
EIGEN_MAKE_ALIGNED_OPERATOR_NEW OFKTRootNode(std::string link_name)
This should only be used for the root node of the tree.
const Eigen::Isometry3d & getLocalTransformation() const override
Get the local transformation: 'L = S * J'.
EIGEN_MAKE_ALIGNED_OPERATOR_NEW OFKTRevoluteNode(OFKTNode *parent, std::string link_name, std::string joint_name, const Eigen::Isometry3d &static_tf, const Eigen::Vector3d &axis)
std::vector< OFKTNode * > & getChildren() override
Get a vector of child nodes associated with this node.
EIGEN_MAKE_ALIGNED_OPERATOR_NEW OFKTFixedNode(OFKTNode *parent, std::string link_name, std::string joint_name, const Eigen::Isometry3d &static_tf)
const Eigen::Vector3d & getAxis() const
EIGEN_MAKE_ALIGNED_OPERATOR_NEW OFKTBaseNode(JointType type, OFKTNode *parent, std::string link_name)
bool updateWorldTransformationRequired() const override
Indicates if an update of the world transformation is required.
void computeAndStoreLocalTransformation() override
Compute and save the local transformation 'L = S * J(Joint Value)'.
double getJointValue() const override
Get the current joint value.
The OFKT node is contains multiple trasformation which are described below.
Eigen::Isometry3d world_tf_
void removeChild(const OFKTNode *node) override
Remove a child node assiciated with this node.
bool joint_value_changed_
double getJointValue() const override
Get the current joint value.
An implementation of the Optimized Forward Kinematic Tree as a stat solver.
void computeAndStoreLocalTransformationImpl()
void computeAndStoreLocalTransformation() override
Compute and save the local transformation 'L = S * J(Joint Value)'.
EIGEN_MAKE_ALIGNED_OPERATOR_NEW OFKTPrismaticNode(OFKTNode *parent, std::string link_name, std::string joint_name, const Eigen::Isometry3d &static_tf, const Eigen::Vector3d &axis)
Eigen::Matrix< double, 6, 1 > local_twist_
void setStaticTransformation(const Eigen::Isometry3d &static_tf) override
Set the static transformation.
const Eigen::Vector3d & getAxis() const
const Eigen::Vector3d & getAxis() const
void addChild(OFKTNode *node) override
Add a child node.
void computeAndStoreLocalTransformationImpl()
void storeJointValue(double joint_value) override
Set the nodes joint value if it has one.
void storeJointValue(double joint_value) override
Set the nodes joint value if it has one.
A implementation of the Optimized Forward Kinematic Tree Node.
const Eigen::Isometry3d & getStaticTransformation() const override
Get the nodes static transformation.
void setStaticTransformation(const Eigen::Isometry3d &static_tf) override
Set the static transformation.
Eigen::Isometry3d computeLocalTransformation(double joint_value) const override
Compute the local tranformation but do not save.
void storeJointValue(double joint_value) override
Set the nodes joint value if it has one.
void storeJointValue(double joint_value) override
Set the nodes joint value if it has one.
void setStaticTransformation(const Eigen::Isometry3d &static_tf) override
Set the static transformation.
void setParent(OFKTNode *parent) override
Set the parent node.
void computeAndStoreWorldTransformation() override
Compute and store the nodes world transformation.
void computeAndStoreLocalTransformation() override
Compute and save the local transformation 'L = S * J(Joint Value)'.
bool updateWorldTransformationRequired() const override
Indicates if an update of the world transformation is required.