17 #ifndef _JOINTCONTROLLER_HH_ 
   18 #define _JOINTCONTROLLER_HH_ 
   58         const std::string &_name, 
double _position, 
int _index = 0);
 
   63                   const std::map<std::string, double> &_jointPositions);
 
   67       private: 
void OnJointCmd(ConstJointCmdPtr &_msg);
 
   86         JointPtr _joint, 
double _position, 
int _index = 0);
 
   97                    double _dposition, 
bool _updateChildren = 
false);
 
  101       private: 
void ComputeAndSetLinkTwist(
LinkPtr _link,
 
  108       private: 
void AddConnectedLinks(std::vector<LinkPtr> &_linksOut,
 
  110                                       bool _checkParentTree = 
false);
 
  115       private: 
template<
class InputVector, 
class T>
 
  116                  bool ContainsLink(InputVector _vector, 
const T &_value)
 
  118                    typename InputVector::iterator iter = _vector.begin();
 
  119                    for (; iter != _vector.end(); ++iter)
 
  120                      if ((*iter)->GetScopedName() == _value->GetScopedName())
 
  129       private: 
Link_V updatedLinks;
 
  132       private: std::map<std::string, JointPtr> joints;
 
  135       private: std::map<std::string, common::PID> posPids;
 
  138       private: std::map<std::string, common::PID> velPids;
 
  141       private: std::map<std::string, double> forces;
 
  144       private: std::map<std::string, double> positions;
 
  147       private: std::map<std::string, double> velocities;