6 #ifndef CNOID_POSE_SEQ_PLUGIN_POSE_H 7 #define CNOID_POSE_SEQ_PLUGIN_POSE_H 32 virtual bool restore(
const Mapping& archive,
const BodyPtr body) = 0;
33 virtual void store(
Mapping& archive,
const BodyPtr body)
const = 0;
39 inline const std::string&
name()
const {
46 int seqLocalReferenceCounter;
56 inline JointInfo() : isValid(
false), isStationaryPoint(
false) { }
59 bool isStationaryPoint;
73 isStationaryPoint_(false),
83 partingDirection_ = partingDirection;
86 inline bool isSlave()
const {
return isSlave_; }
87 inline void setSlave(
bool on) { isSlave_ = on; }
91 bool isStationaryPoint_;
112 virtual bool hasSameParts(PoseUnitPtr unit);
118 jointInfos.resize(n);
122 return jointInfos.size();
126 if(jointId >= (
int)jointInfos.size()){
127 setNumJoints(jointId + 1);
129 JointInfo& info = jointInfos[jointId];
135 return jointInfos[jointId].q;
139 if(jointId < 0 || jointId >= (
int)jointInfos.size()){
142 return jointInfos[jointId].isValid;
146 if(jointId >= (
int)jointInfos.size()){
147 setNumJoints(jointId + 1);
149 jointInfos[jointId].isStationaryPoint = on;
153 if(jointId >= (
int)jointInfos.size()){
156 return jointInfos[jointId].isStationaryPoint;
160 if(jointId < (
int)jointInfos.size()){
161 if(jointInfos[jointId].isValid){
162 jointInfos[jointId].isValid =
false;
172 return ikLinks.size();
176 return &ikLinks[linkIndex];
179 bool removeIkLink(
int linkIndex);
182 LinkInfoMap::const_iterator p = ikLinks.find(linkIndex);
183 return (p != ikLinks.end()) ? &p->second : 0;
187 LinkInfoMap::iterator p = ikLinks.find(linkIndex);
188 return (p != ikLinks.end()) ? &p->second : 0;
191 inline LinkInfoMap::iterator
ikLinkBegin() {
return ikLinks.begin(); }
192 inline const LinkInfoMap::const_iterator
ikLinkBegin()
const {
return ikLinks.begin(); }
193 inline LinkInfoMap::iterator
ikLinkEnd() {
return ikLinks.end(); }
194 inline const LinkInfoMap::const_iterator
ikLinkEnd()
const {
return ikLinks.end(); }
196 LinkInfo& setBaseLink(
int linkIndex);
199 LinkInfo& info = setBaseLink(linkIndex);
206 return (baseLinkIter != ikLinks.end()) ? baseLinkIter->first : -1;
210 return (baseLinkIter != ikLinks.end()) ? &baseLinkIter->second : 0;
214 if(baseLinkIter != ikLinks.end()){
215 baseLinkIter->second.isBaseLink_ =
false;
216 baseLinkIter = ikLinks.end();
234 bool ret = isZmpValid_;
240 isZmpStationaryPoint_ = on;
244 return isZmpStationaryPoint_;
249 std::vector<JointInfo> jointInfos;
251 LinkInfoMap::iterator baseLinkIter;
254 bool isZmpStationaryPoint_;
255 void initializeMembers();
bool isStationaryPoint() const
Definition: Pose.h:78
int numJoints() const
Definition: Pose.h:121
void setJointStationaryPoint(int jointId, bool on=true)
Definition: Pose.h:145
const LinkInfoMap::const_iterator ikLinkEnd() const
Definition: Pose.h:194
void setJointPosition(int jointId, double q)
Definition: Pose.h:125
bool isBaseLink() const
Definition: Pose.h:76
Definition: ValueTree.h:224
LinkInfoMap::iterator ikLinkEnd()
Definition: Pose.h:193
ref_ptr< PoseUnit > PoseUnitPtr
Definition: Pose.h:19
void setSlave(bool on)
Definition: Pose.h:87
LinkInfo()
Definition: Pose.h:71
Definition: Referenced.h:67
bool invalidateJoint(int jointId)
Definition: Pose.h:159
LinkInfo * baseLinkInfo()
Definition: Pose.h:209
void invalidateBaseLink()
Definition: Pose.h:213
ref_ptr< Pose > PosePtr
Definition: Pose.h:258
void setZmpStationaryPoint(bool on=true)
Definition: Pose.h:239
LinkInfo & setBaseLink(int linkIndex, const Vector3 &p, const Matrix3 &R)
Definition: Pose.h:198
bool invalidateZmp()
Definition: Pose.h:233
size_t numIkLinks()
Definition: Pose.h:171
const Vector3 & partingDirection() const
Definition: Pose.h:80
Matrix3 R
Definition: Pose.h:69
bool isZmpValid() const
Definition: Pose.h:229
bool isJointValid(int jointId) const
Definition: Pose.h:138
bool isTouching() const
Definition: Pose.h:79
const LinkInfoMap::const_iterator ikLinkBegin() const
Definition: Pose.h:192
bool isZmpStationaryPoint() const
Definition: Pose.h:243
double jointPosition(int jointId) const
Definition: Pose.h:134
void setZmp(const Vector3 &p)
Definition: Pose.h:220
LinkInfoMap::iterator ikLinkBegin()
Definition: Pose.h:191
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
void setNumJoints(int n)
Definition: Pose.h:117
int baseLinkIndex() const
Definition: Pose.h:205
void setTouching(const Vector3 &partingDirection)
Definition: Pose.h:81
Eigen::Vector3d Vector3
Definition: EigenTypes.h:58
virtual bool hasSameParts(PoseUnitPtr unit)
Definition: Pose.h:34
LinkInfo * ikLinkInfo(int linkIndex)
Definition: Pose.h:186
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
LinkInfo * addIkLink(int linkIndex)
Definition: Pose.h:175
bool isSlave() const
Definition: Pose.h:86
const Vector3 zmp() const
Definition: Pose.h:225
bool isJointStationaryPoint(int jointId) const
Definition: Pose.h:152
const std::string & name() const
Definition: Pose.h:39
void clearTouching()
Definition: Pose.h:85
const LinkInfo * ikLinkInfo(int linkIndex) const
Definition: Pose.h:181
std::map< int, LinkInfo > LinkInfoMap
Definition: Pose.h:98
void setStationaryPoint(bool on)
Definition: Pose.h:77
Eigen::Matrix3d Matrix3
Definition: EigenTypes.h:57
Vector3 p
Definition: Pose.h:68