22 #ifndef OPENRAVE_KINBODY_H
23 #define OPENRAVE_KINBODY_H
27 class OpenRAVEFunctionParserReal;
50 Prop_JointProperties=0x8,
51 Prop_JointAccelerationVelocityTorqueLimits=0x10,
52 Prop_Joints=Prop_JointMimic|Prop_JointLimits|Prop_JointOffset|Prop_JointProperties|Prop_JointAccelerationVelocityTorqueLimits,
56 Prop_LinkGeometry=0x80,
59 Prop_LinkStatic=0x400,
60 Prop_LinkEnable=0x800,
61 Prop_LinkDynamics=0x1000,
62 Prop_Links=Prop_LinkDraw|Prop_LinkGeometry|Prop_LinkStatic|Prop_LinkEnable|Prop_LinkDynamics,
63 Prop_JointCustomParameters = 0x2000,
64 Prop_LinkCustomParameters = 0x4000,
68 Prop_RobotSensors = 0x00020000,
69 Prop_Sensors = 0x00020000,
70 Prop_RobotSensorPlacement = 0x00040000,
71 Prop_SensorPlacement = 0x00040000,
72 Prop_RobotActiveDOFs = 0x00080000,
73 Prop_RobotManipulatorTool = 0x00100000,
74 Prop_RobotManipulatorName = 0x00200000,
75 Prop_RobotManipulatorSolver = 0x00400000,
76 Prop_RobotManipulators = Prop_RobotManipulatorTool | Prop_RobotManipulatorName | Prop_RobotManipulatorSolver,
83 CLA_CheckLimitsSilent = 2,
84 CLA_CheckLimitsThrow = 3,
99 bool InitCollisionMesh(
float fTessellation=1);
226 return _info._vRenderScale;
230 return _info._filenamerender;
233 return _info._fTransparency;
237 return _info._bVisible;
240 return _info._bVisible;
243 return _info._bModifiable;
247 return _info._vGeomData.x;
250 return _info._vGeomData.x;
253 return _info._vGeomData.y;
256 return _info._vGeomData;
259 return _info._vDiffuseColor;
262 return _info._vAmbientColor;
267 return _info._meshcollision;
276 virtual void serialize(std::ostream& o,
int options)
const;
279 virtual void SetCollisionMesh(
const TriMesh& mesh);
283 virtual bool SetVisible(
bool visible);
289 virtual void SetTransparency(
float f);
291 virtual void SetDiffuseColor(
const RaveVector<float>& color);
293 virtual void SetAmbientColor(
const RaveVector<float>& color);
300 virtual bool ValidateContactNormal(
const Vector& position,
Vector& normal)
const;
303 virtual void SetRenderFilename(
const std::string& renderfilename);
310 friend class OpenRAVEXMLParser::LinkXMLReader;
311 friend class OpenRAVEXMLParser::KinBodyXMLReader;
312 friend class XFileReader;
314 friend class ::OpenRAVEXMLParser::LinkXMLReader;
315 friend class ::OpenRAVEXMLParser::KinBodyXMLReader;
316 friend class ::XFileReader;
319 friend class ColladaReader;
338 return _info._bStatic;
342 virtual void Enable(
bool enable);
345 virtual bool IsEnabled()
const;
350 virtual bool SetVisible(
bool visible);
353 virtual bool IsVisible()
const;
369 virtual AABB ComputeLocalAABB()
const;
372 virtual AABB ComputeAABB()
const;
384 virtual void GetParentLinks(std::vector< boost::shared_ptr<Link> >& vParentLinks)
const;
390 virtual bool IsParentLink(boost::shared_ptr<Link const> plink)
const;
394 return _info._tMassFrame.trans;
399 return _info._t*_info._tMassFrame.trans;
403 return _info._tMassFrame.trans;
414 RAVELOG_WARN(
"KinBody::Link::GetInertia is deprecated, use KinBody::Link::GetGlobalInertia\n");
415 return GetLocalInertia();
419 virtual void SetLocalMassFrame(
const Transform& massframe);
422 virtual void SetPrincipalMomentsOfInertia(
const Vector& inertiamoments);
425 virtual void SetMass(
dReal mass);
429 return _info._tMassFrame;
434 return _info._t*_info._tMassFrame;
439 return _info._vinertiamoments;
448 virtual void SetStatic(
bool bStatic);
453 virtual void SetTransform(
const Transform& transform);
459 virtual void SetForce(
const Vector& force,
const Vector& pos,
bool add);
463 virtual void SetTorque(
const Vector& torque,
bool add);
468 virtual void SetVelocity(
const Vector& linearvel,
const Vector& angularvel);
473 virtual void GetVelocity(
Vector& linearvel,
Vector& angularvel)
const;
476 virtual std::pair<Vector,Vector> GetVelocity()
const;
482 virtual GeometryPtr GetGeometry(
int index);
488 virtual void InitGeometries(std::vector<KinBody::GeometryInfoConstPtr>& geometries);
489 virtual void InitGeometries(std::list<KinBody::GeometryInfo>& geometries);
492 virtual void SwapGeometries(boost::shared_ptr<Link>& link);
498 virtual bool ValidateContactNormal(
const Vector& position,
Vector& normal)
const;
501 virtual bool IsRigidlyAttached(boost::shared_ptr<Link const> plink)
const;
506 virtual void GetRigidlyAttachedLinks(std::vector<boost::shared_ptr<Link> >& vattachedlinks)
const;
508 virtual void serialize(std::ostream& o,
int options)
const;
512 return _info._mapFloatParameters;
518 virtual void SetFloatParameters(
const std::string& key,
const std::vector<dReal>& parameters);
522 return _info._mapIntParameters;
528 virtual void SetIntParameters(
const std::string& key,
const std::vector<int>& parameters);
531 virtual void UpdateInfo();
549 virtual void _Update();
561 std::vector<int> _vParentLinks;
562 std::vector<int> _vRigidlyAttachedLinks;
568 friend class OpenRAVEXMLParser::LinkXMLReader;
569 friend class OpenRAVEXMLParser::KinBodyXMLReader;
570 friend class OpenRAVEXMLParser::RobotXMLReader;
571 friend class XFileReader;
573 friend class ::OpenRAVEXMLParser::LinkXMLReader;
574 friend class ::OpenRAVEXMLParser::KinBodyXMLReader;
575 friend class ::OpenRAVEXMLParser::RobotXMLReader;
576 friend class ::XFileReader;
579 friend class ColladaReader;
583 typedef boost::shared_ptr<KinBody::Link>
LinkPtr;
598 JointRevolute = 0x01,
600 JointPrismatic = 0x11,
605 JointSpecialBit = 0x80000000,
606 JointUniversal = 0x80000001,
607 JointHinge2 = 0x80000002,
608 JointSpherical = 0x80000003,
609 JointTrajectory = 0x80000004,
633 int16_t dofindex : 14;
635 bool operator <(
const DOFFormat& r)
const;
636 bool operator ==(
const DOFFormat& r)
const;
637 boost::shared_ptr<Joint> GetJoint(
KinBodyPtr parent)
const;
654 std::vector<OpenRAVEFunctionParserRealPtr >
_velfns, _accelfns;
740 return _info._vmaxvel[iaxis];
743 return _info._vmaxaccel[iaxis];
746 return _info._vmaxtorque[iaxis];
766 return _attachedbodies[0];
769 return _attachedbodies[1];
779 virtual void GetResolutions(std::vector<dReal>& resolutions,
bool bAppend=
false)
const;
784 virtual dReal GetResolution(
int iaxis=0)
const;
786 virtual void SetResolution(
dReal resolution,
int iaxis=0);
789 virtual int GetDOF()
const;
797 virtual bool IsCircular(
int iaxis)
const;
802 virtual bool IsRevolute(
int iaxis)
const;
807 virtual bool IsPrismatic(
int iaxis)
const;
810 virtual bool IsStatic()
const;
816 virtual void GetValues(std::vector<dReal>& values,
bool bAppend=
false)
const;
819 virtual dReal GetValue(
int axis)
const;
825 virtual void GetVelocities(std::vector<dReal>& values,
bool bAppend=
false)
const;
828 virtual dReal GetVelocity(
int axis)
const;
831 virtual void AddTorque(
const std::vector<dReal>& torques);
834 virtual Vector GetAnchor()
const;
839 virtual Vector GetAxis(
int axis = 0)
const;
847 virtual void GetLimits(std::vector<dReal>& vLowerLimit, std::vector<dReal>& vUpperLimit,
bool bAppend=
false)
const;
850 virtual std::pair<dReal, dReal> GetLimit(
int iaxis=0)
const;
853 virtual void SetLimits(
const std::vector<dReal>& lower,
const std::vector<dReal>& upper);
860 virtual void GetVelocityLimits(std::vector<dReal>& vmax,
bool bAppend=
false)
const;
862 virtual void GetVelocityLimits(std::vector<dReal>& vlower, std::vector<dReal>& vupper,
bool bAppend=
false)
const;
865 virtual std::pair<dReal, dReal> GetVelocityLimit(
int iaxis=0)
const;
868 virtual void SetVelocityLimits(
const std::vector<dReal>& vmax);
875 virtual void GetAccelerationLimits(std::vector<dReal>& vmax,
bool bAppend=
false)
const;
877 virtual dReal GetAccelerationLimit(
int iaxis=0)
const;
880 virtual void SetAccelerationLimits(
const std::vector<dReal>& vmax);
887 virtual void GetTorqueLimits(std::vector<dReal>& vmax,
bool bAppend=
false)
const;
890 virtual void SetTorqueLimits(
const std::vector<dReal>& vmax);
895 virtual void GetWeights(std::vector<dReal>& weights,
bool bAppend=
false)
const;
898 virtual dReal GetWeight(
int axis=0)
const;
901 virtual void SetWeights(
const std::vector<dReal>& weights);
906 virtual void SubtractValues(std::vector<dReal>& values1,
const std::vector<dReal>& values2)
const;
911 virtual dReal SubtractValue(
dReal value1,
dReal value2,
int iaxis)
const;
919 return _info._voffsets.at(iaxis);
923 return GetWrapOffset(iaxis);
927 virtual void SetWrapOffset(
dReal offset,
int iaxis=0);
929 virtual void serialize(std::ostream& o,
int options)
const;
934 virtual LinkPtr GetHierarchyParentLink()
const;
936 virtual LinkPtr GetHierarchyChildLink()
const;
938 virtual Vector GetInternalHierarchyAxis(
int axis = 0)
const;
940 virtual Transform GetInternalHierarchyLeftTransform()
const;
942 virtual Transform GetInternalHierarchyRightTransform()
const;
958 virtual
bool IsMimic(
int axis=-1) const;
970 virtual std::
string GetMimicEquation(
int axis=0,
int type=0, const std::
string& format="") const;
978 virtual
void GetMimicDOFIndices(std::vector<
int>& vmimicdofs,
int axis=0) const;
999 virtual
void SetMimicEquations(
int axis, const std::
string& poseq, const std::
string& veleq, const std::
string& acceleq="");
1003 inline const std::map<std::
string, std::vector<
dReal> >& GetFloatParameters()
const {
1004 return _info._mapFloatParameters;
1010 virtual void SetFloatParameters(
const std::string& key,
const std::vector<dReal>& parameters);
1014 return _info._mapIntParameters;
1020 virtual void SetIntParameters(
const std::string& key,
const std::vector<int>& parameters);
1023 virtual void UpdateInfo();
1050 virtual void _ComputePartialVelocities(std::vector<std::pair<int,dReal> >& vpartials,
int iaxis, std::map< std::pair<Mimic::DOFFormat, int>,
dReal >& mapcachedpartials)
const;
1063 virtual void _ComputeInternalInformation(
LinkPtr plink0,
LinkPtr plink1,
const Vector& vanchor,
const std::vector<Vector>& vaxes,
const std::vector<dReal>& vcurrentvalues);
1072 virtual int _Eval(
int axis, uint32_t timederiv,
const std::vector<dReal>& vdependentvalues, std::vector<dReal>& voutput);
1075 virtual void _GetVelocities(std::vector<dReal>& values,
bool bAppend,
const std::pair<Vector,Vector>& linkparentvelocity,
const std::pair<Vector,Vector>& linkchildvelocity)
const;
1078 virtual dReal _GetVelocity(
int axis,
const std::pair<Vector,Vector>&linkparentvelocity,
const std::pair<Vector,Vector>&linkchildvelocity)
const;
1088 boost::array<dReal,3> _vcircularlowerlimit, _vcircularupperlimit;
1091 boost::array<LinkPtr,2> _attachedbodies;
1092 boost::array<Vector,3> _vaxes;
1094 Transform _tRightNoOffset, _tLeftNoOffset;
1100 friend class OpenRAVEXMLParser::JointXMLReader;
1101 friend class OpenRAVEXMLParser::KinBodyXMLReader;
1102 friend class OpenRAVEXMLParser::RobotXMLReader;
1103 friend class XFileReader;
1105 friend class ::OpenRAVEXMLParser::JointXMLReader;
1106 friend class ::OpenRAVEXMLParser::KinBodyXMLReader;
1107 friend class ::OpenRAVEXMLParser::RobotXMLReader;
1108 friend class ::XFileReader;
1111 friend class ColladaReader;
1112 friend class ColladaWriter;
1159 virtual bool IsPresent()
const = 0;
1162 virtual bool IsEnabled()
const = 0;
1165 virtual bool IsLocked()
const = 0;
1168 virtual bool Lock(
bool bDoLock) = 0;
1182 Save_LinkTransformation=0x00000001,
1183 Save_LinkEnable=0x00000002,
1184 Save_LinkVelocities=0x00000004,
1185 Save_JointMaxVelocityAndAcceleration=0x00000008,
1186 Save_ActiveDOF=0x00010000,
1187 Save_ActiveManipulator=0x00020000,
1188 Save_GrabbedBodies=0x00040000,
1207 virtual void Restore(boost::shared_ptr<KinBody> body=boost::shared_ptr<KinBody>());
1212 virtual void Release();
1222 virtual void _RestoreKinBody(boost::shared_ptr<KinBody> body);
1234 virtual void Destroy();
1240 virtual bool InitFromBoxes(
const std::vector<AABB>& boxes,
bool visible);
1246 virtual bool InitFromBoxes(
const std::vector<OBB>& boxes,
bool visible);
1252 virtual bool InitFromSpheres(
const std::vector<Vector>& spheres,
bool visible);
1258 virtual bool InitFromTrimesh(
const TriMesh& trimesh,
bool visible);
1264 virtual bool InitFromGeometries(
const std::vector<KinBody::GeometryInfoConstPtr>& geometries);
1265 virtual bool InitFromGeometries(
const std::list<KinBody::GeometryInfo>& geometries);
1271 virtual bool Init(
const std::vector<LinkInfoConstPtr>& linkinfos,
const std::vector<JointInfoConstPtr>& jointinfos);
1279 virtual void SetName(
const std::string& name);
1288 virtual int GetDOF()
const;
1293 virtual void GetDOFValues(std::vector<dReal>& v,
const std::vector<int>& dofindices = std::vector<int>())
const;
1298 virtual void GetDOFVelocities(std::vector<dReal>& v,
const std::vector<int>& dofindices = std::vector<int>())
const;
1303 virtual void GetDOFLimits(std::vector<dReal>& lowerlimit, std::vector<dReal>& upperlimit,
const std::vector<int>& dofindices = std::vector<int>())
const;
1308 virtual void GetDOFVelocityLimits(std::vector<dReal>& lowerlimit, std::vector<dReal>& upperlimit,
const std::vector<int>& dofindices = std::vector<int>())
const;
1313 virtual void GetDOFVelocityLimits(std::vector<dReal>& maxvelocities,
const std::vector<int>& dofindices = std::vector<int>())
const;
1318 virtual void GetDOFAccelerationLimits(std::vector<dReal>& maxaccelerations,
const std::vector<int>& dofindices = std::vector<int>())
const;
1321 virtual void GetDOFTorqueLimits(std::vector<dReal>& maxaccelerations)
const;
1325 GetDOFVelocityLimits(v);
1328 GetDOFAccelerationLimits(v);
1330 virtual void GetDOFMaxTorque(std::vector<dReal>& v)
const;
1335 virtual void GetDOFResolutions(std::vector<dReal>& v,
const std::vector<int>& dofindices = std::vector<int>())
const;
1340 virtual void GetDOFWeights(std::vector<dReal>& v,
const std::vector<int>& dofindices = std::vector<int>())
const;
1343 virtual void SetDOFVelocityLimits(
const std::vector<dReal>& maxlimits);
1346 virtual void SetDOFAccelerationLimits(
const std::vector<dReal>& maxlimits);
1349 virtual void SetDOFTorqueLimits(
const std::vector<dReal>& maxlimits);
1354 virtual void SetDOFWeights(
const std::vector<dReal>& weights,
const std::vector<int>& dofindices = std::vector<int>());
1357 virtual void SetDOFLimits(
const std::vector<dReal>& lower,
const std::vector<dReal>& upper);
1371 return _vPassiveJoints;
1378 virtual const std::vector<JointPtr>& GetDependencyOrderedJoints()
const;
1386 virtual const std::vector< std::vector< std::pair<LinkPtr, JointPtr> > >& GetClosedLoops()
const;
1406 virtual bool GetChain(
int linkindex1,
int linkindex2, std::vector<JointPtr>& vjoints)
const;
1409 virtual bool GetChain(
int linkindex1,
int linkindex2, std::vector<LinkPtr>& vlinks)
const;
1416 virtual bool IsDOFInChain(
int linkindex1,
int linkindex2,
int dofindex)
const;
1419 virtual int GetJointIndex(
const std::string& name)
const;
1422 virtual JointPtr GetJoint(
const std::string& name)
const;
1427 virtual JointPtr GetJointFromDOFIndex(
int dofindex)
const;
1436 virtual void SubtractDOFValues(std::vector<dReal>& values1,
const std::vector<dReal>& values2,
const std::vector<int>& dofindices=std::vector<int>())
const;
1441 virtual void SetDOFTorques(
const std::vector<dReal>& torques,
bool add);
1449 virtual LinkPtr GetLink(
const std::string& name)
const;
1452 virtual void SimulationStep(
dReal fElapsedTime);
1455 virtual void GetLinkTransformations(std::vector<Transform>& transforms)
const;
1460 virtual void GetLinkTransformations(std::vector<Transform>& transforms, std::vector<int>& dofbranches)
const;
1464 GetLinkTransformations(transforms);
1473 virtual bool SetVelocity(
const Vector& linearvel,
const Vector& angularvel);
1485 virtual void SetDOFVelocities(
const std::vector<dReal>& dofvelocities,
const Vector& linearvel,
const Vector& angularvel,uint32_t checklimits = CLA_CheckLimits);
1493 virtual void SetDOFVelocities(
const std::vector<dReal>& dofvelocities, uint32_t checklimits = CLA_CheckLimits,
const std::vector<int>& dofindices = std::vector<int>());
1498 virtual void GetLinkVelocities(std::vector<std::pair<Vector,Vector> >& velocities)
const;
1511 virtual void GetLinkAccelerations(
const std::vector<dReal>& dofaccelerations, std::vector<std::pair<Vector,Vector> >& linkaccelerations)
const;
1521 virtual void SetTransform(
const Transform& transform);
1524 virtual AABB ComputeAABB()
const;
1527 virtual Vector GetCenterOfMass()
const;
1530 virtual void Enable(
bool enable);
1533 virtual bool IsEnabled()
const;
1538 virtual bool SetVisible(
bool visible);
1541 virtual bool IsVisible()
const;
1548 virtual void SetDOFValues(
const std::vector<dReal>& values, uint32_t checklimits = CLA_CheckLimits,
const std::vector<int>& dofindices = std::vector<int>());
1550 virtual void SetJointValues(
const std::vector<dReal>& values,
bool checklimits =
true) {
1551 SetDOFValues(values,static_cast<uint32_t>(checklimits));
1559 virtual void SetDOFValues(
const std::vector<dReal>& values,
const Transform& transform, uint32_t checklimits = CLA_CheckLimits);
1561 virtual void SetJointValues(
const std::vector<dReal>& values,
const Transform& transform,
bool checklimits =
true)
1563 SetDOFValues(values,transform,static_cast<uint32_t>(checklimits));
1567 virtual void SetLinkTransformations(
const std::vector<Transform>& transforms);
1572 virtual void SetLinkTransformations(
const std::vector<Transform>& transforms,
const std::vector<int>& dofbranches);
1576 SetLinkTransformations(transforms);
1580 virtual void SetLinkVelocities(
const std::vector<std::pair<Vector,Vector> >& velocities);
1590 virtual void ComputeJacobianTranslation(
int linkindex,
const Vector& position, std::vector<dReal>& jacobian,
const std::vector<int>& dofindices=std::vector<int>())
const;
1594 ComputeJacobianTranslation(linkindex,position,jacobian);
1598 virtual void CalculateJacobian(
int linkindex,
const Vector& position, boost::multi_array<dReal,2>& jacobian)
const;
1605 virtual void CalculateRotationJacobian(
int linkindex,
const Vector& quat, std::vector<dReal>& jacobian)
const;
1608 virtual void CalculateRotationJacobian(
int linkindex,
const Vector& quat, boost::multi_array<dReal,2>& jacobian)
const;
1614 virtual void ComputeJacobianAxisAngle(
int linkindex, std::vector<dReal>& jacobian,
const std::vector<int>& dofindices=std::vector<int>())
const;
1618 ComputeJacobianAxisAngle(linkindex,jacobian);
1622 virtual void CalculateAngularVelocityJacobian(
int linkindex, boost::multi_array<dReal,2>& jacobian)
const;
1646 virtual void ComputeHessianTranslation(
int linkindex,
const Vector& position, std::vector<dReal>& hessian,
const std::vector<int>& dofindices=std::vector<int>())
const;
1669 virtual void ComputeHessianAxisAngle(
int linkindex, std::vector<dReal>& hessian,
const std::vector<int>& dofindices=std::vector<int>())
const;
1683 virtual void ComputeInverseDynamics(std::vector<dReal>& doftorques,
const std::vector<dReal>& dofaccelerations,
const ForceTorqueMap& externalforcetorque=
ForceTorqueMap())
const;
1702 virtual void ComputeInverseDynamics(boost::array< std::vector<dReal>, 3>& doftorquecomponents,
const std::vector<dReal>& dofaccelerations,
const ForceTorqueMap& externalforcetorque=
ForceTorqueMap())
const;
1713 virtual void GetAttached(std::set<KinBodyPtr>& setAttached)
const;
1724 virtual int GetEnvironmentId()
const;
1734 virtual int8_t DoesAffect(
int jointindex,
int linkindex)
const;
1738 return GetUserData(
"_viewer_");
1750 virtual const std::set<int>& GetNonAdjacentLinks(
int adjacentoptions=0)
const;
1753 virtual const std::set<int>& GetAdjacentLinks()
const;
1757 return GetUserData(
"_physics_");
1761 return GetUserData(
"_collision_");
1764 return _pManageData;
1773 return _nUpdateStampId;
1785 virtual UserDataPtr RegisterChangeCallback(
int properties,
const boost::function<
void()>& callback)
const;
1795 virtual const std::string& GetKinematicsGeometryHash()
const;
1802 virtual void SetZeroConfiguration();
1805 virtual void SetNonCollidingConfiguration();
1819 virtual ConfigurationSpecification GetConfigurationSpecificationIndices(
const std::vector<int>& indices,
const std::string& interpolation=
"")
const;
1825 virtual void SetConfigurationValues(std::vector<dReal>::const_iterator itvalues, uint32_t checklimits = CLA_CheckLimits);
1828 virtual void GetConfigurationValues(std::vector<dReal>& v)
const;
1833 virtual void serialize(std::ostream& o,
int options)
const;
1839 return boost::static_pointer_cast<
KinBody>(shared_from_this());
1842 return boost::static_pointer_cast<
KinBody const>(shared_from_this());
1847 SetUserData(
"_physics_", pdata);
1851 SetUserData(
"_collision_", pdata);
1856 SetUserData(
"_viewer_",pdata);
1859 _pManageData = pdata;
1868 virtual void _ComputeInternalInformation();
1873 virtual void _ComputeDOFLinkVelocities(std::vector<dReal>& dofvelocities, std::vector<std::pair<Vector,Vector> >& linkvelocities,
bool usebaselinkvelocity=
true)
const;
1880 virtual void _ComputeLinkAccelerations(
const std::vector<dReal>& dofvelocities,
const std::vector<dReal>& dofaccelerations,
const std::vector< std::pair<Vector, Vector> >& linkvelocities, std::vector<std::pair<Vector,Vector> >& linkaccelerations,
const Vector& gravity)
const;
1886 virtual void _ParametersChanged(
int parameters);
1889 virtual bool _IsAttached(
KinBodyConstPtr body, std::set<KinBodyConstPtr>& setChecked)
const;
1897 virtual bool _RemoveAttachedBody(
KinBodyPtr body);
1900 virtual void _ResetInternalCollisionCache();
1915 std::set<int> _setAdjacentLinks;
1934 mutable std::string __hashkinematics;
1935 mutable std::vector<dReal> _vTempJoints;
1936 virtual const char* GetHash()
const {
1942 friend class Environment;
1943 friend class OpenRAVEXMLParser::KinBodyXMLReader;
1944 friend class OpenRAVEXMLParser::JointXMLReader;
1945 friend class XFileReader;
1947 friend class ::Environment;
1948 friend class ::OpenRAVEXMLParser::KinBodyXMLReader;
1949 friend class ::OpenRAVEXMLParser::JointXMLReader;
1950 friend class ::XFileReader;
1954 friend class ColladaReader;
1955 friend class ColladaWriter;
1960 friend class RaveDatabase;