54 const std::string& elementName = GetTreeElementSegment(element->second).getName();
56 rootName = elementName;
59 std::vector<KDL::SegmentMap::const_iterator> children = GetTreeElementChildren(element->second);
60 for (
unsigned int i = 0; i < children.size(); i++) {
62 const KDL::SegmentMap::const_iterator child = children[i];
65 tree_.getChain(rootName, child->second.segment.getName(), chain);
67 tf::Transform T_root_element = tf::Transform::getIdentity();
68 for (
int i = 0; i < chain.getNrOfSegments(); ++i) {
69 KDL::Frame frameToRoot = chain.getSegment(i).getFrameToTip();
71 frameToRoot.M.GetQuaternion(x, y, z, w);
72 tf::Quaternion q(x, y, z, w);
73 tf::Vector3 t(frameToRoot.p[0], frameToRoot.p[1], frameToRoot.p[2]);
74 T_root_element = T_root_element * tf::Transform(q, t);
77 ElementToRoot elementToRoot(T_root_element, rootName, child->second.segment.getName());
79 segments_.insert(std::make_pair(child->second.segment.getName(), elementToRoot));
87 tf_T.setOrigin(tf::Vector3(k.p.x(), k.p.y(), k.p.z()));
88 double qx, qy, qz, qw;
89 k.M.GetQuaternion(qx, qy, qz, qw);
90 tf_T.setRotation(tf::Quaternion(qx, qy, qz, qw));