dartpy 7.0.0.dev0__cp313-cp313-manylinux_2_39_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of dartpy might be problematic. Click here for more details.
- dartpy-7.0.0.dev0.dist-info/METADATA +86 -0
- dartpy-7.0.0.dev0.dist-info/RECORD +994 -0
- dartpy-7.0.0.dev0.dist-info/WHEEL +5 -0
- dartpy-7.0.0.dev0.dist-info/licenses/LICENSE +31 -0
- dartpy.cpython-313-x86_64-linux-gnu.so +0 -0
- dartpy.libs/libBulletCollision-f96eb02c.so.3.25 +0 -0
- dartpy.libs/libBulletDynamics-3cff1f18.so.3.25 +0 -0
- dartpy.libs/libBulletSoftBody-220f01bd.so.3.25 +0 -0
- dartpy.libs/libLinearMath-71568d02.so.3.25 +0 -0
- dartpy.libs/libOpenThreads-8bc434db.so.3.3.1 +0 -0
- dartpy.libs/libSDL2-2-3db87ac0.0.so.0.3200.56 +0 -0
- dartpy.libs/libassimp-44cf3e77.so.5.4.3 +0 -0
- dartpy.libs/libccd-4f119cf4.so.2.0 +0 -0
- dartpy.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
- dartpy.libs/libfcl-0400fc28.so.0.7.0 +0 -0
- dartpy.libs/libfmt-277170bf.so.11.2.0 +0 -0
- dartpy.libs/libfontconfig-582da43c.so.1.14.0 +0 -0
- dartpy.libs/libfreetype-64806fc6.so.6.20.4 +0 -0
- dartpy.libs/libglfw-6f066845.so.3.4 +0 -0
- dartpy.libs/libimgui-ab87b07d.so +0 -0
- dartpy.libs/libnlopt-d1ae937b.so.1.0.0 +0 -0
- dartpy.libs/liboctomap-38e56f99.so.1.10.0 +0 -0
- dartpy.libs/liboctomath-bff26442.so.1.10.0 +0 -0
- dartpy.libs/libode-99b67f5b.so.8.2.0 +0 -0
- dartpy.libs/libosg-e67375e5.so.3.6.5 +0 -0
- dartpy.libs/libosgDB-bcdb6be9.so.3.6.5 +0 -0
- dartpy.libs/libosgGA-6af4078b.so.3.6.5 +0 -0
- dartpy.libs/libosgManipulator-3270f659.so.3.6.5 +0 -0
- dartpy.libs/libosgShadow-127a8d77.so.3.6.5 +0 -0
- dartpy.libs/libosgText-87d82d87.so.3.6.5 +0 -0
- dartpy.libs/libosgUtil-55896958.so.3.6.5 +0 -0
- dartpy.libs/libosgViewer-76d832e3.so.3.6.5 +0 -0
- dartpy.libs/libpng16-bd65464e.so.16.50.0 +0 -0
- dartpy.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
- dartpy.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
- dartpy.libs/liburdfdom_model_state-95a5ad6e.so.4.0 +0 -0
- dartpy.libs/liburdfdom_sensor-55a145ea.so.4.0 +0 -0
- dartpy.libs/liburdfdom_world-a32c7194.so.4.0 +0 -0
- dartpy.libs/libvulkan-08e1e162.so.1.4.328 +0 -0
- include/dart/collision/CollisionDetector.hpp +305 -0
- include/dart/collision/CollisionFilter.hpp +126 -0
- include/dart/collision/CollisionGroup.hpp +546 -0
- include/dart/collision/CollisionObject.hpp +90 -0
- include/dart/collision/CollisionOption.hpp +71 -0
- include/dart/collision/CollisionResult.hpp +109 -0
- include/dart/collision/Contact.hpp +103 -0
- include/dart/collision/DistanceFilter.hpp +66 -0
- include/dart/collision/DistanceOption.hpp +80 -0
- include/dart/collision/DistanceResult.hpp +123 -0
- include/dart/collision/Option.hpp +42 -0
- include/dart/collision/RaycastOption.hpp +58 -0
- include/dart/collision/RaycastResult.hpp +80 -0
- include/dart/collision/Result.hpp +42 -0
- include/dart/collision/SmartPointer.hpp +51 -0
- include/dart/collision/all.hpp +17 -0
- include/dart/collision/bullet/BulletCollisionDetector.hpp +168 -0
- include/dart/collision/bullet/BulletCollisionGroup.hpp +98 -0
- include/dart/collision/bullet/BulletCollisionObject.hpp +75 -0
- include/dart/collision/bullet/BulletCollisionShape.hpp +62 -0
- include/dart/collision/bullet/BulletInclude.hpp +47 -0
- include/dart/collision/bullet/BulletTypes.hpp +57 -0
- include/dart/collision/bullet/all.hpp +8 -0
- include/dart/collision/bullet/bullet.hpp +14 -0
- include/dart/collision/bullet/detail/BulletCollisionDispatcher.hpp +70 -0
- include/dart/collision/bullet/detail/BulletOverlapFilterCallback.hpp +72 -0
- include/dart/collision/collision.hpp +14 -0
- include/dart/collision/dart/DARTCollide.hpp +106 -0
- include/dart/collision/dart/DARTCollisionDetector.hpp +109 -0
- include/dart/collision/dart/DARTCollisionGroup.hpp +82 -0
- include/dart/collision/dart/DARTCollisionObject.hpp +63 -0
- include/dart/collision/dart/all.hpp +6 -0
- include/dart/collision/dart/dart.hpp +14 -0
- include/dart/collision/detail/CollisionDetector.hpp +66 -0
- include/dart/collision/detail/CollisionGroup.hpp +287 -0
- include/dart/collision/detail/Contact-impl.hpp +56 -0
- include/dart/collision/detail/UnorderedPairs.hpp +153 -0
- include/dart/collision/fcl/BackwardCompatibility.hpp +145 -0
- include/dart/collision/fcl/CollisionShapes.hpp +374 -0
- include/dart/collision/fcl/FCLCollisionDetector.hpp +204 -0
- include/dart/collision/fcl/FCLCollisionGroup.hpp +95 -0
- include/dart/collision/fcl/FCLCollisionObject.hpp +72 -0
- include/dart/collision/fcl/FCLTypes.hpp +62 -0
- include/dart/collision/fcl/TriTriIntersectionTest.hpp +17 -0
- include/dart/collision/fcl/all.hpp +9 -0
- include/dart/collision/fcl/fcl.hpp +14 -0
- include/dart/collision/fcl/tri_tri_intersection_test.hpp +332 -0
- include/dart/collision/ode/OdeCollisionDetector.hpp +131 -0
- include/dart/collision/ode/OdeCollisionGroup.hpp +87 -0
- include/dart/collision/ode/OdeCollisionObject.hpp +89 -0
- include/dart/collision/ode/OdeTypes.hpp +51 -0
- include/dart/collision/ode/all.hpp +6 -0
- include/dart/collision/ode/detail/OdeBox.hpp +58 -0
- include/dart/collision/ode/detail/OdeCapsule.hpp +58 -0
- include/dart/collision/ode/detail/OdeCylinder.hpp +58 -0
- include/dart/collision/ode/detail/OdeGeom.hpp +83 -0
- include/dart/collision/ode/detail/OdeHeightmap-impl.hpp +170 -0
- include/dart/collision/ode/detail/OdeHeightmap.hpp +70 -0
- include/dart/collision/ode/detail/OdeMesh.hpp +83 -0
- include/dart/collision/ode/detail/OdePlane.hpp +67 -0
- include/dart/collision/ode/detail/OdeSphere.hpp +58 -0
- include/dart/collision/ode/ode.hpp +14 -0
- include/dart/common/Aspect.hpp +215 -0
- include/dart/common/AspectWithVersion.hpp +180 -0
- include/dart/common/CAllocator.hpp +65 -0
- include/dart/common/Castable.hpp +102 -0
- include/dart/common/ClassWithVirtualBase.hpp +47 -0
- include/dart/common/Cloneable.hpp +327 -0
- include/dart/common/Composite.hpp +205 -0
- include/dart/common/CompositeJoiner.hpp +160 -0
- include/dart/common/Console.hpp +75 -0
- include/dart/common/Deprecated.hpp +126 -0
- include/dart/common/EmbeddedAspect.hpp +466 -0
- include/dart/common/Empty.hpp +55 -0
- include/dart/common/Factory.hpp +146 -0
- include/dart/common/Filesystem.hpp +112 -0
- include/dart/common/FreeListAllocator.hpp +162 -0
- include/dart/common/IncludeWindows.hpp +50 -0
- include/dart/common/LocalResource.hpp +76 -0
- include/dart/common/LocalResourceRetriever.hpp +63 -0
- include/dart/common/LockableReference.hpp +166 -0
- include/dart/common/Logging.hpp +146 -0
- include/dart/common/Macros.hpp +78 -0
- include/dart/common/Memory.hpp +215 -0
- include/dart/common/MemoryAllocator.hpp +120 -0
- include/dart/common/MemoryAllocatorDebugger.hpp +98 -0
- include/dart/common/MemoryManager.hpp +189 -0
- include/dart/common/Metaprogramming.hpp +68 -0
- include/dart/common/NameManager.hpp +184 -0
- include/dart/common/Observer.hpp +85 -0
- include/dart/common/Optional.hpp +48 -0
- include/dart/common/Platform.hpp +92 -0
- include/dart/common/PoolAllocator.hpp +141 -0
- include/dart/common/Profile.hpp +56 -0
- include/dart/common/ProxyAspect.hpp +93 -0
- include/dart/common/RequiresAspect.hpp +79 -0
- include/dart/common/Resource.hpp +96 -0
- include/dart/common/ResourceRetriever.hpp +82 -0
- include/dart/common/SharedLibrary.hpp +201 -0
- include/dart/common/Signal.hpp +250 -0
- include/dart/common/Singleton.hpp +85 -0
- include/dart/common/SmartPointer.hpp +63 -0
- include/dart/common/SpecializedForAspect.hpp +207 -0
- include/dart/common/StlAllocator.hpp +111 -0
- include/dart/common/StlHelpers.hpp +61 -0
- include/dart/common/Stopwatch.hpp +143 -0
- include/dart/common/String.hpp +71 -0
- include/dart/common/SubPtr.hpp +17 -0
- include/dart/common/Subject.hpp +84 -0
- include/dart/common/Timer.hpp +119 -0
- include/dart/common/Uri.hpp +229 -0
- include/dart/common/VersionCounter.hpp +68 -0
- include/dart/common/Virtual.hpp +51 -0
- include/dart/common/all.hpp +53 -0
- include/dart/common/common.hpp +14 -0
- include/dart/common/detail/Aspect.hpp +102 -0
- include/dart/common/detail/AspectWithVersion.hpp +455 -0
- include/dart/common/detail/Castable-impl.hpp +109 -0
- include/dart/common/detail/Cloneable.hpp +638 -0
- include/dart/common/detail/Composite.hpp +241 -0
- include/dart/common/detail/CompositeData.hpp +393 -0
- include/dart/common/detail/CompositeJoiner.hpp +128 -0
- include/dart/common/detail/ConnectionBody.hpp +157 -0
- include/dart/common/detail/EmbeddedAspect.hpp +487 -0
- include/dart/common/detail/Factory-impl.hpp +200 -0
- include/dart/common/detail/LockableReference-impl.hpp +156 -0
- include/dart/common/detail/Logging-impl.hpp +162 -0
- include/dart/common/detail/Memory-impl.hpp +66 -0
- include/dart/common/detail/MemoryAllocator-impl.hpp +97 -0
- include/dart/common/detail/MemoryAllocatorDebugger-impl.hpp +201 -0
- include/dart/common/detail/MemoryManager-impl.hpp +102 -0
- include/dart/common/detail/Metaprogramming-impl.hpp +89 -0
- include/dart/common/detail/NameManager.hpp +301 -0
- include/dart/common/detail/NoOp.hpp +57 -0
- include/dart/common/detail/ProxyAspect.hpp +172 -0
- include/dart/common/detail/RequiresAspect.hpp +51 -0
- include/dart/common/detail/SharedLibraryManager.hpp +106 -0
- include/dart/common/detail/Signal.hpp +242 -0
- include/dart/common/detail/Singleton-impl.hpp +74 -0
- include/dart/common/detail/SpecializedForAspect.hpp +331 -0
- include/dart/common/detail/StlAllocator-impl.hpp +108 -0
- include/dart/common/detail/Stopwatch-impl.hpp +242 -0
- include/dart/common/detail/SubPtr.hpp +17 -0
- include/dart/common/detail/TemplateJoinerDispatchMacro.hpp +59 -0
- include/dart/common/detail/sub_ptr.hpp +139 -0
- include/dart/common/sub_ptr.hpp +103 -0
- include/dart/config.hpp +100 -0
- include/dart/constraint/BalanceConstraint.hpp +202 -0
- include/dart/constraint/BallJointConstraint.hpp +142 -0
- include/dart/constraint/BoxedLcpConstraintSolver.hpp +182 -0
- include/dart/constraint/BoxedLcpSolver.hpp +101 -0
- include/dart/constraint/ConstrainedGroup.hpp +120 -0
- include/dart/constraint/ConstraintBase.hpp +141 -0
- include/dart/constraint/ConstraintSolver.hpp +325 -0
- include/dart/constraint/ContactConstraint.hpp +286 -0
- include/dart/constraint/ContactSurface.hpp +191 -0
- include/dart/constraint/DantzigBoxedLcpSolver.hpp +71 -0
- include/dart/constraint/DantzigLCPSolver.hpp +87 -0
- include/dart/constraint/DynamicJointConstraint.hpp +120 -0
- include/dart/constraint/JointConstraint.hpp +182 -0
- include/dart/constraint/JointCoulombFrictionConstraint.hpp +149 -0
- include/dart/constraint/JointLimitConstraint.hpp +185 -0
- include/dart/constraint/LCPSolver.hpp +71 -0
- include/dart/constraint/MimicMotorConstraint.hpp +164 -0
- include/dart/constraint/PGSLCPSolver.hpp +109 -0
- include/dart/constraint/PgsBoxedLcpSolver.hpp +106 -0
- include/dart/constraint/ServoMotorConstraint.hpp +151 -0
- include/dart/constraint/SmartPointer.hpp +69 -0
- include/dart/constraint/SoftContactConstraint.hpp +262 -0
- include/dart/constraint/WeldJointConstraint.hpp +133 -0
- include/dart/constraint/all.hpp +25 -0
- include/dart/constraint/constraint.hpp +14 -0
- include/dart/constraint/detail/ConstraintSolver-impl.hpp +78 -0
- include/dart/dart.hpp +44 -0
- include/dart/dynamics/ArrowShape.hpp +121 -0
- include/dart/dynamics/AssimpInputResourceAdaptor.hpp +129 -0
- include/dart/dynamics/BallJoint.hpp +143 -0
- include/dart/dynamics/BodyNode.hpp +1279 -0
- include/dart/dynamics/BoxShape.hpp +90 -0
- include/dart/dynamics/Branch.hpp +107 -0
- include/dart/dynamics/CapsuleShape.hpp +105 -0
- include/dart/dynamics/Chain.hpp +142 -0
- include/dart/dynamics/CompositeNode.hpp +114 -0
- include/dart/dynamics/ConeShape.hpp +107 -0
- include/dart/dynamics/CylinderShape.hpp +96 -0
- include/dart/dynamics/DegreeOfFreedom.hpp +415 -0
- include/dart/dynamics/EllipsoidShape.hpp +115 -0
- include/dart/dynamics/EndEffector.hpp +158 -0
- include/dart/dynamics/Entity.hpp +258 -0
- include/dart/dynamics/EntityNode.hpp +77 -0
- include/dart/dynamics/EulerJoint.hpp +174 -0
- include/dart/dynamics/FixedFrame.hpp +105 -0
- include/dart/dynamics/FixedJacobianNode.hpp +168 -0
- include/dart/dynamics/Frame.hpp +388 -0
- include/dart/dynamics/FreeJoint.hpp +369 -0
- include/dart/dynamics/GenericJoint.hpp +825 -0
- include/dart/dynamics/Group.hpp +270 -0
- include/dart/dynamics/HeightmapShape.hpp +195 -0
- include/dart/dynamics/HierarchicalIK.hpp +419 -0
- include/dart/dynamics/IkFast.hpp +277 -0
- include/dart/dynamics/Inertia.hpp +176 -0
- include/dart/dynamics/InvalidIndex.hpp +46 -0
- include/dart/dynamics/InverseKinematics.hpp +1401 -0
- include/dart/dynamics/JacobianNode.hpp +312 -0
- include/dart/dynamics/Joint.hpp +1128 -0
- include/dart/dynamics/LineSegmentShape.hpp +140 -0
- include/dart/dynamics/Linkage.hpp +246 -0
- include/dart/dynamics/Marker.hpp +126 -0
- include/dart/dynamics/MeshShape.hpp +225 -0
- include/dart/dynamics/MetaSkeleton.hpp +1034 -0
- include/dart/dynamics/MimicDofProperties.hpp +62 -0
- include/dart/dynamics/MultiSphereConvexHullShape.hpp +111 -0
- include/dart/dynamics/MultiSphereShape.hpp +42 -0
- include/dart/dynamics/Node.hpp +273 -0
- include/dart/dynamics/NodeManagerJoiner.hpp +190 -0
- include/dart/dynamics/PlanarJoint.hpp +161 -0
- include/dart/dynamics/PlaneShape.hpp +105 -0
- include/dart/dynamics/PointCloudShape.hpp +186 -0
- include/dart/dynamics/PointMass.hpp +709 -0
- include/dart/dynamics/PrismaticJoint.hpp +120 -0
- include/dart/dynamics/PyramidShape.hpp +122 -0
- include/dart/dynamics/ReferentialSkeleton.hpp +550 -0
- include/dart/dynamics/RevoluteJoint.hpp +120 -0
- include/dart/dynamics/ScrewJoint.hpp +126 -0
- include/dart/dynamics/Shape.hpp +231 -0
- include/dart/dynamics/ShapeFrame.hpp +291 -0
- include/dart/dynamics/ShapeNode.hpp +134 -0
- include/dart/dynamics/SharedLibraryIkFast.hpp +147 -0
- include/dart/dynamics/SimpleFrame.hpp +247 -0
- include/dart/dynamics/Skeleton.hpp +1350 -0
- include/dart/dynamics/SmartPointer.hpp +185 -0
- include/dart/dynamics/SoftBodyNode.hpp +472 -0
- include/dart/dynamics/SoftMeshShape.hpp +100 -0
- include/dart/dynamics/SpecializedNodeManager.hpp +230 -0
- include/dart/dynamics/SphereShape.hpp +89 -0
- include/dart/dynamics/TemplatedJacobianNode.hpp +128 -0
- include/dart/dynamics/TranslationalJoint.hpp +105 -0
- include/dart/dynamics/TranslationalJoint2D.hpp +156 -0
- include/dart/dynamics/UniversalJoint.hpp +128 -0
- include/dart/dynamics/VoxelGridShape.hpp +171 -0
- include/dart/dynamics/WeldJoint.hpp +116 -0
- include/dart/dynamics/ZeroDofJoint.hpp +562 -0
- include/dart/dynamics/all.hpp +69 -0
- include/dart/dynamics/detail/BasicNodeManager.hpp +539 -0
- include/dart/dynamics/detail/BodyNode.hpp +344 -0
- include/dart/dynamics/detail/BodyNodeAspect.hpp +177 -0
- include/dart/dynamics/detail/BodyNodePtr.hpp +351 -0
- include/dart/dynamics/detail/CompositeNode.hpp +93 -0
- include/dart/dynamics/detail/DegreeOfFreedomPtr.hpp +338 -0
- include/dart/dynamics/detail/EndEffectorAspect.hpp +106 -0
- include/dart/dynamics/detail/EntityNode.hpp +81 -0
- include/dart/dynamics/detail/EntityNodeAspect.hpp +101 -0
- include/dart/dynamics/detail/EulerJointAspect.hpp +93 -0
- include/dart/dynamics/detail/FixedFrameAspect.hpp +58 -0
- include/dart/dynamics/detail/FixedJacobianNode.hpp +55 -0
- include/dart/dynamics/detail/GenericJoint.hpp +2471 -0
- include/dart/dynamics/detail/GenericJointAspect.hpp +353 -0
- include/dart/dynamics/detail/HeightmapShape-impl.hpp +243 -0
- include/dart/dynamics/detail/InverseKinematics.hpp +83 -0
- include/dart/dynamics/detail/InverseKinematicsPtr.hpp +341 -0
- include/dart/dynamics/detail/JointAspect.hpp +161 -0
- include/dart/dynamics/detail/JointPtr.hpp +293 -0
- include/dart/dynamics/detail/MarkerAspect.hpp +68 -0
- include/dart/dynamics/detail/MetaSkeleton-impl.hpp +151 -0
- include/dart/dynamics/detail/Node.hpp +532 -0
- include/dart/dynamics/detail/NodeManagerJoiner.hpp +184 -0
- include/dart/dynamics/detail/NodePtr.hpp +259 -0
- include/dart/dynamics/detail/PlanarJointAspect.hpp +136 -0
- include/dart/dynamics/detail/PrismaticJointAspect.hpp +85 -0
- include/dart/dynamics/detail/RevoluteJointAspect.hpp +86 -0
- include/dart/dynamics/detail/ScrewJointAspect.hpp +90 -0
- include/dart/dynamics/detail/ShapeFrameAspect.hpp +169 -0
- include/dart/dynamics/detail/ShapeNode.hpp +51 -0
- include/dart/dynamics/detail/Skeleton.hpp +92 -0
- include/dart/dynamics/detail/SkeletonAspect.hpp +181 -0
- include/dart/dynamics/detail/SoftBodyNodeAspect.hpp +132 -0
- include/dart/dynamics/detail/SpecializedNodeManager.hpp +324 -0
- include/dart/dynamics/detail/TemplatedJacobianNode.hpp +294 -0
- include/dart/dynamics/detail/TranslationalJoint2DAspect.hpp +140 -0
- include/dart/dynamics/detail/UniversalJointAspect.hpp +86 -0
- include/dart/dynamics/dynamics.hpp +14 -0
- include/dart/dynamics/ikfast.h +345 -0
- include/dart/external/convhull_3d/convhull_3d.h +1878 -0
- include/dart/external/convhull_3d/safe_convhull_3d.h +53 -0
- include/dart/external/odelcpsolver/common.h +418 -0
- include/dart/external/odelcpsolver/error.h +62 -0
- include/dart/external/odelcpsolver/lcp.h +75 -0
- include/dart/external/odelcpsolver/matrix.h +277 -0
- include/dart/external/odelcpsolver/misc.h +82 -0
- include/dart/external/odelcpsolver/odeconfig.h +110 -0
- include/dart/gui/osg/DefaultEventHandler.hpp +237 -0
- include/dart/gui/osg/DragAndDrop.hpp +360 -0
- include/dart/gui/osg/GridVisual.hpp +218 -0
- include/dart/gui/osg/ImGuiHandler.hpp +113 -0
- include/dart/gui/osg/ImGuiViewer.hpp +83 -0
- include/dart/gui/osg/ImGuiWidget.hpp +91 -0
- include/dart/gui/osg/IncludeImGui.hpp +75 -0
- include/dart/gui/osg/InteractiveFrame.hpp +170 -0
- include/dart/gui/osg/MouseEventHandler.hpp +76 -0
- include/dart/gui/osg/RealTimeWorldNode.hpp +126 -0
- include/dart/gui/osg/ShapeFrameNode.hpp +117 -0
- include/dart/gui/osg/SupportPolygonVisual.hpp +202 -0
- include/dart/gui/osg/TrackballManipulator.hpp +97 -0
- include/dart/gui/osg/Utils.hpp +120 -0
- include/dart/gui/osg/Viewer.hpp +427 -0
- include/dart/gui/osg/WorldNode.hpp +211 -0
- include/dart/gui/osg/all.hpp +19 -0
- include/dart/gui/osg/detail/CameraModeCallback.hpp +82 -0
- include/dart/gui/osg/detail/Utils-impl.hpp +160 -0
- include/dart/gui/osg/osg.hpp +14 -0
- include/dart/gui/osg/render/BoxShapeNode.hpp +74 -0
- include/dart/gui/osg/render/CapsuleShapeNode.hpp +75 -0
- include/dart/gui/osg/render/ConeShapeNode.hpp +74 -0
- include/dart/gui/osg/render/CylinderShapeNode.hpp +75 -0
- include/dart/gui/osg/render/EllipsoidShapeNode.hpp +76 -0
- include/dart/gui/osg/render/HeightmapShapeNode.hpp +485 -0
- include/dart/gui/osg/render/LineSegmentShapeNode.hpp +75 -0
- include/dart/gui/osg/render/MeshShapeNode.hpp +86 -0
- include/dart/gui/osg/render/MultiSphereShapeNode.hpp +76 -0
- include/dart/gui/osg/render/PlaneShapeNode.hpp +75 -0
- include/dart/gui/osg/render/PointCloudShapeNode.hpp +85 -0
- include/dart/gui/osg/render/PyramidShapeNode.hpp +75 -0
- include/dart/gui/osg/render/ShapeNode.hpp +126 -0
- include/dart/gui/osg/render/SoftMeshShapeNode.hpp +75 -0
- include/dart/gui/osg/render/SphereShapeNode.hpp +76 -0
- include/dart/gui/osg/render/VoxelGridShapeNode.hpp +83 -0
- include/dart/gui/osg/render/WarningShapeNode.hpp +64 -0
- include/dart/gui/osg/render/all.hpp +19 -0
- include/dart/gui/osg/render/render.hpp +14 -0
- include/dart/integration/EulerIntegrator.hpp +64 -0
- include/dart/integration/Integrator.hpp +104 -0
- include/dart/integration/RK4Integrator.hpp +68 -0
- include/dart/integration/SemiImplicitEulerIntegrator.hpp +64 -0
- include/dart/integration/all.hpp +6 -0
- include/dart/integration/integration.hpp +14 -0
- include/dart/lcpsolver/Lemke.hpp +54 -0
- include/dart/lcpsolver/ODELCPSolver.hpp +88 -0
- include/dart/lcpsolver/all.hpp +4 -0
- include/dart/lcpsolver/lcpsolver.hpp +14 -0
- include/dart/math/ConfigurationSpace.hpp +144 -0
- include/dart/math/Constants.hpp +79 -0
- include/dart/math/Geometry.hpp +659 -0
- include/dart/math/Helpers.hpp +481 -0
- include/dart/math/Icosphere.hpp +106 -0
- include/dart/math/MathTypes.hpp +100 -0
- include/dart/math/Mesh.hpp +108 -0
- include/dart/math/Random.hpp +225 -0
- include/dart/math/TriMesh.hpp +121 -0
- include/dart/math/all.hpp +11 -0
- include/dart/math/detail/ConfigurationSpace.hpp +235 -0
- include/dart/math/detail/Geometry-impl.hpp +126 -0
- include/dart/math/detail/Icosphere-impl.hpp +214 -0
- include/dart/math/detail/Mesh-impl.hpp +151 -0
- include/dart/math/detail/Random-impl.hpp +353 -0
- include/dart/math/detail/TriMesh-impl.hpp +202 -0
- include/dart/math/math.hpp +14 -0
- include/dart/optimizer/Function.hpp +203 -0
- include/dart/optimizer/GenericMultiObjectiveProblem.hpp +174 -0
- include/dart/optimizer/GradientDescentSolver.hpp +240 -0
- include/dart/optimizer/MultiObjectiveProblem.hpp +168 -0
- include/dart/optimizer/MultiObjectiveSolver.hpp +168 -0
- include/dart/optimizer/Population.hpp +108 -0
- include/dart/optimizer/Problem.hpp +191 -0
- include/dart/optimizer/Solver.hpp +182 -0
- include/dart/optimizer/all.hpp +10 -0
- include/dart/optimizer/ipopt/BackwardCompatibility.hpp +43 -0
- include/dart/optimizer/ipopt/IpoptSolver.hpp +223 -0
- include/dart/optimizer/ipopt/all.hpp +4 -0
- include/dart/optimizer/ipopt/ipopt.hpp +14 -0
- include/dart/optimizer/nlopt/NloptSolver.hpp +212 -0
- include/dart/optimizer/nlopt/all.hpp +3 -0
- include/dart/optimizer/nlopt/nlopt.hpp +14 -0
- include/dart/optimizer/optimizer.hpp +14 -0
- include/dart/simulation/Recording.hpp +118 -0
- include/dart/simulation/SmartPointer.hpp +46 -0
- include/dart/simulation/World.hpp +405 -0
- include/dart/simulation/all.hpp +5 -0
- include/dart/simulation/detail/World-impl.hpp +129 -0
- include/dart/simulation/simulation.hpp +14 -0
- include/dart/utils/C3D.hpp +107 -0
- include/dart/utils/CompositeResourceRetriever.hpp +97 -0
- include/dart/utils/DartResourceRetriever.hpp +104 -0
- include/dart/utils/FileInfoC3D.hpp +91 -0
- include/dart/utils/FileInfoDof.hpp +109 -0
- include/dart/utils/FileInfoWorld.hpp +75 -0
- include/dart/utils/PackageResourceRetriever.hpp +118 -0
- include/dart/utils/SkelParser.hpp +70 -0
- include/dart/utils/VskParser.hpp +108 -0
- include/dart/utils/XmlHelpers.hpp +243 -0
- include/dart/utils/all.hpp +14 -0
- include/dart/utils/detail/XmlHelpers-impl.hpp +213 -0
- include/dart/utils/mjcf/MjcfParser.hpp +80 -0
- include/dart/utils/mjcf/all.hpp +3 -0
- include/dart/utils/mjcf/mjcf.hpp +14 -0
- include/dart/utils/sdf/SdfParser.hpp +98 -0
- include/dart/utils/sdf/all.hpp +3 -0
- include/dart/utils/sdf/sdf.hpp +14 -0
- include/dart/utils/urdf/BackwardCompatibility.hpp +52 -0
- include/dart/utils/urdf/DartLoader.hpp +277 -0
- include/dart/utils/urdf/IncludeUrdf.hpp +47 -0
- include/dart/utils/urdf/URDFTypes.hpp +42 -0
- include/dart/utils/urdf/all.hpp +5 -0
- include/dart/utils/urdf/urdf.hpp +14 -0
- include/dart/utils/urdf/urdf_world_parser.hpp +83 -0
- include/dart/utils/utils.hpp +14 -0
- lib64/libdart-collision-bullet.a +0 -0
- lib64/libdart-collision-ode.a +0 -0
- lib64/libdart-external-odelcpsolver.a +0 -0
- lib64/libdart-gui-osg.a +0 -0
- lib64/libdart-optimizer-ipopt.a +0 -0
- lib64/libdart-optimizer-nlopt.a +0 -0
- lib64/libdart-utils-urdf.a +0 -0
- lib64/libdart-utils.a +0 -0
- lib64/libdart.a +0 -0
- lib64/pkgconfig/dart.pc +12 -0
- share/dart/cmake/DARTConfig.cmake +194 -0
- share/dart/cmake/DARTConfigVersion.cmake +65 -0
- share/dart/cmake/DARTFindBullet.cmake +96 -0
- share/dart/cmake/DARTFindEigen3.cmake +9 -0
- share/dart/cmake/DARTFindIPOPT.cmake +20 -0
- share/dart/cmake/DARTFindNLOPT.cmake +17 -0
- share/dart/cmake/DARTFindODE.cmake +23 -0
- share/dart/cmake/DARTFindOpenSceneGraph.cmake +69 -0
- share/dart/cmake/DARTFindassimp.cmake +18 -0
- share/dart/cmake/DARTFindfcl.cmake +23 -0
- share/dart/cmake/DARTFindfmt.cmake +9 -0
- share/dart/cmake/DARTFindimgui.cmake +21 -0
- share/dart/cmake/DARTFindoctomap.cmake +17 -0
- share/dart/cmake/DARTFindspdlog.cmake +9 -0
- share/dart/cmake/DARTFindtinyxml2.cmake +27 -0
- share/dart/cmake/DARTFindurdfdom.cmake +29 -0
- share/dart/cmake/FindIPOPT.cmake +54 -0
- share/dart/cmake/FindNLOPT.cmake +54 -0
- share/dart/cmake/FindODE.cmake +54 -0
- share/dart/cmake/Findassimp.cmake +56 -0
- share/dart/cmake/Findfcl.cmake +67 -0
- share/dart/cmake/Findimgui.cmake +70 -0
- share/dart/cmake/Findtinyxml2.cmake +54 -0
- share/dart/cmake/dart_collision-bulletComponent.cmake +19 -0
- share/dart/cmake/dart_collision-bulletTargets-release.cmake +19 -0
- share/dart/cmake/dart_collision-bulletTargets.cmake +122 -0
- share/dart/cmake/dart_collision-odeComponent.cmake +19 -0
- share/dart/cmake/dart_collision-odeTargets-release.cmake +19 -0
- share/dart/cmake/dart_collision-odeTargets.cmake +122 -0
- share/dart/cmake/dart_dartComponent.cmake +19 -0
- share/dart/cmake/dart_dartTargets-release.cmake +19 -0
- share/dart/cmake/dart_dartTargets.cmake +125 -0
- share/dart/cmake/dart_external-odelcpsolverComponent.cmake +19 -0
- share/dart/cmake/dart_external-odelcpsolverTargets-release.cmake +19 -0
- share/dart/cmake/dart_external-odelcpsolverTargets.cmake +106 -0
- share/dart/cmake/dart_gui-osgComponent.cmake +19 -0
- share/dart/cmake/dart_gui-osgTargets-release.cmake +19 -0
- share/dart/cmake/dart_gui-osgTargets.cmake +122 -0
- share/dart/cmake/dart_optimizer-ipoptComponent.cmake +19 -0
- share/dart/cmake/dart_optimizer-ipoptTargets-release.cmake +19 -0
- share/dart/cmake/dart_optimizer-ipoptTargets.cmake +123 -0
- share/dart/cmake/dart_optimizer-nloptComponent.cmake +19 -0
- share/dart/cmake/dart_optimizer-nloptTargets-release.cmake +19 -0
- share/dart/cmake/dart_optimizer-nloptTargets.cmake +123 -0
- share/dart/cmake/dart_utils-urdfComponent.cmake +19 -0
- share/dart/cmake/dart_utils-urdfTargets-release.cmake +19 -0
- share/dart/cmake/dart_utils-urdfTargets.cmake +122 -0
- share/dart/cmake/dart_utilsComponent.cmake +19 -0
- share/dart/cmake/dart_utilsTargets-release.cmake +19 -0
- share/dart/cmake/dart_utilsTargets.cmake +122 -0
- share/dart/package.xml +42 -0
- share/doc/dart/data/c3d/nick_freeform_001.c3d +0 -0
- share/doc/dart/data/c3d/squat.c3d +0 -0
- share/doc/dart/data/dof/RHand.dof +205 -0
- share/doc/dart/data/dof/fixedHand.dof +205 -0
- share/doc/dart/data/dof/init_Tpose.dof +240 -0
- share/doc/dart/data/dof/same.dof +1003 -0
- share/doc/dart/data/dof/simMotion.dof +1817 -0
- share/doc/dart/data/dof/simMotion1.dof +1355 -0
- share/doc/dart/data/etc/fort.4 +43 -0
- share/doc/dart/data/humanJointLimits/neuralnets/net-larm +0 -0
- share/doc/dart/data/humanJointLimits/neuralnets/net-lleg +0 -0
- share/doc/dart/data/mjcf/openai/LICENSE.md +36 -0
- share/doc/dart/data/mjcf/openai/ant.xml +81 -0
- share/doc/dart/data/mjcf/openai/half_cheetah.xml +96 -0
- share/doc/dart/data/mjcf/openai/hopper.xml +50 -0
- share/doc/dart/data/mjcf/openai/humanoid.xml +121 -0
- share/doc/dart/data/mjcf/openai/humanoidstandup.xml +121 -0
- share/doc/dart/data/mjcf/openai/inverted_double_pendulum.xml +47 -0
- share/doc/dart/data/mjcf/openai/inverted_pendulum.xml +27 -0
- share/doc/dart/data/mjcf/openai/point.xml +31 -0
- share/doc/dart/data/mjcf/openai/pusher.xml +91 -0
- share/doc/dart/data/mjcf/openai/reacher.xml +39 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/pick_and_place.xml +35 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/push.xml +32 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/reach.xml +26 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/robot.xml +123 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/shared.xml +66 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/slide.xml +32 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/.get +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/base_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/bellows_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/elbow_flex_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/estop_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/forearm_roll_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/gripper_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/head_pan_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/head_tilt_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/l_wheel_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/laser_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/r_wheel_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/shoulder_lift_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/shoulder_pan_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/torso_fixed_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/torso_lift_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/upperarm_roll_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/wrist_flex_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/wrist_roll_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/textures/block.png +0 -0
- share/doc/dart/data/mjcf/openai/robotics/textures/block_hidden.png +0 -0
- share/doc/dart/data/mjcf/openai/striker.xml +101 -0
- share/doc/dart/data/mjcf/openai/swimmer.xml +39 -0
- share/doc/dart/data/mjcf/openai/thrower.xml +127 -0
- share/doc/dart/data/mjcf/openai/walker2d.xml +62 -0
- share/doc/dart/data/mjcf/test/default.xml +17 -0
- share/doc/dart/data/mjcf/test/include_default.xml +8 -0
- share/doc/dart/data/mjcf/test/include_main.xml +12 -0
- share/doc/dart/data/obj/Body_Hip.obj +22830 -0
- share/doc/dart/data/obj/BoxSmall.obj +23 -0
- share/doc/dart/data/obj/foot.obj +10970 -0
- share/doc/dart/data/other/torus1.path +11991 -0
- share/doc/dart/data/other/torus1.tris +5329 -0
- share/doc/dart/data/other/torus2.path +11991 -0
- share/doc/dart/data/other/torus2.tris +12961 -0
- share/doc/dart/data/screencap/.KEEP +0 -0
- share/doc/dart/data/sdf/atlas/atlas_v3.urdf +914 -0
- share/doc/dart/data/sdf/atlas/atlas_v3_no_head.sdf +1541 -0
- share/doc/dart/data/sdf/atlas/atlas_v3_no_head.urdf +914 -0
- share/doc/dart/data/sdf/atlas/atlas_v3_no_head_soft_feet.sdf +1567 -0
- share/doc/dart/data/sdf/atlas/ground.urdf +28 -0
- share/doc/dart/data/sdf/atlas/head.dae +8607 -0
- share/doc/dart/data/sdf/atlas/head.stl +0 -0
- share/doc/dart/data/sdf/atlas/head_camera.dae +2326 -0
- share/doc/dart/data/sdf/atlas/head_camera.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_clav.dae +1278 -0
- share/doc/dart/data/sdf/atlas/l_clav.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_farm.dae +1204 -0
- share/doc/dart/data/sdf/atlas/l_farm.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_foot.dae +1330 -0
- share/doc/dart/data/sdf/atlas/l_foot.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_hand.dae +964 -0
- share/doc/dart/data/sdf/atlas/l_hand.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_larm.dae +1378 -0
- share/doc/dart/data/sdf/atlas/l_larm.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_lglut.dae +897 -0
- share/doc/dart/data/sdf/atlas/l_lglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_lleg.dae +6660 -0
- share/doc/dart/data/sdf/atlas/l_lleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_scap.dae +1531 -0
- share/doc/dart/data/sdf/atlas/l_scap.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_talus.dae +374 -0
- share/doc/dart/data/sdf/atlas/l_talus.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_uarm.dae +1204 -0
- share/doc/dart/data/sdf/atlas/l_uarm.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_uglut.dae +398 -0
- share/doc/dart/data/sdf/atlas/l_uglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_uleg.dae +9087 -0
- share/doc/dart/data/sdf/atlas/l_uleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/ltorso.dae +614 -0
- share/doc/dart/data/sdf/atlas/ltorso.stl +0 -0
- share/doc/dart/data/sdf/atlas/mtorso.dae +266 -0
- share/doc/dart/data/sdf/atlas/mtorso.stl +0 -0
- share/doc/dart/data/sdf/atlas/pelvis.dae +8727 -0
- share/doc/dart/data/sdf/atlas/pelvis.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_clav.dae +1278 -0
- share/doc/dart/data/sdf/atlas/r_clav.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_farm.dae +1204 -0
- share/doc/dart/data/sdf/atlas/r_farm.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_foot.dae +1330 -0
- share/doc/dart/data/sdf/atlas/r_foot.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_hand.dae +904 -0
- share/doc/dart/data/sdf/atlas/r_hand.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_larm.dae +1378 -0
- share/doc/dart/data/sdf/atlas/r_larm.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_lglut.dae +897 -0
- share/doc/dart/data/sdf/atlas/r_lglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_lleg.dae +6661 -0
- share/doc/dart/data/sdf/atlas/r_lleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_scap.dae +1531 -0
- share/doc/dart/data/sdf/atlas/r_scap.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_talus.dae +374 -0
- share/doc/dart/data/sdf/atlas/r_talus.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_uarm.dae +1144 -0
- share/doc/dart/data/sdf/atlas/r_uarm.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_uglut.dae +398 -0
- share/doc/dart/data/sdf/atlas/r_uglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_uleg.dae +9087 -0
- share/doc/dart/data/sdf/atlas/r_uleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/utorso.dae +28342 -0
- share/doc/dart/data/sdf/atlas/utorso.stl +0 -0
- share/doc/dart/data/sdf/atlas/utorso_mod.dae +16508 -0
- share/doc/dart/data/sdf/atlas/utorso_mod.stl +0 -0
- share/doc/dart/data/sdf/atlas/utorso_pack.dae +8521 -0
- share/doc/dart/data/sdf/atlas/utorso_pack.stl +0 -0
- share/doc/dart/data/sdf/benchmark.world +2510 -0
- share/doc/dart/data/sdf/double_pendulum.world +168 -0
- share/doc/dart/data/sdf/double_pendulum_with_base.world +263 -0
- share/doc/dart/data/sdf/empty.world +13 -0
- share/doc/dart/data/sdf/ground.world +48 -0
- share/doc/dart/data/sdf/materials/textures/atlas_cage_and_camera_diffuse_flat.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/drc_extremities_diffuse.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/drc_labels_1.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/drc_torso_head_diffuse.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/extremities_diffuse_unplugged.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/right_leg_diffuse_unplugged.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/torso_diffuse_unplugged.jpg +0 -0
- share/doc/dart/data/sdf/quad.sdf +867 -0
- share/doc/dart/data/sdf/test/force_torque_test.world +173 -0
- share/doc/dart/data/sdf/test/force_torque_test2.world +214 -0
- share/doc/dart/data/sdf/test/issue1193_revolute_test.sdf +70 -0
- share/doc/dart/data/sdf/test/issue1193_revolute_with_offset_test.sdf +70 -0
- share/doc/dart/data/sdf/test/issue1624_cubes.sdf +5037 -0
- share/doc/dart/data/sdf/test/single_bodynode_skeleton.world +55 -0
- share/doc/dart/data/sdf/test/test_issue1583.model +45 -0
- share/doc/dart/data/sdf/test/test_issue1596.model +182 -0
- share/doc/dart/data/sdf/test/test_skeleton_joint.world +278 -0
- share/doc/dart/data/skel/biped.skel +850 -0
- share/doc/dart/data/skel/bullet_collision.skel +174 -0
- share/doc/dart/data/skel/chain.skel +212 -0
- share/doc/dart/data/skel/cube.skel +71 -0
- share/doc/dart/data/skel/cubes.skel +137 -0
- share/doc/dart/data/skel/empty.skel +10 -0
- share/doc/dart/data/skel/freeChain.skel +212 -0
- share/doc/dart/data/skel/fullbody1.skel +1177 -0
- share/doc/dart/data/skel/ground.skel +31 -0
- share/doc/dart/data/skel/joint_limit.skel +123 -0
- share/doc/dart/data/skel/kima/abdomen.dae +18933 -0
- share/doc/dart/data/skel/kima/head.dae +34634 -0
- share/doc/dart/data/skel/kima/kima_human_edited.skel +933 -0
- share/doc/dart/data/skel/kima/kima_human_left_arm.skel +323 -0
- share/doc/dart/data/skel/kima/kima_human_left_leg.skel +327 -0
- share/doc/dart/data/skel/kima/l-clavicle.dae +20111 -0
- share/doc/dart/data/skel/kima/l-foot.dae +28208 -0
- share/doc/dart/data/skel/kima/pelvis.dae +35919 -0
- share/doc/dart/data/skel/kima/r-clavicle.dae +20090 -0
- share/doc/dart/data/skel/kima/thorax.dae +47337 -0
- share/doc/dart/data/skel/mesh_collision.skel +137 -0
- share/doc/dart/data/skel/shapes.skel +378 -0
- share/doc/dart/data/skel/skateboard.skel +222 -0
- share/doc/dart/data/skel/softBodies.skel +284 -0
- share/doc/dart/data/skel/soft_cubes.skel +134 -0
- share/doc/dart/data/skel/soft_open_chain.skel +241 -0
- share/doc/dart/data/skel/sphere.skel +74 -0
- share/doc/dart/data/skel/spheres.skel +118 -0
- share/doc/dart/data/skel/test/SimplePendulum.skel +141 -0
- share/doc/dart/data/skel/test/ball_joints.skel +49 -0
- share/doc/dart/data/skel/test/box_stacking.skel +346 -0
- share/doc/dart/data/skel/test/boxes.skel +52 -0
- share/doc/dart/data/skel/test/chainwhipa.skel +193 -0
- share/doc/dart/data/skel/test/collision_of_prescribed_joints_test.skel +249 -0
- share/doc/dart/data/skel/test/dof_attribute_test.skel +206 -0
- share/doc/dart/data/skel/test/double_pendulum.skel +76 -0
- share/doc/dart/data/skel/test/double_pendulum_ball_joint.skel +76 -0
- share/doc/dart/data/skel/test/double_pendulum_euler_joint.skel +78 -0
- share/doc/dart/data/skel/test/double_pendulum_with_base.skel +1390 -0
- share/doc/dart/data/skel/test/drop.skel +116 -0
- share/doc/dart/data/skel/test/drop_BENCHMARK.skel +10 -0
- share/doc/dart/data/skel/test/drop_unrotated_box.skel +156 -0
- share/doc/dart/data/skel/test/empty.skel +10 -0
- share/doc/dart/data/skel/test/file_info_world_test.skel +1177 -0
- share/doc/dart/data/skel/test/free_joints.skel +49 -0
- share/doc/dart/data/skel/test/gazebo/drop_test.skel +161 -0
- share/doc/dart/data/skel/test/gazebo/force_torque_test.skel +138 -0
- share/doc/dart/data/skel/test/gazebo/force_torque_test2.skel +171 -0
- share/doc/dart/data/skel/test/hybrid_dynamics_test.skel +172 -0
- share/doc/dart/data/skel/test/joint_actuator_type_test.skel +185 -0
- share/doc/dart/data/skel/test/joint_dynamics_elements_test.skel +103 -0
- share/doc/dart/data/skel/test/joint_friction_test.skel +80 -0
- share/doc/dart/data/skel/test/joint_limit_test.skel +80 -0
- share/doc/dart/data/skel/test/planar_joint.skel +167 -0
- share/doc/dart/data/skel/test/serial_chain_BENCHMARK.skel +10 -0
- share/doc/dart/data/skel/test/serial_chain_ball_joint.skel +212 -0
- share/doc/dart/data/skel/test/serial_chain_ball_joint_20.skel +412 -0
- share/doc/dart/data/skel/test/serial_chain_ball_joint_40.skel +812 -0
- share/doc/dart/data/skel/test/serial_chain_eulerxyz_joint.skel +224 -0
- share/doc/dart/data/skel/test/serial_chain_revolute_joint.skel +244 -0
- share/doc/dart/data/skel/test/simple_tree_structure.skel +108 -0
- share/doc/dart/data/skel/test/simple_tree_structure_ball_joint.skel +108 -0
- share/doc/dart/data/skel/test/simple_tree_structure_euler_joint.skel +111 -0
- share/doc/dart/data/skel/test/single_pendulum.skel +55 -0
- share/doc/dart/data/skel/test/single_pendulum_ball_joint.skel +55 -0
- share/doc/dart/data/skel/test/single_pendulum_euler_joint.skel +56 -0
- share/doc/dart/data/skel/test/spheres.skel +118 -0
- share/doc/dart/data/skel/test/test_adaptive_deformable.skel +88 -0
- share/doc/dart/data/skel/test/test_articulated_bodies.skel +112 -0
- share/doc/dart/data/skel/test/test_articulated_bodies_10bodies.skel +401 -0
- share/doc/dart/data/skel/test/test_double_pendulum.skel +105 -0
- share/doc/dart/data/skel/test/test_drop_box.skel +87 -0
- share/doc/dart/data/skel/test/test_drop_box_offset.skel +87 -0
- share/doc/dart/data/skel/test/test_drop_low_stiffness.skel +86 -0
- share/doc/dart/data/skel/test/test_drop_sphere.skel +86 -0
- share/doc/dart/data/skel/test/test_shapes.skel +324 -0
- share/doc/dart/data/skel/test/test_single_body.skel +55 -0
- share/doc/dart/data/skel/test/test_single_pendulum.skel +55 -0
- share/doc/dart/data/skel/test/translational_joints.skel +49 -0
- share/doc/dart/data/skel/test/tree_structure.skel +428 -0
- share/doc/dart/data/skel/test/tree_structure_ball_joint.skel +441 -0
- share/doc/dart/data/skel/test/tree_structure_euler_joint.skel +441 -0
- share/doc/dart/data/skel/two_cubes.skel +118 -0
- share/doc/dart/data/skel/vehicle.skel +322 -0
- share/doc/dart/data/test/hello_world.txt +1 -0
- share/doc/dart/data/urdf/KR5/KR5 sixx R650.urdf +397 -0
- share/doc/dart/data/urdf/KR5/ground.urdf +28 -0
- share/doc/dart/data/urdf/KR5/meshes/base_link.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/bicep.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/elbow.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/forearm.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/palm.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/shoulder.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/wrist.STL +0 -0
- share/doc/dart/data/urdf/drchubo/CMakeLists.txt +5 -0
- share/doc/dart/data/urdf/drchubo/drchubo.urdf +1508 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LAP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LAR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LEP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LF1.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LF2.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LF3.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LHP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LHR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LHY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LKP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LSP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LSR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LSY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LWP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LWR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LWY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_NK1_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_NK2.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_NKY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RAP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RAR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_REP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RF1.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RF2.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RF3.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RHP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RHR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RHY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RKP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RSP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RSR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RSY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RWP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RWR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RWY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_TSY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_Torso_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/package.xml +11 -0
- share/doc/dart/data/urdf/test/invalid.urdf +1 -0
- share/doc/dart/data/urdf/test/invalid_mesh.stl +1 -0
- share/doc/dart/data/urdf/test/invalid_mesh.urdf +10 -0
- share/doc/dart/data/urdf/test/issue838.urdf +86 -0
- share/doc/dart/data/urdf/test/joint_properties.urdf +60 -0
- share/doc/dart/data/urdf/test/missing_mesh.urdf +10 -0
- share/doc/dart/data/urdf/test/missing_package.urdf +10 -0
- share/doc/dart/data/urdf/test/primitive_geometry.urdf +12 -0
- share/doc/dart/data/urdf/test/testWorld.urdf +9 -0
- share/doc/dart/data/urdf/wam/meshes/images/base_gray_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/forearm_256x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/lpu_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/shoulder_256x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/upperarm_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/wrist_yaw_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam1.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam1.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam1_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam2.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam2.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam2_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam3.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam3.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam3_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam4.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam4.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam4_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam5.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam5.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam5_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam6.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam6.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam6_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam7.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam7.dae +137 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam7_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam_base.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam_base.dae +103 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam_base_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/wam.urdf +230 -0
- share/doc/dart/data/vsk/Nick01.vsk +398 -0
- share/doc/dart/data/vsk/SehoonVSK3.vsk +398 -0
- share/doc/dart/data/vsk/Yuting.vsk +398 -0
- share/doc/dart/data/vsk/test/empty.vsk +3 -0
- share/doc/dart/examples/CMakeLists.txt +44 -0
- share/doc/dart/examples/README.md +33 -0
- share/doc/dart/examples/add_delete_skels/CMakeLists.txt +19 -0
- share/doc/dart/examples/add_delete_skels/main.cpp +165 -0
- share/doc/dart/examples/atlas_puppet/CMakeLists.txt +19 -0
- share/doc/dart/examples/atlas_puppet/README.md +20 -0
- share/doc/dart/examples/atlas_puppet/main.cpp +930 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconEventHandler.cpp +71 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconEventHandler.hpp +56 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWidget.cpp +187 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWidget.hpp +85 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWorldNode.cpp +134 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWorldNode.hpp +75 -0
- share/doc/dart/examples/atlas_simbicon/CMakeLists.txt +19 -0
- share/doc/dart/examples/atlas_simbicon/Controller.cpp +996 -0
- share/doc/dart/examples/atlas_simbicon/Controller.hpp +203 -0
- share/doc/dart/examples/atlas_simbicon/README.md +20 -0
- share/doc/dart/examples/atlas_simbicon/State.cpp +674 -0
- share/doc/dart/examples/atlas_simbicon/State.hpp +336 -0
- share/doc/dart/examples/atlas_simbicon/StateMachine.cpp +222 -0
- share/doc/dart/examples/atlas_simbicon/StateMachine.hpp +134 -0
- share/doc/dart/examples/atlas_simbicon/TerminalCondition.cpp +111 -0
- share/doc/dart/examples/atlas_simbicon/TerminalCondition.hpp +102 -0
- share/doc/dart/examples/atlas_simbicon/main.cpp +102 -0
- share/doc/dart/examples/biped_stand/CMakeLists.txt +19 -0
- share/doc/dart/examples/biped_stand/README.md +20 -0
- share/doc/dart/examples/biped_stand/main.cpp +287 -0
- share/doc/dart/examples/box_stacking/CMakeLists.txt +19 -0
- share/doc/dart/examples/box_stacking/README.md +20 -0
- share/doc/dart/examples/box_stacking/main.cpp +417 -0
- share/doc/dart/examples/boxes/CMakeLists.txt +19 -0
- share/doc/dart/examples/boxes/README.md +20 -0
- share/doc/dart/examples/boxes/main.cpp +157 -0
- share/doc/dart/examples/drag_and_drop/CMakeLists.txt +19 -0
- share/doc/dart/examples/drag_and_drop/README.md +20 -0
- share/doc/dart/examples/drag_and_drop/main.cpp +101 -0
- share/doc/dart/examples/empty/CMakeLists.txt +19 -0
- share/doc/dart/examples/empty/README.md +20 -0
- share/doc/dart/examples/empty/main.cpp +164 -0
- share/doc/dart/examples/fetch/CMakeLists.txt +19 -0
- share/doc/dart/examples/fetch/README.md +20 -0
- share/doc/dart/examples/fetch/main.cpp +246 -0
- share/doc/dart/examples/hardcoded_design/CMakeLists.txt +19 -0
- share/doc/dart/examples/hardcoded_design/HardcodedEventHandler.cpp +71 -0
- share/doc/dart/examples/hardcoded_design/HardcodedEventHandler.hpp +56 -0
- share/doc/dart/examples/hardcoded_design/README.md +27 -0
- share/doc/dart/examples/hardcoded_design/main.cpp +186 -0
- share/doc/dart/examples/heightmap/CMakeLists.txt +19 -0
- share/doc/dart/examples/heightmap/README.md +20 -0
- share/doc/dart/examples/heightmap/main.cpp +460 -0
- share/doc/dart/examples/hello_world/CMakeLists.txt +19 -0
- share/doc/dart/examples/hello_world/README.md +20 -0
- share/doc/dart/examples/hello_world/main.cpp +114 -0
- share/doc/dart/examples/hubo_puppet/CMakeLists.txt +19 -0
- share/doc/dart/examples/hubo_puppet/README.md +20 -0
- share/doc/dart/examples/hubo_puppet/main.cpp +1464 -0
- share/doc/dart/examples/human_joint_limits/CMakeLists.txt +49 -0
- share/doc/dart/examples/human_joint_limits/HumanArmJointLimitConstraint.cpp +411 -0
- share/doc/dart/examples/human_joint_limits/HumanArmJointLimitConstraint.hpp +182 -0
- share/doc/dart/examples/human_joint_limits/HumanLegJointLimitConstraint.cpp +432 -0
- share/doc/dart/examples/human_joint_limits/HumanLegJointLimitConstraint.hpp +179 -0
- share/doc/dart/examples/human_joint_limits/main.cpp +157 -0
- share/doc/dart/examples/hybrid_dynamics/CMakeLists.txt +19 -0
- share/doc/dart/examples/hybrid_dynamics/README.md +17 -0
- share/doc/dart/examples/hybrid_dynamics/main.cpp +187 -0
- share/doc/dart/examples/imgui/CMakeLists.txt +19 -0
- share/doc/dart/examples/imgui/README.md +20 -0
- share/doc/dart/examples/imgui/main.cpp +289 -0
- share/doc/dart/examples/joint_constraints/CMakeLists.txt +19 -0
- share/doc/dart/examples/joint_constraints/Controller.cpp +110 -0
- share/doc/dart/examples/joint_constraints/Controller.hpp +105 -0
- share/doc/dart/examples/joint_constraints/README.md +22 -0
- share/doc/dart/examples/joint_constraints/main.cpp +242 -0
- share/doc/dart/examples/mixed_chain/CMakeLists.txt +19 -0
- share/doc/dart/examples/mixed_chain/README.md +35 -0
- share/doc/dart/examples/mixed_chain/main.cpp +188 -0
- share/doc/dart/examples/operational_space_control/CMakeLists.txt +19 -0
- share/doc/dart/examples/operational_space_control/README.md +20 -0
- share/doc/dart/examples/operational_space_control/main.cpp +338 -0
- share/doc/dart/examples/point_cloud/CMakeLists.txt +19 -0
- share/doc/dart/examples/point_cloud/README.md +20 -0
- share/doc/dart/examples/point_cloud/main.cpp +740 -0
- share/doc/dart/examples/rerun/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_chain/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_chain/README.md +19 -0
- share/doc/dart/examples/rigid_chain/main.cpp +110 -0
- share/doc/dart/examples/rigid_cubes/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_cubes/README.md +91 -0
- share/doc/dart/examples/rigid_cubes/main.cpp +201 -0
- share/doc/dart/examples/rigid_loop/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_loop/README.md +34 -0
- share/doc/dart/examples/rigid_loop/main.cpp +127 -0
- share/doc/dart/examples/rigid_shapes/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_shapes/README.md +19 -0
- share/doc/dart/examples/rigid_shapes/main.cpp +250 -0
- share/doc/dart/examples/simple_frames/CMakeLists.txt +19 -0
- share/doc/dart/examples/simple_frames/README.md +27 -0
- share/doc/dart/examples/simple_frames/main.cpp +124 -0
- share/doc/dart/examples/simulation_event_handler/CMakeLists.txt +19 -0
- share/doc/dart/examples/simulation_event_handler/README.md +189 -0
- share/doc/dart/examples/simulation_event_handler/SimulationEventHandler.cpp +572 -0
- share/doc/dart/examples/simulation_event_handler/SimulationEventHandler.hpp +211 -0
- share/doc/dart/examples/simulation_event_handler/main.cpp +277 -0
- share/doc/dart/examples/soft_bodies/CMakeLists.txt +19 -0
- share/doc/dart/examples/soft_bodies/README.md +20 -0
- share/doc/dart/examples/soft_bodies/main.cpp +219 -0
- share/doc/dart/examples/speed_test/CMakeLists.txt +19 -0
- share/doc/dart/examples/speed_test/README.md +20 -0
- share/doc/dart/examples/speed_test/main.cpp +250 -0
- share/doc/dart/examples/tinkertoy/CMakeLists.txt +19 -0
- share/doc/dart/examples/tinkertoy/README.md +20 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWidget.cpp +208 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWidget.hpp +70 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWorldNode.cpp +35 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWorldNode.hpp +470 -0
- share/doc/dart/examples/tinkertoy/main.cpp +186 -0
- share/doc/dart/examples/vehicle/CMakeLists.txt +19 -0
- share/doc/dart/examples/vehicle/README.md +22 -0
- share/doc/dart/examples/vehicle/main.cpp +195 -0
- share/doc/dart/examples/wam_ikfast/CMakeLists.txt +22 -0
- share/doc/dart/examples/wam_ikfast/Helpers.cpp +148 -0
- share/doc/dart/examples/wam_ikfast/Helpers.hpp +46 -0
- share/doc/dart/examples/wam_ikfast/InputHandler.cpp +110 -0
- share/doc/dart/examples/wam_ikfast/InputHandler.hpp +73 -0
- share/doc/dart/examples/wam_ikfast/README.md +20 -0
- share/doc/dart/examples/wam_ikfast/WamWorld.cpp +46 -0
- share/doc/dart/examples/wam_ikfast/WamWorld.hpp +53 -0
- share/doc/dart/examples/wam_ikfast/ikfast/CMakeLists.txt +11 -0
- share/doc/dart/examples/wam_ikfast/ikfast/ikfast71.Transform6D.4_6_9_10_11_12_f8.cpp +14930 -0
- share/doc/dart/examples/wam_ikfast/osgWamIkFast.cpp +96 -0
- share/doc/dart/tutorials/CMakeLists.txt +12 -0
- share/doc/dart/tutorials/README.md +45 -0
- share/doc/dart/tutorials/tutorial_biped/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_biped/README +18 -0
- share/doc/dart/tutorials/tutorial_biped/main.cpp +374 -0
- share/doc/dart/tutorials/tutorial_biped_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_biped_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_biped_finished/main.cpp +532 -0
- share/doc/dart/tutorials/tutorial_collisions/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_collisions/README +18 -0
- share/doc/dart/tutorials/tutorial_collisions/main.cpp +506 -0
- share/doc/dart/tutorials/tutorial_collisions_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_collisions_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_collisions_finished/main.cpp +679 -0
- share/doc/dart/tutorials/tutorial_dominoes/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_dominoes/README +18 -0
- share/doc/dart/tutorials/tutorial_dominoes/main.cpp +394 -0
- share/doc/dart/tutorials/tutorial_dominoes_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_dominoes_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_dominoes_finished/main.cpp +559 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum/README +18 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum/main.cpp +443 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum_finished/main.cpp +512 -0
|
@@ -0,0 +1,1350 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2011-2025, The DART development contributors
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* The list of contributors can be found at:
|
|
6
|
+
* https://github.com/dartsim/dart/blob/main/LICENSE
|
|
7
|
+
*
|
|
8
|
+
* This file is provided under the following "BSD-style" License:
|
|
9
|
+
* Redistribution and use in source and binary forms, with or
|
|
10
|
+
* without modification, are permitted provided that the following
|
|
11
|
+
* conditions are met:
|
|
12
|
+
* * Redistributions of source code must retain the above copyright
|
|
13
|
+
* notice, this list of conditions and the following disclaimer.
|
|
14
|
+
* * Redistributions in binary form must reproduce the above
|
|
15
|
+
* copyright notice, this list of conditions and the following
|
|
16
|
+
* disclaimer in the documentation and/or other materials provided
|
|
17
|
+
* with the distribution.
|
|
18
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
|
19
|
+
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
20
|
+
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
21
|
+
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
23
|
+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
26
|
+
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
27
|
+
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
28
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
29
|
+
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
30
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
#ifndef DART_DYNAMICS_SKELETON_HPP_
|
|
34
|
+
#define DART_DYNAMICS_SKELETON_HPP_
|
|
35
|
+
|
|
36
|
+
#include <dart/dynamics/EndEffector.hpp>
|
|
37
|
+
#include <dart/dynamics/HierarchicalIK.hpp>
|
|
38
|
+
#include <dart/dynamics/Joint.hpp>
|
|
39
|
+
#include <dart/dynamics/Marker.hpp>
|
|
40
|
+
#include <dart/dynamics/MetaSkeleton.hpp>
|
|
41
|
+
#include <dart/dynamics/ShapeNode.hpp>
|
|
42
|
+
#include <dart/dynamics/SmartPointer.hpp>
|
|
43
|
+
#include <dart/dynamics/SpecializedNodeManager.hpp>
|
|
44
|
+
#include <dart/dynamics/detail/BodyNodeAspect.hpp>
|
|
45
|
+
#include <dart/dynamics/detail/SkeletonAspect.hpp>
|
|
46
|
+
|
|
47
|
+
#include <dart/common/NameManager.hpp>
|
|
48
|
+
#include <dart/common/VersionCounter.hpp>
|
|
49
|
+
|
|
50
|
+
#include <mutex>
|
|
51
|
+
|
|
52
|
+
namespace dart {
|
|
53
|
+
namespace dynamics {
|
|
54
|
+
|
|
55
|
+
/// class Skeleton
|
|
56
|
+
DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_BEGIN
|
|
57
|
+
class Skeleton : public virtual common::VersionCounter,
|
|
58
|
+
public MetaSkeleton,
|
|
59
|
+
public SkeletonSpecializedFor<ShapeNode, EndEffector, Marker>,
|
|
60
|
+
public detail::SkeletonAspectBase
|
|
61
|
+
{
|
|
62
|
+
public:
|
|
63
|
+
// Some of non-virtual functions of MetaSkeleton are hidden because of the
|
|
64
|
+
// functions of the same name in this class. We expose those functions as
|
|
65
|
+
// follows.
|
|
66
|
+
using MetaSkeleton::getAngularJacobian;
|
|
67
|
+
using MetaSkeleton::getAngularJacobianDeriv;
|
|
68
|
+
using MetaSkeleton::getJacobian;
|
|
69
|
+
using MetaSkeleton::getJacobianClassicDeriv;
|
|
70
|
+
using MetaSkeleton::getJacobianSpatialDeriv;
|
|
71
|
+
using MetaSkeleton::getLinearJacobian;
|
|
72
|
+
using MetaSkeleton::getLinearJacobianDeriv;
|
|
73
|
+
|
|
74
|
+
using AspectPropertiesData = detail::SkeletonAspectProperties;
|
|
75
|
+
using AspectProperties = common::Aspect::MakeProperties<AspectPropertiesData>;
|
|
76
|
+
|
|
77
|
+
using State = common::Composite::State;
|
|
78
|
+
using Properties = common::Composite::Properties;
|
|
79
|
+
|
|
80
|
+
enum ConfigFlags
|
|
81
|
+
{
|
|
82
|
+
CONFIG_NOTHING = 0,
|
|
83
|
+
CONFIG_POSITIONS = 1 << 1,
|
|
84
|
+
CONFIG_VELOCITIES = 1 << 2,
|
|
85
|
+
CONFIG_ACCELERATIONS = 1 << 3,
|
|
86
|
+
CONFIG_FORCES = 1 << 4,
|
|
87
|
+
CONFIG_COMMANDS = 1 << 5,
|
|
88
|
+
CONFIG_ALL = 0xFF
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
/// The Configuration struct represents the joint configuration of a Skeleton.
|
|
92
|
+
/// The size of each Eigen::VectorXd member in this struct must be equal to
|
|
93
|
+
/// the number of degrees of freedom in the Skeleton or it must be zero. We
|
|
94
|
+
/// assume that any Eigen::VectorXd member with zero entries should be
|
|
95
|
+
/// ignored.
|
|
96
|
+
struct Configuration
|
|
97
|
+
{
|
|
98
|
+
Configuration(
|
|
99
|
+
const Eigen::VectorXd& positions = Eigen::VectorXd(),
|
|
100
|
+
const Eigen::VectorXd& velocities = Eigen::VectorXd(),
|
|
101
|
+
const Eigen::VectorXd& accelerations = Eigen::VectorXd(),
|
|
102
|
+
const Eigen::VectorXd& forces = Eigen::VectorXd(),
|
|
103
|
+
const Eigen::VectorXd& commands = Eigen::VectorXd());
|
|
104
|
+
|
|
105
|
+
Configuration(
|
|
106
|
+
const std::vector<std::size_t>& indices,
|
|
107
|
+
const Eigen::VectorXd& positions = Eigen::VectorXd(),
|
|
108
|
+
const Eigen::VectorXd& velocities = Eigen::VectorXd(),
|
|
109
|
+
const Eigen::VectorXd& accelerations = Eigen::VectorXd(),
|
|
110
|
+
const Eigen::VectorXd& forces = Eigen::VectorXd(),
|
|
111
|
+
const Eigen::VectorXd& commands = Eigen::VectorXd());
|
|
112
|
+
|
|
113
|
+
/// A list of degree of freedom indices that each entry in the
|
|
114
|
+
/// Eigen::VectorXd members correspond to.
|
|
115
|
+
std::vector<std::size_t> mIndices;
|
|
116
|
+
|
|
117
|
+
/// Joint positions
|
|
118
|
+
Eigen::VectorXd mPositions;
|
|
119
|
+
|
|
120
|
+
/// Joint velocities
|
|
121
|
+
Eigen::VectorXd mVelocities;
|
|
122
|
+
|
|
123
|
+
/// Joint accelerations
|
|
124
|
+
Eigen::VectorXd mAccelerations;
|
|
125
|
+
|
|
126
|
+
/// Joint forces
|
|
127
|
+
Eigen::VectorXd mForces;
|
|
128
|
+
|
|
129
|
+
/// Joint commands
|
|
130
|
+
Eigen::VectorXd mCommands;
|
|
131
|
+
|
|
132
|
+
/// Equality comparison operator
|
|
133
|
+
bool operator==(const Configuration& other) const;
|
|
134
|
+
|
|
135
|
+
/// Inequality comparison operator
|
|
136
|
+
bool operator!=(const Configuration& other) const;
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
//----------------------------------------------------------------------------
|
|
140
|
+
/// \{ \name Constructor and Destructor
|
|
141
|
+
//----------------------------------------------------------------------------
|
|
142
|
+
|
|
143
|
+
/// Create a new Skeleton inside of a shared_ptr
|
|
144
|
+
static SkeletonPtr create(const std::string& _name = "Skeleton");
|
|
145
|
+
|
|
146
|
+
/// Create a new Skeleton inside of a shared_ptr
|
|
147
|
+
static SkeletonPtr create(const AspectPropertiesData& properties);
|
|
148
|
+
|
|
149
|
+
/// Get the shared_ptr that manages this Skeleton
|
|
150
|
+
SkeletonPtr getPtr();
|
|
151
|
+
|
|
152
|
+
/// Get the shared_ptr that manages this Skeleton
|
|
153
|
+
ConstSkeletonPtr getPtr() const;
|
|
154
|
+
|
|
155
|
+
/// Same as getPtr(), but this allows Skeleton to have a similar interface as
|
|
156
|
+
/// BodyNode and Joint for template programming.
|
|
157
|
+
SkeletonPtr getSkeleton();
|
|
158
|
+
|
|
159
|
+
/// Same as getPtr(), but this allows Skeleton to have a similar interface as
|
|
160
|
+
/// BodyNode and Joint for template programming.
|
|
161
|
+
ConstSkeletonPtr getSkeleton() const;
|
|
162
|
+
|
|
163
|
+
/// Get the mutex that protects the state of this Skeleton
|
|
164
|
+
std::mutex& getMutex() const;
|
|
165
|
+
|
|
166
|
+
/// Get the mutex that protects the state of this Skeleton
|
|
167
|
+
std::unique_ptr<common::LockableReference> getLockableReference()
|
|
168
|
+
const override;
|
|
169
|
+
|
|
170
|
+
Skeleton(const Skeleton&) = delete;
|
|
171
|
+
|
|
172
|
+
/// Destructor
|
|
173
|
+
virtual ~Skeleton();
|
|
174
|
+
|
|
175
|
+
/// Remove copy operator
|
|
176
|
+
Skeleton& operator=(const Skeleton& _other) = delete;
|
|
177
|
+
|
|
178
|
+
/// Create an identical clone of this Skeleton.
|
|
179
|
+
/// \deprecated Deprecated in DART 6.7. Please use cloneSkeleton() instead.
|
|
180
|
+
DART_DEPRECATED(6.7)
|
|
181
|
+
SkeletonPtr clone() const;
|
|
182
|
+
// TODO: In DART 7, change this function to override MetaSkeleton::clone()
|
|
183
|
+
// that returns MetaSkeletonPtr
|
|
184
|
+
|
|
185
|
+
/// Create an identical clone of this Skeleton, except that it has a new name.
|
|
186
|
+
/// \deprecated Deprecated in DART 6.7. Please use cloneSkeleton() instead.
|
|
187
|
+
DART_DEPRECATED(6.7)
|
|
188
|
+
SkeletonPtr clone(const std::string& cloneName) const;
|
|
189
|
+
// TODO: In DART 7, change this function to override MetaSkeleton::clone()
|
|
190
|
+
// that returns MetaSkeletonPtr
|
|
191
|
+
|
|
192
|
+
/// Creates and returns a clone of this Skeleton.
|
|
193
|
+
SkeletonPtr cloneSkeleton() const;
|
|
194
|
+
|
|
195
|
+
/// Creates and returns a clone of this Skeleton.
|
|
196
|
+
SkeletonPtr cloneSkeleton(const std::string& cloneName) const;
|
|
197
|
+
|
|
198
|
+
// Documentation inherited
|
|
199
|
+
MetaSkeletonPtr cloneMetaSkeleton(
|
|
200
|
+
const std::string& cloneName) const override;
|
|
201
|
+
|
|
202
|
+
/// \}
|
|
203
|
+
|
|
204
|
+
//----------------------------------------------------------------------------
|
|
205
|
+
/// \{ \name Configuration
|
|
206
|
+
//----------------------------------------------------------------------------
|
|
207
|
+
|
|
208
|
+
/// Set the configuration of this Skeleton
|
|
209
|
+
void setConfiguration(const Configuration& configuration);
|
|
210
|
+
|
|
211
|
+
/// Get the configuration of this Skeleton
|
|
212
|
+
Configuration getConfiguration(int flags = CONFIG_ALL) const;
|
|
213
|
+
|
|
214
|
+
/// Get the configuration of the specified indices in this Skeleton
|
|
215
|
+
Configuration getConfiguration(
|
|
216
|
+
const std::vector<std::size_t>& indices, int flags = CONFIG_ALL) const;
|
|
217
|
+
|
|
218
|
+
/// \}
|
|
219
|
+
|
|
220
|
+
//----------------------------------------------------------------------------
|
|
221
|
+
/// \{ \name State
|
|
222
|
+
//----------------------------------------------------------------------------
|
|
223
|
+
|
|
224
|
+
/// Set the State of this Skeleton [alias for setCompositeState(~)]
|
|
225
|
+
void setState(const State& state);
|
|
226
|
+
|
|
227
|
+
/// Get the State of this Skeleton [alias for getCompositeState()]
|
|
228
|
+
State getState() const;
|
|
229
|
+
|
|
230
|
+
/// \}
|
|
231
|
+
|
|
232
|
+
//----------------------------------------------------------------------------
|
|
233
|
+
/// \{ \name Properties
|
|
234
|
+
//----------------------------------------------------------------------------
|
|
235
|
+
|
|
236
|
+
/// Set all properties of this Skeleton
|
|
237
|
+
void setProperties(const Properties& properties);
|
|
238
|
+
|
|
239
|
+
/// Get all properties of this Skeleton
|
|
240
|
+
Properties getProperties() const;
|
|
241
|
+
|
|
242
|
+
/// Set the Properties of this Skeleton
|
|
243
|
+
void setProperties(const AspectProperties& properties);
|
|
244
|
+
|
|
245
|
+
/// Get the Properties of this Skeleton
|
|
246
|
+
DART_DEPRECATED(6.0)
|
|
247
|
+
const AspectProperties& getSkeletonProperties() const;
|
|
248
|
+
|
|
249
|
+
/// Set the AspectProperties of this Skeleton
|
|
250
|
+
void setAspectProperties(const AspectProperties& properties);
|
|
251
|
+
|
|
252
|
+
/// Set name.
|
|
253
|
+
const std::string& setName(const std::string& _name) override;
|
|
254
|
+
|
|
255
|
+
/// Get name.
|
|
256
|
+
const std::string& getName() const override;
|
|
257
|
+
|
|
258
|
+
/// Deprecated. Please use enableSelfCollisionCheck() and
|
|
259
|
+
/// setAdjacentBodyCheck() instead.
|
|
260
|
+
DART_DEPRECATED(6.0)
|
|
261
|
+
void enableSelfCollision(bool enableAdjacentBodyCheck = false);
|
|
262
|
+
|
|
263
|
+
/// Deprecated. Please use disableSelfCollisionCheck() instead.
|
|
264
|
+
DART_DEPRECATED(6.0)
|
|
265
|
+
void disableSelfCollision();
|
|
266
|
+
|
|
267
|
+
/// Set whether to check self-collision.
|
|
268
|
+
void setSelfCollisionCheck(bool enable);
|
|
269
|
+
|
|
270
|
+
/// Return whether self-collision check is enabled.
|
|
271
|
+
bool getSelfCollisionCheck() const;
|
|
272
|
+
|
|
273
|
+
/// Enable self-collision check.
|
|
274
|
+
void enableSelfCollisionCheck();
|
|
275
|
+
|
|
276
|
+
/// Disable self-collision check.
|
|
277
|
+
void disableSelfCollisionCheck();
|
|
278
|
+
|
|
279
|
+
/// Return true if self-collision check is enabled
|
|
280
|
+
bool isEnabledSelfCollisionCheck() const;
|
|
281
|
+
|
|
282
|
+
/// Set whether to check adjacent bodies. This option is effective only when
|
|
283
|
+
/// the self-collision check is enabled.
|
|
284
|
+
void setAdjacentBodyCheck(bool enable);
|
|
285
|
+
|
|
286
|
+
/// Return whether adjacent body check is enabled.
|
|
287
|
+
bool getAdjacentBodyCheck() const;
|
|
288
|
+
|
|
289
|
+
/// Enable collision check for adjacent bodies. This option is effective only
|
|
290
|
+
/// when the self-collision check is enabled.
|
|
291
|
+
void enableAdjacentBodyCheck();
|
|
292
|
+
|
|
293
|
+
/// Disable collision check for adjacent bodies. This option is effective only
|
|
294
|
+
/// when the self-collision check is enabled.
|
|
295
|
+
void disableAdjacentBodyCheck();
|
|
296
|
+
|
|
297
|
+
/// Return true if self-collision check is enabled including adjacent bodies.
|
|
298
|
+
bool isEnabledAdjacentBodyCheck() const;
|
|
299
|
+
|
|
300
|
+
/// Set whether this skeleton will be updated by forward dynamics.
|
|
301
|
+
/// \param[in] _isMobile True if this skeleton is mobile.
|
|
302
|
+
void setMobile(bool _isMobile);
|
|
303
|
+
|
|
304
|
+
/// Get whether this skeleton will be updated by forward dynamics.
|
|
305
|
+
/// \return True if this skeleton is mobile.
|
|
306
|
+
bool isMobile() const;
|
|
307
|
+
|
|
308
|
+
/// Set time step. This timestep is used for implicit joint damping
|
|
309
|
+
/// force.
|
|
310
|
+
void setTimeStep(double _timeStep);
|
|
311
|
+
|
|
312
|
+
/// Get time step.
|
|
313
|
+
double getTimeStep() const;
|
|
314
|
+
|
|
315
|
+
/// Set 3-dim gravitational acceleration. The gravity is used for
|
|
316
|
+
/// calculating gravity force vector of the skeleton.
|
|
317
|
+
void setGravity(const Eigen::Vector3d& _gravity);
|
|
318
|
+
|
|
319
|
+
/// Get 3-dim gravitational acceleration.
|
|
320
|
+
const Eigen::Vector3d& getGravity() const;
|
|
321
|
+
|
|
322
|
+
/// \}
|
|
323
|
+
|
|
324
|
+
//----------------------------------------------------------------------------
|
|
325
|
+
/// \{ \name Structural Properties
|
|
326
|
+
//----------------------------------------------------------------------------
|
|
327
|
+
|
|
328
|
+
/// Create a Joint and child BodyNode pair of the given types. When creating
|
|
329
|
+
/// a root (parentless) BodyNode, pass in nullptr for the _parent argument.
|
|
330
|
+
template <class JointType, class NodeType = BodyNode>
|
|
331
|
+
std::pair<JointType*, NodeType*> createJointAndBodyNodePair(
|
|
332
|
+
BodyNode* _parent = nullptr,
|
|
333
|
+
const typename JointType::Properties& _jointProperties
|
|
334
|
+
= typename JointType::Properties(),
|
|
335
|
+
const typename NodeType::Properties& _bodyProperties
|
|
336
|
+
= typename NodeType::Properties());
|
|
337
|
+
|
|
338
|
+
// Documentation inherited
|
|
339
|
+
std::size_t getNumBodyNodes() const override;
|
|
340
|
+
|
|
341
|
+
/// Get number of rigid body nodes.
|
|
342
|
+
std::size_t getNumRigidBodyNodes() const;
|
|
343
|
+
|
|
344
|
+
/// Get number of soft body nodes.
|
|
345
|
+
std::size_t getNumSoftBodyNodes() const;
|
|
346
|
+
|
|
347
|
+
/// Get the number of independent trees that this Skeleton contains
|
|
348
|
+
std::size_t getNumTrees() const;
|
|
349
|
+
|
|
350
|
+
/// Get the root BodyNode of the tree whose index in this Skeleton is _treeIdx
|
|
351
|
+
BodyNode* getRootBodyNode(std::size_t _treeIdx = 0);
|
|
352
|
+
|
|
353
|
+
/// Get the const root BodyNode of the tree whose index in this Skeleton is
|
|
354
|
+
/// _treeIdx
|
|
355
|
+
const BodyNode* getRootBodyNode(std::size_t _treeIdx = 0) const;
|
|
356
|
+
|
|
357
|
+
/// Get the root Joint of the tree whose index in this Skeleton is treeIdx
|
|
358
|
+
Joint* getRootJoint(std::size_t treeIdx = 0u);
|
|
359
|
+
|
|
360
|
+
/// Get the const root Joint of the tree whose index in this Skeleton is
|
|
361
|
+
/// treeIdx
|
|
362
|
+
const Joint* getRootJoint(std::size_t treeIdx = 0u) const;
|
|
363
|
+
|
|
364
|
+
// Documentation inherited
|
|
365
|
+
BodyNode* getBodyNode(std::size_t _idx) override;
|
|
366
|
+
|
|
367
|
+
// Documentation inherited
|
|
368
|
+
const BodyNode* getBodyNode(std::size_t _idx) const override;
|
|
369
|
+
|
|
370
|
+
/// Get SoftBodyNode whose index is _idx
|
|
371
|
+
SoftBodyNode* getSoftBodyNode(std::size_t _idx);
|
|
372
|
+
|
|
373
|
+
/// Get const SoftBodyNode whose index is _idx
|
|
374
|
+
const SoftBodyNode* getSoftBodyNode(std::size_t _idx) const;
|
|
375
|
+
|
|
376
|
+
// Documentation inherited
|
|
377
|
+
BodyNode* getBodyNode(const std::string& name) override;
|
|
378
|
+
|
|
379
|
+
// Documentation inherited
|
|
380
|
+
const BodyNode* getBodyNode(const std::string& name) const override;
|
|
381
|
+
|
|
382
|
+
/// Get soft body node whose name is _name
|
|
383
|
+
SoftBodyNode* getSoftBodyNode(const std::string& _name);
|
|
384
|
+
|
|
385
|
+
/// Get const soft body node whose name is _name
|
|
386
|
+
const SoftBodyNode* getSoftBodyNode(const std::string& _name) const;
|
|
387
|
+
|
|
388
|
+
// Documentation inherited
|
|
389
|
+
const std::vector<BodyNode*>& getBodyNodes() override;
|
|
390
|
+
|
|
391
|
+
// Documentation inherited
|
|
392
|
+
const std::vector<const BodyNode*>& getBodyNodes() const override;
|
|
393
|
+
|
|
394
|
+
/// \copydoc MetaSkeleton::getBodyNodes(const std::string&).
|
|
395
|
+
///
|
|
396
|
+
/// \note Skeleton always guarantees name uniqueness for BodyNodes and Joints.
|
|
397
|
+
/// So this function returns the single BodyNode of the given name if it
|
|
398
|
+
/// exists.
|
|
399
|
+
std::vector<BodyNode*> getBodyNodes(const std::string& name) override;
|
|
400
|
+
|
|
401
|
+
/// \copydoc MetaSkeleton::getBodyNodes(const std::string&).
|
|
402
|
+
///
|
|
403
|
+
/// \note Skeleton always guarantees name uniqueness for BodyNodes and Joints.
|
|
404
|
+
/// So this function returns the single BodyNode of the given name if it
|
|
405
|
+
/// exists.
|
|
406
|
+
std::vector<const BodyNode*> getBodyNodes(
|
|
407
|
+
const std::string& name) const override;
|
|
408
|
+
|
|
409
|
+
// Documentation inherited
|
|
410
|
+
bool hasBodyNode(const BodyNode* bodyNode) const override;
|
|
411
|
+
|
|
412
|
+
// Documentation inherited
|
|
413
|
+
std::size_t getIndexOf(
|
|
414
|
+
const BodyNode* _bn, bool _warning = true) const override;
|
|
415
|
+
|
|
416
|
+
/// Get the BodyNodes belonging to a tree in this Skeleton
|
|
417
|
+
const std::vector<BodyNode*>& getTreeBodyNodes(std::size_t _treeIdx);
|
|
418
|
+
|
|
419
|
+
/// Get the BodyNodes belonging to a tree in this Skeleton
|
|
420
|
+
std::vector<const BodyNode*> getTreeBodyNodes(std::size_t _treeIdx) const;
|
|
421
|
+
|
|
422
|
+
// Documentation inherited
|
|
423
|
+
std::size_t getNumJoints() const override;
|
|
424
|
+
|
|
425
|
+
// Documentation inherited
|
|
426
|
+
Joint* getJoint(std::size_t _idx) override;
|
|
427
|
+
|
|
428
|
+
// Documentation inherited
|
|
429
|
+
const Joint* getJoint(std::size_t _idx) const override;
|
|
430
|
+
|
|
431
|
+
// Documentation inherited
|
|
432
|
+
Joint* getJoint(const std::string& name) override;
|
|
433
|
+
|
|
434
|
+
// Documentation inherited
|
|
435
|
+
const Joint* getJoint(const std::string& name) const override;
|
|
436
|
+
|
|
437
|
+
// Documentation inherited
|
|
438
|
+
std::vector<Joint*> getJoints() override;
|
|
439
|
+
|
|
440
|
+
// Documentation inherited
|
|
441
|
+
std::vector<const Joint*> getJoints() const override;
|
|
442
|
+
|
|
443
|
+
/// \copydoc MetaSkeleton::getJoints(const std::string&).
|
|
444
|
+
///
|
|
445
|
+
/// \note Skeleton always guarantees name uniqueness for BodyNodes and Joints.
|
|
446
|
+
/// So this function returns the single Joint of the given name if it exists.
|
|
447
|
+
std::vector<Joint*> getJoints(const std::string& name) override;
|
|
448
|
+
|
|
449
|
+
/// \copydoc MetaSkeleton::getJoints(const std::string&).
|
|
450
|
+
///
|
|
451
|
+
/// \note Skeleton always guarantees name uniqueness for BodyNodes and Joints.
|
|
452
|
+
/// So this function returns the single Joint of the given name if it exists.
|
|
453
|
+
std::vector<const Joint*> getJoints(const std::string& name) const override;
|
|
454
|
+
|
|
455
|
+
// Documentation inherited
|
|
456
|
+
bool hasJoint(const Joint* joint) const override;
|
|
457
|
+
|
|
458
|
+
// Documentation inherited
|
|
459
|
+
std::size_t getIndexOf(
|
|
460
|
+
const Joint* _joint, bool _warning = true) const override;
|
|
461
|
+
|
|
462
|
+
// Documentation inherited
|
|
463
|
+
std::size_t getNumDofs() const override;
|
|
464
|
+
|
|
465
|
+
// Documentation inherited
|
|
466
|
+
DegreeOfFreedom* getDof(std::size_t _idx) override;
|
|
467
|
+
|
|
468
|
+
// Documentation inherited
|
|
469
|
+
const DegreeOfFreedom* getDof(std::size_t _idx) const override;
|
|
470
|
+
|
|
471
|
+
/// Get degree of freedom (aka generalized coordinate) whose name is _name
|
|
472
|
+
DegreeOfFreedom* getDof(const std::string& _name);
|
|
473
|
+
|
|
474
|
+
/// Get degree of freedom (aka generalized coordinate) whose name is _name
|
|
475
|
+
const DegreeOfFreedom* getDof(const std::string& _name) const;
|
|
476
|
+
|
|
477
|
+
// Documentation inherited
|
|
478
|
+
const std::vector<DegreeOfFreedom*>& getDofs() override;
|
|
479
|
+
|
|
480
|
+
// Documentation inherited
|
|
481
|
+
std::vector<const DegreeOfFreedom*> getDofs() const override;
|
|
482
|
+
|
|
483
|
+
// Documentation inherited
|
|
484
|
+
std::size_t getIndexOf(
|
|
485
|
+
const DegreeOfFreedom* _dof, bool _warning = true) const override;
|
|
486
|
+
|
|
487
|
+
/// Get the DegreesOfFreedom belonging to a tree in this Skeleton
|
|
488
|
+
const std::vector<DegreeOfFreedom*>& getTreeDofs(std::size_t _treeIdx);
|
|
489
|
+
|
|
490
|
+
/// Get the DegreesOfFreedom belonging to a tree in this Skeleton
|
|
491
|
+
const std::vector<const DegreeOfFreedom*>& getTreeDofs(
|
|
492
|
+
std::size_t _treeIdx) const;
|
|
493
|
+
|
|
494
|
+
/// This function is only meant for debugging purposes. It will verify that
|
|
495
|
+
/// all objects held in the Skeleton have the correct information about their
|
|
496
|
+
/// indexing.
|
|
497
|
+
bool checkIndexingConsistency() const;
|
|
498
|
+
|
|
499
|
+
/// Get a pointer to a WholeBodyIK module for this Skeleton. If _createIfNull
|
|
500
|
+
/// is true, then the IK module will be generated if one does not already
|
|
501
|
+
/// exist.
|
|
502
|
+
const std::shared_ptr<WholeBodyIK>& getIK(bool _createIfNull = false);
|
|
503
|
+
|
|
504
|
+
/// Get a pointer to a WholeBodyIK module for this Skeleton. The IK module
|
|
505
|
+
/// will be generated if one does not already exist. This function is actually
|
|
506
|
+
/// the same as getIK(true).
|
|
507
|
+
const std::shared_ptr<WholeBodyIK>& getOrCreateIK();
|
|
508
|
+
|
|
509
|
+
/// Get a pointer to a WholeBodyIK module for this Skeleton. Because this is a
|
|
510
|
+
/// const function, a new IK module cannot be created if one does not already
|
|
511
|
+
/// exist.
|
|
512
|
+
std::shared_ptr<const WholeBodyIK> getIK() const;
|
|
513
|
+
|
|
514
|
+
/// Create a new WholeBodyIK module for this Skeleton. If an IK module already
|
|
515
|
+
/// exists in this Skeleton, it will be destroyed and replaced by a brand new
|
|
516
|
+
/// one.
|
|
517
|
+
const std::shared_ptr<WholeBodyIK>& createIK();
|
|
518
|
+
|
|
519
|
+
/// Wipe away the WholeBodyIK module for this Skeleton, leaving it as a
|
|
520
|
+
/// nullptr
|
|
521
|
+
void clearIK();
|
|
522
|
+
|
|
523
|
+
DART_BAKE_SPECIALIZED_NODE_SKEL_DECLARATIONS(Marker)
|
|
524
|
+
|
|
525
|
+
DART_BAKE_SPECIALIZED_NODE_SKEL_DECLARATIONS(ShapeNode)
|
|
526
|
+
|
|
527
|
+
DART_BAKE_SPECIALIZED_NODE_SKEL_DECLARATIONS(EndEffector)
|
|
528
|
+
|
|
529
|
+
/// \}
|
|
530
|
+
|
|
531
|
+
//----------------------------------------------------------------------------
|
|
532
|
+
// Integration and finite difference
|
|
533
|
+
//----------------------------------------------------------------------------
|
|
534
|
+
|
|
535
|
+
// Documentation inherited
|
|
536
|
+
void integratePositions(double _dt);
|
|
537
|
+
|
|
538
|
+
// Documentation inherited
|
|
539
|
+
void integrateVelocities(double _dt);
|
|
540
|
+
|
|
541
|
+
/// Return the difference of two generalized positions which are measured in
|
|
542
|
+
/// the configuration space of this Skeleton. If the configuration space is
|
|
543
|
+
/// Euclidean space, this function returns _q2 - _q1. Otherwise, it depends on
|
|
544
|
+
/// the type of the configuration space.
|
|
545
|
+
Eigen::VectorXd getPositionDifferences(
|
|
546
|
+
const Eigen::VectorXd& _q2, const Eigen::VectorXd& _q1) const;
|
|
547
|
+
|
|
548
|
+
/// Return the difference of two generalized velocities or accelerations which
|
|
549
|
+
/// are measured in the tangent space at the identity. Since the tangent
|
|
550
|
+
/// spaces are vector spaces, this function always returns _dq2 - _dq1.
|
|
551
|
+
Eigen::VectorXd getVelocityDifferences(
|
|
552
|
+
const Eigen::VectorXd& _dq2, const Eigen::VectorXd& _dq1) const;
|
|
553
|
+
|
|
554
|
+
//----------------------------------------------------------------------------
|
|
555
|
+
/// \{ \name Support Polygon
|
|
556
|
+
//----------------------------------------------------------------------------
|
|
557
|
+
|
|
558
|
+
/// Get the support polygon of this Skeleton, which is computed based on the
|
|
559
|
+
/// gravitational projection of the support geometries of all EndEffectors
|
|
560
|
+
/// in this Skeleton that are currently in support mode.
|
|
561
|
+
const math::SupportPolygon& getSupportPolygon() const;
|
|
562
|
+
|
|
563
|
+
/// Same as getSupportPolygon(), but it will only use EndEffectors within the
|
|
564
|
+
/// specified tree within this Skeleton
|
|
565
|
+
const math::SupportPolygon& getSupportPolygon(std::size_t _treeIdx) const;
|
|
566
|
+
|
|
567
|
+
/// Get a list of the EndEffector indices that correspond to each of the
|
|
568
|
+
/// points in the support polygon.
|
|
569
|
+
const std::vector<std::size_t>& getSupportIndices() const;
|
|
570
|
+
|
|
571
|
+
/// Same as getSupportIndices(), but it corresponds to the support polygon of
|
|
572
|
+
/// the specified tree within this Skeleton
|
|
573
|
+
const std::vector<std::size_t>& getSupportIndices(std::size_t _treeIdx) const;
|
|
574
|
+
|
|
575
|
+
/// Get the axes that correspond to each component in the support polygon.
|
|
576
|
+
/// These axes are needed in order to map the points on a support polygon
|
|
577
|
+
/// into 3D space. If gravity is along the z-direction, then these axes will
|
|
578
|
+
/// simply be <1,0,0> and <0,1,0>.
|
|
579
|
+
const std::pair<Eigen::Vector3d, Eigen::Vector3d>& getSupportAxes() const;
|
|
580
|
+
|
|
581
|
+
/// Same as getSupportAxes(), but it corresponds to the support polygon of the
|
|
582
|
+
/// specified tree within this Skeleton
|
|
583
|
+
const std::pair<Eigen::Vector3d, Eigen::Vector3d>& getSupportAxes(
|
|
584
|
+
std::size_t _treeIdx) const;
|
|
585
|
+
|
|
586
|
+
/// Get the centroid of the support polygon for this Skeleton. If the support
|
|
587
|
+
/// polygon is an empty set, the components of this vector will be nan.
|
|
588
|
+
const Eigen::Vector2d& getSupportCentroid() const;
|
|
589
|
+
|
|
590
|
+
/// Get the centroid of the support polygon for a tree in this Skeleton. If
|
|
591
|
+
/// the support polygon is an empty set, the components of this vector will be
|
|
592
|
+
/// nan.
|
|
593
|
+
const Eigen::Vector2d& getSupportCentroid(std::size_t _treeIdx) const;
|
|
594
|
+
|
|
595
|
+
/// The version number of a support polygon will be incremented each time the
|
|
596
|
+
/// support polygon needs to be recomputed. This number can be used to
|
|
597
|
+
/// immediately determine whether the support polygon has changed since the
|
|
598
|
+
/// last time you asked for it, allowing you to be more efficient in how you
|
|
599
|
+
/// handle the data.
|
|
600
|
+
std::size_t getSupportVersion() const;
|
|
601
|
+
|
|
602
|
+
/// Same as getSupportVersion(), but it corresponds to the support polygon of
|
|
603
|
+
/// the specified tree within this Skeleton
|
|
604
|
+
std::size_t getSupportVersion(std::size_t _treeIdx) const;
|
|
605
|
+
|
|
606
|
+
/// \}
|
|
607
|
+
|
|
608
|
+
//----------------------------------------------------------------------------
|
|
609
|
+
// Kinematics algorithms
|
|
610
|
+
//----------------------------------------------------------------------------
|
|
611
|
+
|
|
612
|
+
/// Compute forward kinematics
|
|
613
|
+
///
|
|
614
|
+
/// In general, this function doesn't need to be called for forward kinematics
|
|
615
|
+
/// to update. Forward kinematics will always be computed when it's needed and
|
|
616
|
+
/// will only perform the computations that are necessary for what the user
|
|
617
|
+
/// requests. This works by performing some bookkeeping internally with dirty
|
|
618
|
+
/// flags whenever a position, velocity, or acceleration is set, either
|
|
619
|
+
/// internally or by the user.
|
|
620
|
+
///
|
|
621
|
+
/// On one hand, this results in some overhead due to the extra effort of
|
|
622
|
+
/// bookkeeping, but on the other hand we have much greater code safety, and
|
|
623
|
+
/// in some cases performance can be dramatically improved with the auto-
|
|
624
|
+
/// updating. For example, this function is inefficient when only one portion
|
|
625
|
+
/// of the BodyNodes needed to be updated rather than the entire Skeleton,
|
|
626
|
+
/// which is common when performing inverse kinematics on a limb or on some
|
|
627
|
+
/// subsection of a Skeleton.
|
|
628
|
+
///
|
|
629
|
+
/// This function might be useful in a case where the user wants to perform
|
|
630
|
+
/// all the forward kinematics computations during a particular time window
|
|
631
|
+
/// rather than waiting for it to be computed at the exact time that it's
|
|
632
|
+
/// needed.
|
|
633
|
+
///
|
|
634
|
+
/// One example would be a real time controller. Let's say a controller gets
|
|
635
|
+
/// encoder data at time t0 but needs to wait until t1 before it receives the
|
|
636
|
+
/// force-torque sensor data that it needs in order to compute the output for
|
|
637
|
+
/// an operational space controller. Instead of being idle from t0 to t1, it
|
|
638
|
+
/// could use that time to compute the forward kinematics by calling this
|
|
639
|
+
/// function.
|
|
640
|
+
void computeForwardKinematics(
|
|
641
|
+
bool _updateTransforms = true,
|
|
642
|
+
bool _updateVels = true,
|
|
643
|
+
bool _updateAccs = true);
|
|
644
|
+
|
|
645
|
+
//----------------------------------------------------------------------------
|
|
646
|
+
// Dynamics algorithms
|
|
647
|
+
//----------------------------------------------------------------------------
|
|
648
|
+
|
|
649
|
+
/// Compute forward dynamics
|
|
650
|
+
void computeForwardDynamics();
|
|
651
|
+
|
|
652
|
+
/// Computes inverse dynamics.
|
|
653
|
+
///
|
|
654
|
+
/// The inverse dynamics is computed according to the following equations of
|
|
655
|
+
/// motion:
|
|
656
|
+
///
|
|
657
|
+
/// \f$ M(q) \ddot{q} + C(q, \dot{q}) + N(q) - \tau_{\text{ext}} - \tau_d -
|
|
658
|
+
/// \tau_s = \tau \f$
|
|
659
|
+
///
|
|
660
|
+
/// where \f$ \tau_{\text{ext}} \f$, \f$ \tau_d \f$, and \f$ \tau_s \f$ are
|
|
661
|
+
/// external forces, joint damping forces, and joint spring forces projected
|
|
662
|
+
/// on to the joint space, respectively. This function provides three flags
|
|
663
|
+
/// whether to take into account each forces in computing the joint forces,
|
|
664
|
+
/// \f$ \tau_d \f$. Not accounting each forces implies that the forces is
|
|
665
|
+
/// added to \f$ \tau \f$ in order to keep the equation equivalent. If there
|
|
666
|
+
/// forces are zero (by setting external forces, damping coeff, spring
|
|
667
|
+
/// stiffness zeros), these flags have no effect.
|
|
668
|
+
///
|
|
669
|
+
/// Once this function is called, the joint forces, \f$ \tau \f$, can be
|
|
670
|
+
/// obtained by calling getForces().
|
|
671
|
+
///
|
|
672
|
+
/// \param[in] _withExternalForces Set \c true to take external forces into
|
|
673
|
+
/// account.
|
|
674
|
+
/// \param[in] _withDampingForces Set \c true to take damping forces into
|
|
675
|
+
/// account.
|
|
676
|
+
/// \param[in] _withSpringForces Set \c true to take spring forces into
|
|
677
|
+
/// account.
|
|
678
|
+
void computeInverseDynamics(
|
|
679
|
+
bool _withExternalForces = false,
|
|
680
|
+
bool _withDampingForces = false,
|
|
681
|
+
bool _withSpringForces = false);
|
|
682
|
+
|
|
683
|
+
//----------------------------------------------------------------------------
|
|
684
|
+
// Impulse-based dynamics algorithms
|
|
685
|
+
//----------------------------------------------------------------------------
|
|
686
|
+
|
|
687
|
+
/// Clear constraint impulses and cache data used for impulse-based forward
|
|
688
|
+
/// dynamics algorithm, where the constraint impulses are spatial constraints
|
|
689
|
+
/// on the BodyNodes and generalized constraints on the Joints.
|
|
690
|
+
void clearConstraintImpulses();
|
|
691
|
+
|
|
692
|
+
/// Update bias impulses
|
|
693
|
+
void updateBiasImpulse(BodyNode* _bodyNode);
|
|
694
|
+
|
|
695
|
+
/// \brief Update bias impulses due to impulse [_imp] on body node [_bodyNode]
|
|
696
|
+
/// \param _bodyNode Body node contraint impulse, _imp, is applied
|
|
697
|
+
/// \param _imp Constraint impulse expressed in body frame of _bodyNode
|
|
698
|
+
void updateBiasImpulse(BodyNode* _bodyNode, const Eigen::Vector6d& _imp);
|
|
699
|
+
|
|
700
|
+
/// \brief Update bias impulses due to impulse [_imp] on body node [_bodyNode]
|
|
701
|
+
/// \param _bodyNode1 Body node contraint impulse, _imp1, is applied
|
|
702
|
+
/// \param _imp1 Constraint impulse expressed in body frame of _bodyNode1
|
|
703
|
+
/// \param _bodyNode2 Body node contraint impulse, _imp2, is applied
|
|
704
|
+
/// \param _imp2 Constraint impulse expressed in body frame of _bodyNode2
|
|
705
|
+
void updateBiasImpulse(
|
|
706
|
+
BodyNode* _bodyNode1,
|
|
707
|
+
const Eigen::Vector6d& _imp1,
|
|
708
|
+
BodyNode* _bodyNode2,
|
|
709
|
+
const Eigen::Vector6d& _imp2);
|
|
710
|
+
|
|
711
|
+
/// \brief Update bias impulses due to impulse[_imp] on body node [_bodyNode]
|
|
712
|
+
void updateBiasImpulse(
|
|
713
|
+
SoftBodyNode* _softBodyNode,
|
|
714
|
+
PointMass* _pointMass,
|
|
715
|
+
const Eigen::Vector3d& _imp);
|
|
716
|
+
|
|
717
|
+
/// \brief Update velocity changes in body nodes and joints due to applied
|
|
718
|
+
/// impulse
|
|
719
|
+
void updateVelocityChange();
|
|
720
|
+
|
|
721
|
+
// TODO(JS): Better naming
|
|
722
|
+
/// Set whether this skeleton is constrained. ConstraintSolver will
|
|
723
|
+
/// mark this.
|
|
724
|
+
void setImpulseApplied(bool _val);
|
|
725
|
+
|
|
726
|
+
/// Get whether this skeleton is constrained
|
|
727
|
+
bool isImpulseApplied() const;
|
|
728
|
+
|
|
729
|
+
/// Compute impulse-based forward dynamics
|
|
730
|
+
void computeImpulseForwardDynamics();
|
|
731
|
+
|
|
732
|
+
//----------------------------------------------------------------------------
|
|
733
|
+
/// \{ \name Jacobians
|
|
734
|
+
//----------------------------------------------------------------------------
|
|
735
|
+
|
|
736
|
+
// Documentation inherited
|
|
737
|
+
math::Jacobian getJacobian(const JacobianNode* _node) const override;
|
|
738
|
+
|
|
739
|
+
// Documentation inherited
|
|
740
|
+
math::Jacobian getJacobian(
|
|
741
|
+
const JacobianNode* _node, const Frame* _inCoordinatesOf) const override;
|
|
742
|
+
|
|
743
|
+
// Documentation inherited
|
|
744
|
+
math::Jacobian getJacobian(
|
|
745
|
+
const JacobianNode* _node,
|
|
746
|
+
const Eigen::Vector3d& _localOffset) const override;
|
|
747
|
+
|
|
748
|
+
// Documentation inherited
|
|
749
|
+
math::Jacobian getJacobian(
|
|
750
|
+
const JacobianNode* _node,
|
|
751
|
+
const Eigen::Vector3d& _localOffset,
|
|
752
|
+
const Frame* _inCoordinatesOf) const override;
|
|
753
|
+
|
|
754
|
+
// Documentation inherited
|
|
755
|
+
math::Jacobian getWorldJacobian(const JacobianNode* _node) const override;
|
|
756
|
+
|
|
757
|
+
// Documentation inherited
|
|
758
|
+
math::Jacobian getWorldJacobian(
|
|
759
|
+
const JacobianNode* _node,
|
|
760
|
+
const Eigen::Vector3d& _localOffset) const override;
|
|
761
|
+
|
|
762
|
+
// Documentation inherited
|
|
763
|
+
math::LinearJacobian getLinearJacobian(
|
|
764
|
+
const JacobianNode* _node,
|
|
765
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
766
|
+
|
|
767
|
+
// Documentation inherited
|
|
768
|
+
math::LinearJacobian getLinearJacobian(
|
|
769
|
+
const JacobianNode* _node,
|
|
770
|
+
const Eigen::Vector3d& _localOffset,
|
|
771
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
772
|
+
|
|
773
|
+
// Documentation inherited
|
|
774
|
+
math::AngularJacobian getAngularJacobian(
|
|
775
|
+
const JacobianNode* _node,
|
|
776
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
777
|
+
|
|
778
|
+
// Documentation inherited
|
|
779
|
+
math::Jacobian getJacobianSpatialDeriv(
|
|
780
|
+
const JacobianNode* _node) const override;
|
|
781
|
+
|
|
782
|
+
// Documentation inherited
|
|
783
|
+
math::Jacobian getJacobianSpatialDeriv(
|
|
784
|
+
const JacobianNode* _node, const Frame* _inCoordinatesOf) const override;
|
|
785
|
+
|
|
786
|
+
// Documentation inherited
|
|
787
|
+
math::Jacobian getJacobianSpatialDeriv(
|
|
788
|
+
const JacobianNode* _node,
|
|
789
|
+
const Eigen::Vector3d& _localOffset) const override;
|
|
790
|
+
|
|
791
|
+
// Documentation inherited
|
|
792
|
+
math::Jacobian getJacobianSpatialDeriv(
|
|
793
|
+
const JacobianNode* _node,
|
|
794
|
+
const Eigen::Vector3d& _localOffset,
|
|
795
|
+
const Frame* _inCoordinatesOf) const override;
|
|
796
|
+
|
|
797
|
+
// Documentation inherited
|
|
798
|
+
math::Jacobian getJacobianClassicDeriv(
|
|
799
|
+
const JacobianNode* _node) const override;
|
|
800
|
+
|
|
801
|
+
// Documentation inherited
|
|
802
|
+
math::Jacobian getJacobianClassicDeriv(
|
|
803
|
+
const JacobianNode* _node, const Frame* _inCoordinatesOf) const override;
|
|
804
|
+
|
|
805
|
+
// Documentation inherited
|
|
806
|
+
math::Jacobian getJacobianClassicDeriv(
|
|
807
|
+
const JacobianNode* _node,
|
|
808
|
+
const Eigen::Vector3d& _localOffset,
|
|
809
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
810
|
+
|
|
811
|
+
// Documentation inherited
|
|
812
|
+
math::LinearJacobian getLinearJacobianDeriv(
|
|
813
|
+
const JacobianNode* _node,
|
|
814
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
815
|
+
|
|
816
|
+
// Documentation inherited
|
|
817
|
+
math::LinearJacobian getLinearJacobianDeriv(
|
|
818
|
+
const JacobianNode* _node,
|
|
819
|
+
const Eigen::Vector3d& _localOffset,
|
|
820
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
821
|
+
|
|
822
|
+
// Documentation inherited
|
|
823
|
+
math::AngularJacobian getAngularJacobianDeriv(
|
|
824
|
+
const JacobianNode* _node,
|
|
825
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
826
|
+
|
|
827
|
+
/// \}
|
|
828
|
+
|
|
829
|
+
//----------------------------------------------------------------------------
|
|
830
|
+
/// \{ \name Equations of Motion
|
|
831
|
+
//----------------------------------------------------------------------------
|
|
832
|
+
|
|
833
|
+
/// Get total mass of the skeleton. The total mass is calculated as BodyNodes
|
|
834
|
+
/// are added and is updated as BodyNode mass is changed, so this is a
|
|
835
|
+
/// constant-time O(1) operation for the Skeleton class.
|
|
836
|
+
double getMass() const override;
|
|
837
|
+
|
|
838
|
+
/// Get the mass matrix of a specific tree in the Skeleton
|
|
839
|
+
const Eigen::MatrixXd& getMassMatrix(std::size_t _treeIdx) const;
|
|
840
|
+
|
|
841
|
+
// Documentation inherited
|
|
842
|
+
const Eigen::MatrixXd& getMassMatrix() const override;
|
|
843
|
+
|
|
844
|
+
/// Get the augmented mass matrix of a specific tree in the Skeleton
|
|
845
|
+
const Eigen::MatrixXd& getAugMassMatrix(std::size_t _treeIdx) const;
|
|
846
|
+
|
|
847
|
+
// Documentation inherited
|
|
848
|
+
const Eigen::MatrixXd& getAugMassMatrix() const override;
|
|
849
|
+
|
|
850
|
+
/// Get the inverse mass matrix of a specific tree in the Skeleton
|
|
851
|
+
const Eigen::MatrixXd& getInvMassMatrix(std::size_t _treeIdx) const;
|
|
852
|
+
|
|
853
|
+
// Documentation inherited
|
|
854
|
+
const Eigen::MatrixXd& getInvMassMatrix() const override;
|
|
855
|
+
|
|
856
|
+
/// Get the inverse augmented mass matrix of a tree
|
|
857
|
+
const Eigen::MatrixXd& getInvAugMassMatrix(std::size_t _treeIdx) const;
|
|
858
|
+
|
|
859
|
+
// Documentation inherited
|
|
860
|
+
const Eigen::MatrixXd& getInvAugMassMatrix() const override;
|
|
861
|
+
|
|
862
|
+
/// Get the Coriolis force vector of a tree in this Skeleton
|
|
863
|
+
const Eigen::VectorXd& getCoriolisForces(std::size_t _treeIdx) const;
|
|
864
|
+
|
|
865
|
+
// Documentation inherited
|
|
866
|
+
const Eigen::VectorXd& getCoriolisForces() const override;
|
|
867
|
+
|
|
868
|
+
/// Get the gravity forces for a tree in this Skeleton
|
|
869
|
+
const Eigen::VectorXd& getGravityForces(std::size_t _treeIdx) const;
|
|
870
|
+
|
|
871
|
+
// Documentation inherited
|
|
872
|
+
const Eigen::VectorXd& getGravityForces() const override;
|
|
873
|
+
|
|
874
|
+
/// Get the combined vector of Coriolis force and gravity force of a tree
|
|
875
|
+
const Eigen::VectorXd& getCoriolisAndGravityForces(
|
|
876
|
+
std::size_t _treeIdx) const;
|
|
877
|
+
|
|
878
|
+
// Documentation inherited
|
|
879
|
+
const Eigen::VectorXd& getCoriolisAndGravityForces() const override;
|
|
880
|
+
|
|
881
|
+
/// Get the external force vector of a tree in the Skeleton
|
|
882
|
+
const Eigen::VectorXd& getExternalForces(std::size_t _treeIdx) const;
|
|
883
|
+
|
|
884
|
+
// Documentation inherited
|
|
885
|
+
const Eigen::VectorXd& getExternalForces() const override;
|
|
886
|
+
|
|
887
|
+
/// Get damping force of the skeleton.
|
|
888
|
+
// const Eigen::VectorXd& getDampingForceVector();
|
|
889
|
+
|
|
890
|
+
/// Get constraint force vector for a tree
|
|
891
|
+
const Eigen::VectorXd& getConstraintForces(std::size_t _treeIdx) const;
|
|
892
|
+
|
|
893
|
+
/// Get constraint force vector
|
|
894
|
+
const Eigen::VectorXd& getConstraintForces() const override;
|
|
895
|
+
|
|
896
|
+
// Documentation inherited
|
|
897
|
+
void clearExternalForces() override;
|
|
898
|
+
|
|
899
|
+
// Documentation inherited
|
|
900
|
+
void clearInternalForces() override;
|
|
901
|
+
|
|
902
|
+
/// Notify that the articulated inertia and everything that depends on it
|
|
903
|
+
/// needs to be updated
|
|
904
|
+
DART_DEPRECATED(6.2)
|
|
905
|
+
void notifyArticulatedInertiaUpdate(std::size_t _treeIdx);
|
|
906
|
+
|
|
907
|
+
/// Notify that the articulated inertia and everything that depends on it
|
|
908
|
+
/// needs to be updated
|
|
909
|
+
void dirtyArticulatedInertia(std::size_t _treeIdx);
|
|
910
|
+
|
|
911
|
+
/// Notify that the support polygon of a tree needs to be updated
|
|
912
|
+
DART_DEPRECATED(6.2)
|
|
913
|
+
void notifySupportUpdate(std::size_t _treeIdx);
|
|
914
|
+
|
|
915
|
+
/// Notify that the support polygon of a tree needs to be updated
|
|
916
|
+
void dirtySupportPolygon(std::size_t _treeIdx);
|
|
917
|
+
|
|
918
|
+
// Documentation inherited
|
|
919
|
+
double computeKineticEnergy() const override;
|
|
920
|
+
|
|
921
|
+
// Documentation inherited
|
|
922
|
+
double computePotentialEnergy() const override;
|
|
923
|
+
|
|
924
|
+
// Documentation inherited
|
|
925
|
+
DART_DEPRECATED(6.0)
|
|
926
|
+
void clearCollidingBodies() override;
|
|
927
|
+
|
|
928
|
+
/// \}
|
|
929
|
+
|
|
930
|
+
//----------------------------------------------------------------------------
|
|
931
|
+
/// \{ \name Center of Mass Jacobian
|
|
932
|
+
//----------------------------------------------------------------------------
|
|
933
|
+
|
|
934
|
+
/// Get the Skeleton's COM with respect to any Frame (default is World Frame)
|
|
935
|
+
Eigen::Vector3d getCOM(
|
|
936
|
+
const Frame* _withRespectTo = Frame::World()) const override;
|
|
937
|
+
|
|
938
|
+
/// Get the Skeleton's COM spatial velocity in terms of any Frame (default is
|
|
939
|
+
/// World Frame)
|
|
940
|
+
Eigen::Vector6d getCOMSpatialVelocity(
|
|
941
|
+
const Frame* _relativeTo = Frame::World(),
|
|
942
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
943
|
+
|
|
944
|
+
/// Get the Skeleton's COM linear velocity in terms of any Frame (default is
|
|
945
|
+
/// World Frame)
|
|
946
|
+
Eigen::Vector3d getCOMLinearVelocity(
|
|
947
|
+
const Frame* _relativeTo = Frame::World(),
|
|
948
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
949
|
+
|
|
950
|
+
/// Get the Skeleton's COM spatial acceleration in terms of any Frame (default
|
|
951
|
+
/// is World Frame)
|
|
952
|
+
Eigen::Vector6d getCOMSpatialAcceleration(
|
|
953
|
+
const Frame* _relativeTo = Frame::World(),
|
|
954
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
955
|
+
|
|
956
|
+
/// Get the Skeleton's COM linear acceleration in terms of any Frame (default
|
|
957
|
+
/// is World Frame)
|
|
958
|
+
Eigen::Vector3d getCOMLinearAcceleration(
|
|
959
|
+
const Frame* _relativeTo = Frame::World(),
|
|
960
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
961
|
+
|
|
962
|
+
/// Get the Skeleton's COM Jacobian in terms of any Frame (default is World
|
|
963
|
+
/// Frame)
|
|
964
|
+
math::Jacobian getCOMJacobian(
|
|
965
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
966
|
+
|
|
967
|
+
/// Get the Skeleton's COM Linear Jacobian in terms of any Frame (default is
|
|
968
|
+
/// World Frame)
|
|
969
|
+
math::LinearJacobian getCOMLinearJacobian(
|
|
970
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
971
|
+
|
|
972
|
+
/// Get the Skeleton's COM Jacobian spatial time derivative in terms of any
|
|
973
|
+
/// Frame (default is World Frame).
|
|
974
|
+
///
|
|
975
|
+
/// NOTE: Since this is a spatial time derivative, it is only meant to be used
|
|
976
|
+
/// with spatial acceleration vectors. If you are using classical linear
|
|
977
|
+
/// vectors, then use getCOMLinearJacobianDeriv() instead.
|
|
978
|
+
math::Jacobian getCOMJacobianSpatialDeriv(
|
|
979
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
980
|
+
|
|
981
|
+
/// Get the Skeleton's COM Linear Jacobian time derivative in terms of any
|
|
982
|
+
/// Frame (default is World Frame).
|
|
983
|
+
///
|
|
984
|
+
/// NOTE: Since this is a classical time derivative, it is only meant to be
|
|
985
|
+
/// used with classical acceleration vectors. If you are using spatial
|
|
986
|
+
/// vectors, then use getCOMJacobianSpatialDeriv() instead.
|
|
987
|
+
math::LinearJacobian getCOMLinearJacobianDeriv(
|
|
988
|
+
const Frame* _inCoordinatesOf = Frame::World()) const override;
|
|
989
|
+
|
|
990
|
+
/// \}
|
|
991
|
+
|
|
992
|
+
//----------------------------------------------------------------------------
|
|
993
|
+
// Friendship
|
|
994
|
+
//----------------------------------------------------------------------------
|
|
995
|
+
friend class BodyNode;
|
|
996
|
+
friend class SoftBodyNode;
|
|
997
|
+
friend class Joint;
|
|
998
|
+
template <class>
|
|
999
|
+
friend class GenericJoint;
|
|
1000
|
+
friend class DegreeOfFreedom;
|
|
1001
|
+
friend class Node;
|
|
1002
|
+
friend class ShapeNode;
|
|
1003
|
+
friend class EndEffector;
|
|
1004
|
+
|
|
1005
|
+
protected:
|
|
1006
|
+
struct DataCache;
|
|
1007
|
+
|
|
1008
|
+
/// Constructor called by create()
|
|
1009
|
+
Skeleton(const AspectPropertiesData& _properties);
|
|
1010
|
+
|
|
1011
|
+
/// Setup this Skeleton with its shared_ptr
|
|
1012
|
+
void setPtr(const SkeletonPtr& _ptr);
|
|
1013
|
+
|
|
1014
|
+
/// Construct a new tree in the Skeleton
|
|
1015
|
+
void constructNewTree();
|
|
1016
|
+
|
|
1017
|
+
/// Register a BodyNode with the Skeleton. Internal use only.
|
|
1018
|
+
void registerBodyNode(BodyNode* _newBodyNode);
|
|
1019
|
+
|
|
1020
|
+
/// Register a Joint with the Skeleton. Internal use only.
|
|
1021
|
+
void registerJoint(Joint* _newJoint);
|
|
1022
|
+
|
|
1023
|
+
/// Register a Node with the Skeleton. Internal use only.
|
|
1024
|
+
void registerNode(NodeMap& nodeMap, Node* _newNode, std::size_t& _index);
|
|
1025
|
+
|
|
1026
|
+
/// Register a Node with the Skeleton. Internal use only.
|
|
1027
|
+
void registerNode(Node* _newNode);
|
|
1028
|
+
|
|
1029
|
+
/// Remove an old tree from the Skeleton
|
|
1030
|
+
void destructOldTree(std::size_t tree);
|
|
1031
|
+
|
|
1032
|
+
/// Remove a BodyNode from the Skeleton. Internal use only.
|
|
1033
|
+
void unregisterBodyNode(BodyNode* _oldBodyNode);
|
|
1034
|
+
|
|
1035
|
+
/// Remove a Joint from the Skeleton. Internal use only.
|
|
1036
|
+
void unregisterJoint(Joint* _oldJoint);
|
|
1037
|
+
|
|
1038
|
+
/// Remove a Node from the Skeleton. Internal use only.
|
|
1039
|
+
void unregisterNode(NodeMap& nodeMap, Node* _oldNode, std::size_t& _index);
|
|
1040
|
+
|
|
1041
|
+
/// Remove a Node from the Skeleton. Internal use only.
|
|
1042
|
+
void unregisterNode(Node* _oldNode);
|
|
1043
|
+
|
|
1044
|
+
/// Move a subtree of BodyNodes from this Skeleton to another Skeleton
|
|
1045
|
+
bool moveBodyNodeTree(
|
|
1046
|
+
Joint* _parentJoint,
|
|
1047
|
+
BodyNode* _bodyNode,
|
|
1048
|
+
SkeletonPtr _newSkeleton,
|
|
1049
|
+
BodyNode* _parentNode);
|
|
1050
|
+
|
|
1051
|
+
/// Move a subtree of BodyNodes from this Skeleton to another Skeleton while
|
|
1052
|
+
/// changing the Joint type of the top parent Joint.
|
|
1053
|
+
///
|
|
1054
|
+
/// Returns a nullptr if the move failed for any reason.
|
|
1055
|
+
template <class JointType>
|
|
1056
|
+
JointType* moveBodyNodeTree(
|
|
1057
|
+
BodyNode* _bodyNode,
|
|
1058
|
+
const SkeletonPtr& _newSkeleton,
|
|
1059
|
+
BodyNode* _parentNode,
|
|
1060
|
+
const typename JointType::Properties& _joint);
|
|
1061
|
+
|
|
1062
|
+
/// Copy a subtree of BodyNodes onto another Skeleton while leaving the
|
|
1063
|
+
/// originals intact
|
|
1064
|
+
std::pair<Joint*, BodyNode*> cloneBodyNodeTree(
|
|
1065
|
+
Joint* _parentJoint,
|
|
1066
|
+
const BodyNode* _bodyNode,
|
|
1067
|
+
const SkeletonPtr& _newSkeleton,
|
|
1068
|
+
BodyNode* _parentNode,
|
|
1069
|
+
bool _recursive) const;
|
|
1070
|
+
|
|
1071
|
+
/// Copy a subtree of BodyNodes onto another Skeleton while leaving the
|
|
1072
|
+
/// originals intact, but alter the top parent Joint to a new type
|
|
1073
|
+
template <class JointType>
|
|
1074
|
+
std::pair<JointType*, BodyNode*> cloneBodyNodeTree(
|
|
1075
|
+
const BodyNode* _bodyNode,
|
|
1076
|
+
const SkeletonPtr& _newSkeleton,
|
|
1077
|
+
BodyNode* _parentNode,
|
|
1078
|
+
const typename JointType::Properties& _joint,
|
|
1079
|
+
bool _recursive) const;
|
|
1080
|
+
|
|
1081
|
+
/// Create a vector representation of a subtree of BodyNodes
|
|
1082
|
+
std::vector<const BodyNode*> constructBodyNodeTree(
|
|
1083
|
+
const BodyNode* _bodyNode) const;
|
|
1084
|
+
|
|
1085
|
+
std::vector<BodyNode*> constructBodyNodeTree(BodyNode* _bodyNode);
|
|
1086
|
+
|
|
1087
|
+
/// Create a vector representation of a subtree of BodyNodes and remove that
|
|
1088
|
+
/// subtree from this Skeleton without deleting them
|
|
1089
|
+
std::vector<BodyNode*> extractBodyNodeTree(BodyNode* _bodyNode);
|
|
1090
|
+
|
|
1091
|
+
/// Take in and register a subtree of BodyNodes
|
|
1092
|
+
void receiveBodyNodeTree(const std::vector<BodyNode*>& _tree);
|
|
1093
|
+
|
|
1094
|
+
/// Update the computation for total mass
|
|
1095
|
+
void updateTotalMass();
|
|
1096
|
+
|
|
1097
|
+
/// Update the dimensions for a specific cache
|
|
1098
|
+
void updateCacheDimensions(DataCache& _cache);
|
|
1099
|
+
|
|
1100
|
+
/// Update the dimensions for a tree's cache
|
|
1101
|
+
void updateCacheDimensions(std::size_t _treeIdx);
|
|
1102
|
+
|
|
1103
|
+
/// Update the articulated inertia of a tree
|
|
1104
|
+
void updateArticulatedInertia(std::size_t _tree) const;
|
|
1105
|
+
|
|
1106
|
+
/// Update the articulated inertias of the skeleton
|
|
1107
|
+
void updateArticulatedInertia() const;
|
|
1108
|
+
|
|
1109
|
+
/// Update the mass matrix of a tree
|
|
1110
|
+
void updateMassMatrix(std::size_t _treeIdx) const;
|
|
1111
|
+
|
|
1112
|
+
/// Update mass matrix of the skeleton.
|
|
1113
|
+
void updateMassMatrix() const;
|
|
1114
|
+
|
|
1115
|
+
void updateAugMassMatrix(std::size_t _treeIdx) const;
|
|
1116
|
+
|
|
1117
|
+
/// Update augmented mass matrix of the skeleton.
|
|
1118
|
+
void updateAugMassMatrix() const;
|
|
1119
|
+
|
|
1120
|
+
/// Update the inverse mass matrix of a tree
|
|
1121
|
+
void updateInvMassMatrix(std::size_t _treeIdx) const;
|
|
1122
|
+
|
|
1123
|
+
/// Update inverse of mass matrix of the skeleton.
|
|
1124
|
+
void updateInvMassMatrix() const;
|
|
1125
|
+
|
|
1126
|
+
/// Update the inverse augmented mass matrix of a tree
|
|
1127
|
+
void updateInvAugMassMatrix(std::size_t _treeIdx) const;
|
|
1128
|
+
|
|
1129
|
+
/// Update inverse of augmented mass matrix of the skeleton.
|
|
1130
|
+
void updateInvAugMassMatrix() const;
|
|
1131
|
+
|
|
1132
|
+
/// Update Coriolis force vector for a tree in the Skeleton
|
|
1133
|
+
void updateCoriolisForces(std::size_t _treeIdx) const;
|
|
1134
|
+
|
|
1135
|
+
/// Update Coriolis force vector of the skeleton.
|
|
1136
|
+
void updateCoriolisForces() const;
|
|
1137
|
+
|
|
1138
|
+
/// Update the gravity force vector of a tree
|
|
1139
|
+
void updateGravityForces(std::size_t _treeIdx) const;
|
|
1140
|
+
|
|
1141
|
+
/// Update gravity force vector of the skeleton.
|
|
1142
|
+
void updateGravityForces() const;
|
|
1143
|
+
|
|
1144
|
+
/// Update the combined vector for a tree in this Skeleton
|
|
1145
|
+
void updateCoriolisAndGravityForces(std::size_t _treeIdx) const;
|
|
1146
|
+
|
|
1147
|
+
/// Update combined vector of the skeleton.
|
|
1148
|
+
void updateCoriolisAndGravityForces() const;
|
|
1149
|
+
|
|
1150
|
+
/// Update external force vector to generalized forces for a tree
|
|
1151
|
+
void updateExternalForces(std::size_t _treeIdx) const;
|
|
1152
|
+
|
|
1153
|
+
// TODO(JS): Not implemented yet
|
|
1154
|
+
/// update external force vector to generalized forces.
|
|
1155
|
+
void updateExternalForces() const;
|
|
1156
|
+
|
|
1157
|
+
/// Compute the constraint force vector for a tree
|
|
1158
|
+
const Eigen::VectorXd& computeConstraintForces(DataCache& cache) const;
|
|
1159
|
+
|
|
1160
|
+
// /// Update damping force vector.
|
|
1161
|
+
// virtual void updateDampingForceVector();
|
|
1162
|
+
|
|
1163
|
+
/// Add a BodyNode to the BodyNode NameManager
|
|
1164
|
+
const std::string& addEntryToBodyNodeNameMgr(BodyNode* _newNode);
|
|
1165
|
+
|
|
1166
|
+
/// Add a Joint to to the Joint NameManager
|
|
1167
|
+
const std::string& addEntryToJointNameMgr(
|
|
1168
|
+
Joint* _newJoint, bool _updateDofNames = true);
|
|
1169
|
+
|
|
1170
|
+
/// Add a SoftBodyNode to the SoftBodyNode NameManager
|
|
1171
|
+
void addEntryToSoftBodyNodeNameMgr(SoftBodyNode* _newNode);
|
|
1172
|
+
|
|
1173
|
+
void updateNameManagerNames();
|
|
1174
|
+
|
|
1175
|
+
protected:
|
|
1176
|
+
/// The resource-managing pointer to this Skeleton
|
|
1177
|
+
std::weak_ptr<Skeleton> mPtr;
|
|
1178
|
+
|
|
1179
|
+
/// List of Soft body node list in the skeleton
|
|
1180
|
+
std::vector<SoftBodyNode*> mSoftBodyNodes;
|
|
1181
|
+
|
|
1182
|
+
/// NameManager for tracking BodyNodes
|
|
1183
|
+
dart::common::NameManager<BodyNode*> mNameMgrForBodyNodes;
|
|
1184
|
+
|
|
1185
|
+
/// NameManager for tracking Joints
|
|
1186
|
+
dart::common::NameManager<Joint*> mNameMgrForJoints;
|
|
1187
|
+
|
|
1188
|
+
/// NameManager for tracking DegreesOfFreedom
|
|
1189
|
+
dart::common::NameManager<DegreeOfFreedom*> mNameMgrForDofs;
|
|
1190
|
+
|
|
1191
|
+
/// NameManager for tracking SoftBodyNodes
|
|
1192
|
+
dart::common::NameManager<SoftBodyNode*> mNameMgrForSoftBodyNodes;
|
|
1193
|
+
|
|
1194
|
+
/// WholeBodyIK module for this Skeleton
|
|
1195
|
+
std::shared_ptr<WholeBodyIK> mWholeBodyIK;
|
|
1196
|
+
|
|
1197
|
+
struct DirtyFlags
|
|
1198
|
+
{
|
|
1199
|
+
/// Default constructor
|
|
1200
|
+
DirtyFlags();
|
|
1201
|
+
|
|
1202
|
+
/// Dirty flag for articulated body inertia
|
|
1203
|
+
bool mArticulatedInertia;
|
|
1204
|
+
|
|
1205
|
+
/// Dirty flag for the mass matrix.
|
|
1206
|
+
bool mMassMatrix;
|
|
1207
|
+
|
|
1208
|
+
/// Dirty flag for the mass matrix.
|
|
1209
|
+
bool mAugMassMatrix;
|
|
1210
|
+
|
|
1211
|
+
/// Dirty flag for the inverse of mass matrix.
|
|
1212
|
+
bool mInvMassMatrix;
|
|
1213
|
+
|
|
1214
|
+
/// Dirty flag for the inverse of augmented mass matrix.
|
|
1215
|
+
bool mInvAugMassMatrix;
|
|
1216
|
+
|
|
1217
|
+
/// Dirty flag for the gravity force vector.
|
|
1218
|
+
bool mGravityForces;
|
|
1219
|
+
|
|
1220
|
+
/// Dirty flag for the Coriolis force vector.
|
|
1221
|
+
bool mCoriolisForces;
|
|
1222
|
+
|
|
1223
|
+
/// Dirty flag for the combined vector of Coriolis and gravity.
|
|
1224
|
+
bool mCoriolisAndGravityForces;
|
|
1225
|
+
|
|
1226
|
+
/// Dirty flag for the external force vector.
|
|
1227
|
+
bool mExternalForces;
|
|
1228
|
+
|
|
1229
|
+
/// Dirty flag for the damping force vector.
|
|
1230
|
+
bool mDampingForces;
|
|
1231
|
+
|
|
1232
|
+
/// Dirty flag for the support polygon
|
|
1233
|
+
bool mSupport;
|
|
1234
|
+
|
|
1235
|
+
/// Increments each time a new support polygon is computed to help keep
|
|
1236
|
+
/// track of changes in the support polygon
|
|
1237
|
+
std::size_t mSupportVersion;
|
|
1238
|
+
};
|
|
1239
|
+
|
|
1240
|
+
struct DataCache
|
|
1241
|
+
{
|
|
1242
|
+
DirtyFlags mDirty;
|
|
1243
|
+
|
|
1244
|
+
/// BodyNodes belonging to this tree
|
|
1245
|
+
std::vector<BodyNode*> mBodyNodes;
|
|
1246
|
+
|
|
1247
|
+
/// Cache for const BodyNodes, for the sake of the API
|
|
1248
|
+
std::vector<const BodyNode*> mConstBodyNodes;
|
|
1249
|
+
|
|
1250
|
+
/// Degrees of Freedom belonging to this tree
|
|
1251
|
+
std::vector<DegreeOfFreedom*> mDofs;
|
|
1252
|
+
|
|
1253
|
+
/// Cache for const Degrees of Freedom, for the sake of the API
|
|
1254
|
+
std::vector<const DegreeOfFreedom*> mConstDofs;
|
|
1255
|
+
|
|
1256
|
+
/// Mass matrix cache
|
|
1257
|
+
Eigen::MatrixXd mM;
|
|
1258
|
+
|
|
1259
|
+
/// Mass matrix for the skeleton.
|
|
1260
|
+
Eigen::MatrixXd mAugM;
|
|
1261
|
+
|
|
1262
|
+
/// Inverse of mass matrix for the skeleton.
|
|
1263
|
+
Eigen::MatrixXd mInvM;
|
|
1264
|
+
|
|
1265
|
+
/// Inverse of augmented mass matrix for the skeleton.
|
|
1266
|
+
Eigen::MatrixXd mInvAugM;
|
|
1267
|
+
|
|
1268
|
+
/// Coriolis vector for the skeleton which is C(q,dq)*dq.
|
|
1269
|
+
Eigen::VectorXd mCvec;
|
|
1270
|
+
|
|
1271
|
+
/// Gravity vector for the skeleton; computed in nonrecursive
|
|
1272
|
+
/// dynamics only.
|
|
1273
|
+
Eigen::VectorXd mG;
|
|
1274
|
+
|
|
1275
|
+
/// Combined coriolis and gravity vector which is C(q, dq)*dq + g(q).
|
|
1276
|
+
Eigen::VectorXd mCg;
|
|
1277
|
+
|
|
1278
|
+
/// External force vector for the skeleton.
|
|
1279
|
+
Eigen::VectorXd mFext;
|
|
1280
|
+
|
|
1281
|
+
/// Constraint force vector.
|
|
1282
|
+
Eigen::VectorXd mFc;
|
|
1283
|
+
|
|
1284
|
+
/// Support polygon
|
|
1285
|
+
math::SupportPolygon mSupportPolygon;
|
|
1286
|
+
|
|
1287
|
+
/// A map of which EndEffectors correspond to the individual points in the
|
|
1288
|
+
/// support polygon
|
|
1289
|
+
std::vector<std::size_t> mSupportIndices;
|
|
1290
|
+
|
|
1291
|
+
/// A pair of vectors which map the 2D coordinates of the support polygon
|
|
1292
|
+
/// into 3D space
|
|
1293
|
+
std::pair<Eigen::Vector3d, Eigen::Vector3d> mSupportAxes;
|
|
1294
|
+
|
|
1295
|
+
/// Support geometry -- only used for temporary storage purposes
|
|
1296
|
+
math::SupportGeometry mSupportGeometry;
|
|
1297
|
+
|
|
1298
|
+
/// Centroid of the support polygon
|
|
1299
|
+
Eigen::Vector2d mSupportCentroid;
|
|
1300
|
+
|
|
1301
|
+
// To get byte-aligned Eigen vectors
|
|
1302
|
+
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
|
1303
|
+
};
|
|
1304
|
+
|
|
1305
|
+
mutable common::aligned_vector<DataCache> mTreeCache;
|
|
1306
|
+
|
|
1307
|
+
mutable DataCache mSkelCache;
|
|
1308
|
+
|
|
1309
|
+
using SpecializedTreeNodes
|
|
1310
|
+
= std::map<std::type_index, std::vector<NodeMap::iterator>*>;
|
|
1311
|
+
|
|
1312
|
+
SpecializedTreeNodes mSpecializedTreeNodes;
|
|
1313
|
+
|
|
1314
|
+
/// Total mass.
|
|
1315
|
+
double mTotalMass;
|
|
1316
|
+
|
|
1317
|
+
// TODO(JS): Better naming
|
|
1318
|
+
/// Flag for status of impulse testing.
|
|
1319
|
+
bool mIsImpulseApplied;
|
|
1320
|
+
|
|
1321
|
+
mutable std::mutex mMutex;
|
|
1322
|
+
|
|
1323
|
+
public:
|
|
1324
|
+
//--------------------------------------------------------------------------
|
|
1325
|
+
// Union finding
|
|
1326
|
+
//--------------------------------------------------------------------------
|
|
1327
|
+
///
|
|
1328
|
+
void resetUnion()
|
|
1329
|
+
{
|
|
1330
|
+
mUnionRootSkeleton = mPtr;
|
|
1331
|
+
mUnionSize = 1;
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1334
|
+
///
|
|
1335
|
+
std::weak_ptr<Skeleton> mUnionRootSkeleton;
|
|
1336
|
+
|
|
1337
|
+
///
|
|
1338
|
+
std::size_t mUnionSize;
|
|
1339
|
+
|
|
1340
|
+
///
|
|
1341
|
+
std::size_t mUnionIndex;
|
|
1342
|
+
};
|
|
1343
|
+
DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_END
|
|
1344
|
+
|
|
1345
|
+
} // namespace dynamics
|
|
1346
|
+
} // namespace dart
|
|
1347
|
+
|
|
1348
|
+
#include <dart/dynamics/detail/Skeleton.hpp>
|
|
1349
|
+
|
|
1350
|
+
#endif // DART_DYNAMICS_SKELETON_HPP_
|