6 #ifndef CNOID_BODY_BODY_H 7 #define CNOID_BODY_BODY_H 34 virtual Body* clone()
const;
36 virtual Link* createLink(
const Link* org = 0)
const;
40 const std::string& name()
const;
41 void setName(
const std::string& name);
42 const std::string& modelName()
const;
43 void setModelName(
const std::string& name);
45 void setRootLink(
Link* link);
50 void updateLinkTree();
52 void initializeState();
64 return numActualJoints;
73 return jointIdToLinkArray.size() - numActualJoints;
80 return jointIdToLinkArray.size();
91 return jointIdToLinkArray[id];
99 return linkTraverse_.numLinks();
108 return linkTraverse_.link(index);
115 return linkTraverse_;
122 Link* link(
const std::string& name)
const;
132 return devices_.size();
151 template<
class DeviceType> DeviceType*
findDevice(
const std::string& name)
const {
152 return dynamic_cast<DeviceType*
>(findDeviceSub(name));
156 return findDeviceSub(name);
159 void addDevice(
Device* device);
160 void initializeDeviceStates();
167 return isStaticModel_;
170 return rootLink_->isFixedJoint();
173 void resetDefaultPosition(
const Position& T);
178 const Vector3& calcCenterOfMass();
179 const Vector3& centerOfMass()
const;
184 linkTraverse_.calcForwardKinematics(calcVelocity, calcAcceleration);
187 void clearExternalForces();
210 template<
class T> T*
findCache(
const std::string& name) {
211 return dynamic_cast<T*
>(findCacheSub(name));
214 template<
class T>
const T*
findCache(
const std::string& name)
const {
215 return dynamic_cast<const T*
>(findCacheSub(name));
219 T* cache = findCache<T>(name);
222 insertCache(name, cache);
229 void removeCache(
const std::string& name);
231 BodyCustomizerHandle customizerHandle()
const;
234 bool installCustomizer();
237 bool hasVirtualJointForces()
const;
238 void setVirtualJointForces();
240 static void addCustomizerDirectory(
const std::string& path);
244 void copy(
const Body& org);
250 std::vector<LinkPtr> jointIdToLinkArray;
253 std::vector<ExtraJoint> extraJoints_;
257 Link* cloneLinkTree(
const Link* orgLink);
258 Link* createEmptyJoint(
int jointId);
259 Device* findDeviceSub(
const std::string& name)
const;
260 Referenced* findCacheSub(
const std::string& name);
261 const Referenced* findCacheSub(
const std::string& name)
const;
262 void insertCache(
const std::string& name,
Referenced* cache);
263 void setVirtualJointForcesSub();
bool isStaticModel() const
Definition: Body.h:166
Link * rootLink() const
Definition: Body.h:127
int numExtraJoints() const
Definition: Body.h:198
The header file of the LinkTraverse class.
Device * findDevice(const std::string &name) const
Definition: Body.h:155
ExtraJoint & extraJoint(int index)
Definition: Body.h:199
DeviceList< DeviceType > devices() const
Definition: Body.h:147
ExtraJointType
Definition: Body.h:189
bool isFixedRootModel() const
Definition: Body.h:169
Definition: ValueTree.h:224
void calcForwardKinematics(bool calcVelocity=false, bool calcAcceleration=false)
Definition: Body.h:183
Link * link(int index) const
Definition: Body.h:107
const LinkTraverse & linkTraverse() const
Definition: Body.h:114
int numJoints() const
Definition: Body.h:63
Definition: Referenced.h:67
T * getOrCreateCache(const std::string &name)
Definition: Body.h:218
void addExtraJoint(const ExtraJoint &extraJoint)
Definition: Body.h:201
int numDevices() const
Definition: Body.h:131
int numLinks() const
Definition: Body.h:98
const Position & defaultPosition() const
Definition: Body.h:174
void * BodyCustomizerHandle
Definition: Body.h:22
Definition: SceneGraph.h:56
DeviceType * findDevice(const std::string &name) const
Definition: Body.h:151
const ExtraJoint & extraJoint(int index) const
Definition: Body.h:200
Definition: BodyCustomizerInterface.h:53
Eigen::Transform< double, 3, Eigen::AffineCompact > Position
Definition: EigenTypes.h:73
void clearExtraJoints()
Definition: Body.h:202
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Definition: LinkTraverse.h:17
Definition: PolymorphicReferencedArray.h:14
ref_ptr< Body > BodyPtr
Definition: Body.h:25
ExtraJointType type
Definition: Body.h:192
Link * joint(int id) const
Definition: Body.h:90
const DeviceList & devices() const
Definition: Body.h:143
Definition: BodyCustomizerInterface.h:26
const T * findCache(const std::string &name) const
Definition: Body.h:214
Eigen::Vector3d Vector3
Definition: EigenTypes.h:58
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
T * findCache(const std::string &name)
Definition: Body.h:210
int numVirtualJoints() const
Definition: Body.h:72
Definition: DeviceList.h:16
Device * device(int index) const
Definition: Body.h:135
int numAllJoints() const
Definition: Body.h:79
Vector3 axis
Definition: Body.h:193