Robot/App/kdl_cp/Segment.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "segment.hpp"
00021
00022 namespace KDL {
00023
00024 Segment::Segment(const std::string& _name, const Joint& _joint, const Frame& _f_tip, const RigidBodyInertia& _I):
00025 name(_name),
00026 joint(_joint),I(_I),
00027 f_tip(_joint.pose(0).Inverse() * _f_tip)
00028 {
00029 }
00030
00031 Segment::Segment(const Joint& _joint, const Frame& _f_tip, const RigidBodyInertia& _I):
00032 name("NoName"),
00033 joint(_joint),I(_I),
00034 f_tip(_joint.pose(0).Inverse() * _f_tip)
00035 {
00036 }
00037
00038 Segment::Segment(const Segment& in):
00039 name(in.name),joint(in.joint),I(in.I),
00040 f_tip(in.f_tip)
00041 {
00042 }
00043
00044 Segment& Segment::operator=(const Segment& arg)
00045 {
00046 name=arg.name;
00047 joint=arg.joint;
00048 I=arg.I;
00049 f_tip=arg.f_tip;
00050 return *this;
00051 }
00052
00053 Segment::~Segment()
00054 {
00055 }
00056
00057 Frame Segment::pose(const double& q)const
00058 {
00059 return joint.pose(q)*f_tip;
00060 }
00061
00062 Twist Segment::twist(const double& q, const double& qdot)const
00063 {
00064 return joint.twist(qdot).RefPoint(joint.pose(q).M * f_tip.p);
00065 }
00066
00067 }
00068