dartpy 7.0.0.dev0__cp312-cp312-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-312-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-2607815a.so.0.7.0 +0 -0
- dartpy.libs/libfmt-277170bf.so.11.2.0 +0 -0
- dartpy.libs/libfontconfig-559ff509.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-78f9bc34.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-caca20fc.so.8.2.0 +0 -0
- dartpy.libs/libosg-e67375e5.so.3.6.5 +0 -0
- dartpy.libs/libosgDB-22ae780f.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-8caf1954.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,1279 @@
|
|
|
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_BODYNODE_HPP_
|
|
34
|
+
#define DART_DYNAMICS_BODYNODE_HPP_
|
|
35
|
+
|
|
36
|
+
#include <dart/config.hpp>
|
|
37
|
+
|
|
38
|
+
#include <dart/dynamics/EndEffector.hpp>
|
|
39
|
+
#include <dart/dynamics/Frame.hpp>
|
|
40
|
+
#include <dart/dynamics/Marker.hpp>
|
|
41
|
+
#include <dart/dynamics/Node.hpp>
|
|
42
|
+
#include <dart/dynamics/SmartPointer.hpp>
|
|
43
|
+
#include <dart/dynamics/SpecializedNodeManager.hpp>
|
|
44
|
+
#include <dart/dynamics/TemplatedJacobianNode.hpp>
|
|
45
|
+
#include <dart/dynamics/detail/BodyNodeAspect.hpp>
|
|
46
|
+
|
|
47
|
+
#include <dart/math/Geometry.hpp>
|
|
48
|
+
|
|
49
|
+
#include <dart/common/Deprecated.hpp>
|
|
50
|
+
#include <dart/common/EmbeddedAspect.hpp>
|
|
51
|
+
#include <dart/common/Signal.hpp>
|
|
52
|
+
|
|
53
|
+
#include <Eigen/Dense>
|
|
54
|
+
#include <Eigen/StdVector>
|
|
55
|
+
|
|
56
|
+
#include <string>
|
|
57
|
+
#include <vector>
|
|
58
|
+
|
|
59
|
+
namespace dart {
|
|
60
|
+
namespace dynamics {
|
|
61
|
+
|
|
62
|
+
class GenCoord;
|
|
63
|
+
class Skeleton;
|
|
64
|
+
class Joint;
|
|
65
|
+
class DegreeOfFreedom;
|
|
66
|
+
class Shape;
|
|
67
|
+
class EndEffector;
|
|
68
|
+
class Marker;
|
|
69
|
+
|
|
70
|
+
/// BodyNode class represents a single node of the skeleton.
|
|
71
|
+
///
|
|
72
|
+
/// BodyNode is a basic element of the skeleton. BodyNodes are hierarchically
|
|
73
|
+
/// connected and have a set of core functions for calculating derivatives.
|
|
74
|
+
///
|
|
75
|
+
/// BodyNode inherits Frame, and a parent Frame of a BodyNode is the parent
|
|
76
|
+
/// BodyNode of the BodyNode.
|
|
77
|
+
DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_BEGIN
|
|
78
|
+
class BodyNode
|
|
79
|
+
: public detail::BodyNodeCompositeBase,
|
|
80
|
+
public virtual BodyNodeSpecializedFor<ShapeNode, EndEffector, Marker>,
|
|
81
|
+
public SkeletonRefCountingBase,
|
|
82
|
+
public TemplatedJacobianNode<BodyNode>
|
|
83
|
+
{
|
|
84
|
+
public:
|
|
85
|
+
using ColShapeAddedSignal
|
|
86
|
+
= common::Signal<void(const BodyNode*, ConstShapePtr _newColShape)>;
|
|
87
|
+
|
|
88
|
+
using ColShapeRemovedSignal = ColShapeAddedSignal;
|
|
89
|
+
|
|
90
|
+
using StructuralChangeSignal = common::Signal<void(const BodyNode*)>;
|
|
91
|
+
using CompositeProperties = common::Composite::Properties;
|
|
92
|
+
|
|
93
|
+
using AllNodeStates = detail::AllNodeStates;
|
|
94
|
+
using NodeStateMap = detail::NodeStateMap;
|
|
95
|
+
|
|
96
|
+
using AllNodeProperties = detail::AllNodeProperties;
|
|
97
|
+
using NodePropertiesMap = detail::NodePropertiesMap;
|
|
98
|
+
|
|
99
|
+
using AspectProperties = detail::BodyNodeAspectProperties;
|
|
100
|
+
using Properties = common::Composite::MakeProperties<BodyNode>;
|
|
101
|
+
|
|
102
|
+
BodyNode(const BodyNode&) = delete;
|
|
103
|
+
|
|
104
|
+
/// Destructor
|
|
105
|
+
virtual ~BodyNode();
|
|
106
|
+
|
|
107
|
+
/// Convert 'this' into a SoftBodyNode pointer if this BodyNode is a
|
|
108
|
+
/// SoftBodyNode, otherwise return nullptr
|
|
109
|
+
virtual SoftBodyNode* asSoftBodyNode();
|
|
110
|
+
|
|
111
|
+
/// Convert 'const this' into a SoftBodyNode pointer if this BodyNode is a
|
|
112
|
+
/// SoftBodyNode, otherwise return nullptr
|
|
113
|
+
virtual const SoftBodyNode* asSoftBodyNode() const;
|
|
114
|
+
|
|
115
|
+
/// Set the Node::State of all Nodes attached to this BodyNode
|
|
116
|
+
void setAllNodeStates(const AllNodeStates& states);
|
|
117
|
+
|
|
118
|
+
/// Get the Node::State of all Nodes attached to this BodyNode
|
|
119
|
+
AllNodeStates getAllNodeStates() const;
|
|
120
|
+
|
|
121
|
+
/// Set the Node::Properties of all Nodes attached to this BodyNode
|
|
122
|
+
void setAllNodeProperties(const AllNodeProperties& properties);
|
|
123
|
+
|
|
124
|
+
/// Get the Node::Properties of all Nodes attached to this BodyNode
|
|
125
|
+
AllNodeProperties getAllNodeProperties() const;
|
|
126
|
+
|
|
127
|
+
/// Same as setCompositeProperties()
|
|
128
|
+
void setProperties(const CompositeProperties& _properties);
|
|
129
|
+
|
|
130
|
+
/// Set the UniqueProperties of this BodyNode
|
|
131
|
+
void setProperties(const AspectProperties& _properties);
|
|
132
|
+
|
|
133
|
+
/// Set the AspectState of this BodyNode
|
|
134
|
+
void setAspectState(const AspectState& state);
|
|
135
|
+
|
|
136
|
+
/// Set the AspectProperties of this BodyNode
|
|
137
|
+
void setAspectProperties(const AspectProperties& properties);
|
|
138
|
+
|
|
139
|
+
/// Get the Properties of this BodyNode
|
|
140
|
+
Properties getBodyNodeProperties() const;
|
|
141
|
+
|
|
142
|
+
/// Copy the Properties of another BodyNode
|
|
143
|
+
void copy(const BodyNode& otherBodyNode);
|
|
144
|
+
|
|
145
|
+
/// Copy the Properties of another BodyNode
|
|
146
|
+
void copy(const BodyNode* otherBodyNode);
|
|
147
|
+
|
|
148
|
+
/// Same as copy(const BodyNode&)
|
|
149
|
+
BodyNode& operator=(const BodyNode& _otherBodyNode);
|
|
150
|
+
|
|
151
|
+
/// Give this BodyNode a copy of each Node from otherBodyNode
|
|
152
|
+
void duplicateNodes(const BodyNode* otherBodyNode);
|
|
153
|
+
|
|
154
|
+
/// Make the Nodes of this BodyNode match the Nodes of otherBodyNode. All
|
|
155
|
+
/// existing Nodes in this BodyNode will be removed.
|
|
156
|
+
void matchNodes(const BodyNode* otherBodyNode);
|
|
157
|
+
|
|
158
|
+
/// Set name. If the name is already taken, this will return an altered
|
|
159
|
+
/// version which will be used by the Skeleton
|
|
160
|
+
const std::string& setName(const std::string& _name) override;
|
|
161
|
+
|
|
162
|
+
// Documentation inherited
|
|
163
|
+
const std::string& getName() const override;
|
|
164
|
+
|
|
165
|
+
/// Set whether gravity affects this body
|
|
166
|
+
/// \param[in] _gravityMode True to enable gravity
|
|
167
|
+
void setGravityMode(bool _gravityMode);
|
|
168
|
+
|
|
169
|
+
/// Return true if gravity mode is enabled
|
|
170
|
+
bool getGravityMode() const;
|
|
171
|
+
|
|
172
|
+
/// Return true if this body can collide with others bodies
|
|
173
|
+
bool isCollidable() const;
|
|
174
|
+
|
|
175
|
+
/// Set whether this body node will collide with others in the world
|
|
176
|
+
/// \param[in] _isCollidable True to enable collisions
|
|
177
|
+
void setCollidable(bool _isCollidable);
|
|
178
|
+
|
|
179
|
+
/// Set the mass of the bodynode
|
|
180
|
+
void setMass(double mass);
|
|
181
|
+
|
|
182
|
+
/// Return the mass of the bodynode
|
|
183
|
+
double getMass() const;
|
|
184
|
+
|
|
185
|
+
/// Set moment of inertia defined around the center of mass
|
|
186
|
+
///
|
|
187
|
+
/// Principal moments of inertia (_Ixx, _Iyy, _Izz) must be positive or zero
|
|
188
|
+
/// values.
|
|
189
|
+
void setMomentOfInertia(
|
|
190
|
+
double _Ixx,
|
|
191
|
+
double _Iyy,
|
|
192
|
+
double _Izz,
|
|
193
|
+
double _Ixy = 0.0,
|
|
194
|
+
double _Ixz = 0.0,
|
|
195
|
+
double _Iyz = 0.0);
|
|
196
|
+
|
|
197
|
+
/// Return moment of inertia defined around the center of mass
|
|
198
|
+
void getMomentOfInertia(
|
|
199
|
+
double& _Ixx,
|
|
200
|
+
double& _Iyy,
|
|
201
|
+
double& _Izz,
|
|
202
|
+
double& _Ixy,
|
|
203
|
+
double& _Ixz,
|
|
204
|
+
double& _Iyz) const;
|
|
205
|
+
|
|
206
|
+
/// Return spatial inertia
|
|
207
|
+
const Eigen::Matrix6d& getSpatialInertia() const;
|
|
208
|
+
|
|
209
|
+
/// Set the inertia data for this BodyNode
|
|
210
|
+
void setInertia(const Inertia& inertia);
|
|
211
|
+
|
|
212
|
+
/// Get the inertia data for this BodyNode
|
|
213
|
+
const Inertia& getInertia() const;
|
|
214
|
+
|
|
215
|
+
/// Return the articulated body inertia
|
|
216
|
+
const math::Inertia& getArticulatedInertia() const;
|
|
217
|
+
|
|
218
|
+
/// Return the articulated body inertia for implicit joint damping and spring
|
|
219
|
+
/// forces
|
|
220
|
+
const math::Inertia& getArticulatedInertiaImplicit() const;
|
|
221
|
+
|
|
222
|
+
/// Set center of mass expressed in body frame
|
|
223
|
+
void setLocalCOM(const Eigen::Vector3d& _com);
|
|
224
|
+
|
|
225
|
+
/// Return center of mass expressed in body frame
|
|
226
|
+
const Eigen::Vector3d& getLocalCOM() const;
|
|
227
|
+
|
|
228
|
+
/// Return the center of mass with respect to an arbitrary Frame
|
|
229
|
+
Eigen::Vector3d getCOM(const Frame* _withRespectTo = Frame::World()) const;
|
|
230
|
+
|
|
231
|
+
/// Return the linear velocity of the center of mass, expressed in terms of
|
|
232
|
+
/// arbitrary Frames
|
|
233
|
+
Eigen::Vector3d getCOMLinearVelocity(
|
|
234
|
+
const Frame* _relativeTo = Frame::World(),
|
|
235
|
+
const Frame* _inCoordinatesOf = Frame::World()) const;
|
|
236
|
+
|
|
237
|
+
/// Return the spatial velocity of the center of mass, expressed in
|
|
238
|
+
/// coordinates of this Frame and relative to the World Frame
|
|
239
|
+
Eigen::Vector6d getCOMSpatialVelocity() const;
|
|
240
|
+
|
|
241
|
+
/// Return the spatial velocity of the center of mass, expressed in terms of
|
|
242
|
+
/// arbitrary Frames
|
|
243
|
+
Eigen::Vector6d getCOMSpatialVelocity(
|
|
244
|
+
const Frame* _relativeTo, const Frame* _inCoordinatesOf) const;
|
|
245
|
+
|
|
246
|
+
/// Return the linear acceleration of the center of mass, expressed in terms
|
|
247
|
+
/// of arbitary Frames
|
|
248
|
+
Eigen::Vector3d getCOMLinearAcceleration(
|
|
249
|
+
const Frame* _relativeTo = Frame::World(),
|
|
250
|
+
const Frame* _inCoordinatesOf = Frame::World()) const;
|
|
251
|
+
|
|
252
|
+
/// Return the acceleration of the center of mass expressed in coordinates of
|
|
253
|
+
/// this BodyNode Frame and relative to the World Frame
|
|
254
|
+
Eigen::Vector6d getCOMSpatialAcceleration() const;
|
|
255
|
+
|
|
256
|
+
/// Return the spatial acceleration of the center of mass, expressed in terms
|
|
257
|
+
/// of arbitrary Frames
|
|
258
|
+
Eigen::Vector6d getCOMSpatialAcceleration(
|
|
259
|
+
const Frame* _relativeTo, const Frame* _inCoordinatesOf) const;
|
|
260
|
+
|
|
261
|
+
/// Set coefficient of friction in range of [0, ~]
|
|
262
|
+
/// \deprecated Deprecated since DART 6.10. Please set the friction
|
|
263
|
+
/// coefficient per ShapeNode of the BodyNode. This will be removed in the
|
|
264
|
+
/// next major release.
|
|
265
|
+
DART_DEPRECATED(6.10)
|
|
266
|
+
void setFrictionCoeff(double coeff);
|
|
267
|
+
|
|
268
|
+
/// Return frictional coefficient.
|
|
269
|
+
/// \deprecated Deprecated since DART 6.10. Please set the friction
|
|
270
|
+
/// coefficient per ShapeNode of the BodyNode. This will be removed in the
|
|
271
|
+
/// next major release.
|
|
272
|
+
DART_DEPRECATED(6.10)
|
|
273
|
+
double getFrictionCoeff() const;
|
|
274
|
+
|
|
275
|
+
/// Set coefficient of restitution in range of [0, 1]
|
|
276
|
+
/// \deprecated Deprecated since DART 6.10. Please set the restitution
|
|
277
|
+
/// coefficient per ShapeNode of the BodyNode. This will be removed in the
|
|
278
|
+
/// next major release.
|
|
279
|
+
DART_DEPRECATED(6.10)
|
|
280
|
+
void setRestitutionCoeff(double coeff);
|
|
281
|
+
|
|
282
|
+
/// Return coefficient of restitution
|
|
283
|
+
/// \deprecated Deprecated since DART 6.10. Please set the restitution
|
|
284
|
+
/// coefficient per ShapeNode of the BodyNode. This will be removed in the
|
|
285
|
+
/// next major release.
|
|
286
|
+
DART_DEPRECATED(6.10)
|
|
287
|
+
double getRestitutionCoeff() const;
|
|
288
|
+
|
|
289
|
+
//--------------------------------------------------------------------------
|
|
290
|
+
// Structural Properties
|
|
291
|
+
//--------------------------------------------------------------------------
|
|
292
|
+
|
|
293
|
+
/// Return the index of this BodyNode within its Skeleton
|
|
294
|
+
std::size_t getIndexInSkeleton() const;
|
|
295
|
+
|
|
296
|
+
/// Return the index of this BodyNode within its tree
|
|
297
|
+
std::size_t getIndexInTree() const;
|
|
298
|
+
|
|
299
|
+
/// Return the index of the tree that this BodyNode belongs to
|
|
300
|
+
std::size_t getTreeIndex() const;
|
|
301
|
+
|
|
302
|
+
/// Remove this BodyNode and all of its children (recursively) from their
|
|
303
|
+
/// Skeleton. If a BodyNodePtr that references this BodyNode (or any of its
|
|
304
|
+
/// children) still exists, the subtree will be moved into a new Skeleton
|
|
305
|
+
/// with the given name. If the returned SkeletonPtr goes unused and no
|
|
306
|
+
/// relevant BodyNodePtrs are held anywhere, then this BodyNode and all its
|
|
307
|
+
/// children will be deleted.
|
|
308
|
+
///
|
|
309
|
+
/// Note that this function is actually the same as split(), but given a
|
|
310
|
+
/// different name for semantic reasons.
|
|
311
|
+
SkeletonPtr remove(const std::string& _name = "temporary");
|
|
312
|
+
|
|
313
|
+
/// Remove this BodyNode and all of its children (recursively) from their
|
|
314
|
+
/// current parent BodyNode, and move them to another parent BodyNode. The new
|
|
315
|
+
/// parent BodyNode can either be in a new Skeleton or the current one. If you
|
|
316
|
+
/// pass in a nullptr, this BodyNode will become a new root BodyNode for its
|
|
317
|
+
/// current Skeleton.
|
|
318
|
+
///
|
|
319
|
+
/// Using this function will result in changes to the indexing of
|
|
320
|
+
/// (potentially) all BodyNodes and Joints in the current Skeleton, even if
|
|
321
|
+
/// the BodyNodes are kept within the same Skeleton.
|
|
322
|
+
bool moveTo(BodyNode* _newParent);
|
|
323
|
+
|
|
324
|
+
/// This is a version of moveTo(BodyNode*) that allows you to explicitly move
|
|
325
|
+
/// this BodyNode into a different Skeleton. The key difference for this
|
|
326
|
+
/// version of the function is that you can make this BodyNode a root node in
|
|
327
|
+
/// a different Skeleton, which is not something that can be done by the other
|
|
328
|
+
/// version.
|
|
329
|
+
bool moveTo(const SkeletonPtr& _newSkeleton, BodyNode* _newParent);
|
|
330
|
+
|
|
331
|
+
/// A version of moveTo(BodyNode*) that also changes the Joint type of the
|
|
332
|
+
/// parent Joint of this BodyNode. This function returns the pointer to the
|
|
333
|
+
/// newly created Joint. The original parent Joint will be deleted.
|
|
334
|
+
///
|
|
335
|
+
/// This function can be used to change the Joint type of the parent Joint of
|
|
336
|
+
/// this BodyNode, but note that the indexing of the BodyNodes and Joints in
|
|
337
|
+
/// this Skeleton will still be changed, even if only the Joint type is
|
|
338
|
+
/// changed.
|
|
339
|
+
template <class JointType>
|
|
340
|
+
JointType* moveTo(
|
|
341
|
+
BodyNode* _newParent,
|
|
342
|
+
const typename JointType::Properties& _joint
|
|
343
|
+
= typename JointType::Properties());
|
|
344
|
+
|
|
345
|
+
/// A version of moveTo(SkeletonPtr, BodyNode*) that also changes the Joint
|
|
346
|
+
/// type of the parent Joint of this BodyNode. This function returns the
|
|
347
|
+
/// pointer to the newly created Joint. The original Joint will be deleted.
|
|
348
|
+
template <class JointType>
|
|
349
|
+
JointType* moveTo(
|
|
350
|
+
const SkeletonPtr& _newSkeleton,
|
|
351
|
+
BodyNode* _newParent,
|
|
352
|
+
const typename JointType::Properties& _joint
|
|
353
|
+
= typename JointType::Properties());
|
|
354
|
+
|
|
355
|
+
/// Remove this BodyNode and all of its children (recursively) from their
|
|
356
|
+
/// current Skeleton and move them into a newly created Skeleton. The newly
|
|
357
|
+
/// created Skeleton will have the same Skeleton::Properties as the current
|
|
358
|
+
/// Skeleton, except it will use the specified name. The return value is a
|
|
359
|
+
/// shared_ptr to the newly created Skeleton.
|
|
360
|
+
///
|
|
361
|
+
/// Note that the parent Joint of this BodyNode will remain the same. If you
|
|
362
|
+
/// want to change the Joint type of this BodyNode's parent Joint (for
|
|
363
|
+
/// example, make it a FreeJoint), then use the templated split<JointType>()
|
|
364
|
+
/// function.
|
|
365
|
+
SkeletonPtr split(const std::string& _skeletonName);
|
|
366
|
+
|
|
367
|
+
/// A version of split(const std::string&) that also changes the Joint type of
|
|
368
|
+
/// the parent Joint of this BodyNode.
|
|
369
|
+
template <class JointType>
|
|
370
|
+
SkeletonPtr split(
|
|
371
|
+
const std::string& _skeletonName,
|
|
372
|
+
const typename JointType::Properties& _joint
|
|
373
|
+
= typename JointType::Properties());
|
|
374
|
+
|
|
375
|
+
/// Change the Joint type of this BodyNode's parent Joint.
|
|
376
|
+
///
|
|
377
|
+
/// Note that this function will change the indexing of (potentially) all
|
|
378
|
+
/// BodyNodes and Joints in the Skeleton.
|
|
379
|
+
template <class JointType>
|
|
380
|
+
JointType* changeParentJointType(
|
|
381
|
+
const typename JointType::Properties& _joint
|
|
382
|
+
= typename JointType::Properties());
|
|
383
|
+
|
|
384
|
+
/// Create clones of this BodyNode and all of its children recursively (unless
|
|
385
|
+
/// _recursive is set to false) and attach the clones to the specified
|
|
386
|
+
/// BodyNode. The specified BodyNode can be in this Skeleton or a different
|
|
387
|
+
/// Skeleton. Passing in nullptr will set the copy as a root node of the
|
|
388
|
+
/// current Skeleton.
|
|
389
|
+
///
|
|
390
|
+
/// The return value is a pair of pointers to the root of the newly created
|
|
391
|
+
/// BodyNode tree.
|
|
392
|
+
std::pair<Joint*, BodyNode*> copyTo(
|
|
393
|
+
BodyNode* _newParent, bool _recursive = true);
|
|
394
|
+
|
|
395
|
+
/// Create clones of this BodyNode and all of its children recursively (unless
|
|
396
|
+
/// recursive is set to false) and attach the clones to the specified BodyNode
|
|
397
|
+
/// of the specified Skeleton.
|
|
398
|
+
///
|
|
399
|
+
/// The key differences between this function and the copyTo(BodyNode*)
|
|
400
|
+
/// version is that this one allows the copied BodyNode to be const and allows
|
|
401
|
+
/// you to copy it as a root node of another Skeleton.
|
|
402
|
+
///
|
|
403
|
+
/// The return value is a pair of pointers to the root of the newly created
|
|
404
|
+
/// BodyNode tree.
|
|
405
|
+
std::pair<Joint*, BodyNode*> copyTo(
|
|
406
|
+
const SkeletonPtr& _newSkeleton,
|
|
407
|
+
BodyNode* _newParent,
|
|
408
|
+
bool _recursive = true) const;
|
|
409
|
+
|
|
410
|
+
/// A version of copyTo(BodyNode*) that also changes the Joint type of the
|
|
411
|
+
/// parent Joint of this BodyNode.
|
|
412
|
+
template <class JointType>
|
|
413
|
+
std::pair<JointType*, BodyNode*> copyTo(
|
|
414
|
+
BodyNode* _newParent,
|
|
415
|
+
const typename JointType::Properties& _joint
|
|
416
|
+
= typename JointType::Properties(),
|
|
417
|
+
bool _recursive = true);
|
|
418
|
+
|
|
419
|
+
/// A version of copyTo(Skeleton*,BodyNode*) that also changes the Joint type
|
|
420
|
+
/// of the parent Joint of this BodyNode.
|
|
421
|
+
template <class JointType>
|
|
422
|
+
std::pair<JointType*, BodyNode*> copyTo(
|
|
423
|
+
const SkeletonPtr& _newSkeleton,
|
|
424
|
+
BodyNode* _newParent,
|
|
425
|
+
const typename JointType::Properties& _joint
|
|
426
|
+
= typename JointType::Properties(),
|
|
427
|
+
bool _recursive = true) const;
|
|
428
|
+
|
|
429
|
+
/// Create clones of this BodyNode and all of its children (recursively) and
|
|
430
|
+
/// create a new Skeleton with the specified name to attach them to. The
|
|
431
|
+
/// Skeleton::Properties of the current Skeleton will also be copied into the
|
|
432
|
+
/// new Skeleton that gets created.
|
|
433
|
+
SkeletonPtr copyAs(
|
|
434
|
+
const std::string& _skeletonName, bool _recursive = true) const;
|
|
435
|
+
|
|
436
|
+
/// A version of copyAs(const std::string&) that also changes the Joint type
|
|
437
|
+
/// of the root BodyNode.
|
|
438
|
+
template <class JointType>
|
|
439
|
+
SkeletonPtr copyAs(
|
|
440
|
+
const std::string& _skeletonName,
|
|
441
|
+
const typename JointType::Properties& _joint
|
|
442
|
+
= typename JointType::Properties(),
|
|
443
|
+
bool _recursive = true) const;
|
|
444
|
+
|
|
445
|
+
// Documentation inherited
|
|
446
|
+
SkeletonPtr getSkeleton() override;
|
|
447
|
+
|
|
448
|
+
// Documentation inherited
|
|
449
|
+
ConstSkeletonPtr getSkeleton() const override;
|
|
450
|
+
|
|
451
|
+
/// Return the parent Joint of this BodyNode
|
|
452
|
+
Joint* getParentJoint();
|
|
453
|
+
|
|
454
|
+
/// Return the (const) parent Joint of this BodyNode
|
|
455
|
+
const Joint* getParentJoint() const;
|
|
456
|
+
|
|
457
|
+
/// Return the parent BodyNdoe of this BodyNode
|
|
458
|
+
BodyNode* getParentBodyNode();
|
|
459
|
+
|
|
460
|
+
/// Return the (const) parent BodyNode of this BodyNode
|
|
461
|
+
const BodyNode* getParentBodyNode() const;
|
|
462
|
+
|
|
463
|
+
/// Create a Joint and BodyNode pair as a child of this BodyNode
|
|
464
|
+
template <class JointType, class NodeType = BodyNode>
|
|
465
|
+
std::pair<JointType*, NodeType*> createChildJointAndBodyNodePair(
|
|
466
|
+
const typename JointType::Properties& _jointProperties
|
|
467
|
+
= typename JointType::Properties(),
|
|
468
|
+
const typename NodeType::Properties& _bodyProperties
|
|
469
|
+
= typename NodeType::Properties());
|
|
470
|
+
|
|
471
|
+
/// Return the number of child BodyNodes
|
|
472
|
+
std::size_t getNumChildBodyNodes() const;
|
|
473
|
+
|
|
474
|
+
/// Return the _index-th child BodyNode of this BodyNode
|
|
475
|
+
BodyNode* getChildBodyNode(std::size_t _index);
|
|
476
|
+
|
|
477
|
+
/// Return the (const) _index-th child BodyNode of this BodyNode
|
|
478
|
+
const BodyNode* getChildBodyNode(std::size_t _index) const;
|
|
479
|
+
|
|
480
|
+
/// Return the number of child Joints
|
|
481
|
+
std::size_t getNumChildJoints() const;
|
|
482
|
+
|
|
483
|
+
/// Return the _index-th child Joint of this BodyNode
|
|
484
|
+
Joint* getChildJoint(std::size_t _index);
|
|
485
|
+
|
|
486
|
+
/// Return the (const) _index-th child Joint of this BodyNode
|
|
487
|
+
const Joint* getChildJoint(std::size_t _index) const;
|
|
488
|
+
|
|
489
|
+
/// Create some Node type and attach it to this BodyNode.
|
|
490
|
+
template <class NodeType, typename... Args>
|
|
491
|
+
NodeType* createNode(Args&&... args);
|
|
492
|
+
|
|
493
|
+
DART_BAKE_SPECIALIZED_NODE_DECLARATIONS(ShapeNode)
|
|
494
|
+
|
|
495
|
+
/// Create an ShapeNode attached to this BodyNode. Pass a
|
|
496
|
+
/// ShapeNode::Properties argument into its constructor. If automaticName is
|
|
497
|
+
/// true, then the mName field of properties will be ignored, and the
|
|
498
|
+
/// ShapeNode will be automatically assigned a name:
|
|
499
|
+
/// \<BodyNodeName\>_ShapeNode_<#>
|
|
500
|
+
template <class ShapeNodeProperties>
|
|
501
|
+
ShapeNode* createShapeNode(
|
|
502
|
+
ShapeNodeProperties properties, bool automaticName = true);
|
|
503
|
+
|
|
504
|
+
/// Create a ShapeNode with an automatically assigned name:
|
|
505
|
+
/// \<BodyNodeName\>_ShapeNode_<#>.
|
|
506
|
+
template <class ShapeType>
|
|
507
|
+
ShapeNode* createShapeNode(const std::shared_ptr<ShapeType>& shape);
|
|
508
|
+
|
|
509
|
+
/// Create a ShapeNode with the specified name
|
|
510
|
+
template <class ShapeType, class StringType>
|
|
511
|
+
ShapeNode* createShapeNode(
|
|
512
|
+
const std::shared_ptr<ShapeType>& shape, StringType&& name);
|
|
513
|
+
|
|
514
|
+
/// Return the list of ShapeNodes
|
|
515
|
+
///
|
|
516
|
+
/// \deprecated Use eachShapeNode() instead.
|
|
517
|
+
DART_DEPRECATED(6.13)
|
|
518
|
+
const std::vector<ShapeNode*> getShapeNodes();
|
|
519
|
+
|
|
520
|
+
/// Return the list of (const) ShapeNodes
|
|
521
|
+
///
|
|
522
|
+
/// \deprecated Use eachShapeNode() instead.
|
|
523
|
+
DART_DEPRECATED(6.13)
|
|
524
|
+
const std::vector<const ShapeNode*> getShapeNodes() const;
|
|
525
|
+
|
|
526
|
+
/// Remove all ShapeNodes from this BodyNode
|
|
527
|
+
void removeAllShapeNodes();
|
|
528
|
+
|
|
529
|
+
/// Create a ShapeNode with the specified Aspects and an automatically
|
|
530
|
+
/// assigned name: \<BodyNodeName\>_ShapeNode_<#>.
|
|
531
|
+
template <class... Aspects>
|
|
532
|
+
ShapeNode* createShapeNodeWith(const ShapePtr& shape);
|
|
533
|
+
|
|
534
|
+
/// Create a ShapeNode with the specified name and Aspects
|
|
535
|
+
template <class... Aspects>
|
|
536
|
+
ShapeNode* createShapeNodeWith(
|
|
537
|
+
const ShapePtr& shape, const std::string& name);
|
|
538
|
+
|
|
539
|
+
/// Return the number of ShapeNodes containing given Aspect in this BodyNode
|
|
540
|
+
template <class Aspect>
|
|
541
|
+
std::size_t getNumShapeNodesWith() const;
|
|
542
|
+
|
|
543
|
+
/// Return the list of ShapeNodes containing given Aspect
|
|
544
|
+
///
|
|
545
|
+
/// \deprecated Use eachShapeNodeWith() instead.
|
|
546
|
+
template <class Aspect>
|
|
547
|
+
DART_DEPRECATED(6.13)
|
|
548
|
+
const std::vector<ShapeNode*> getShapeNodesWith();
|
|
549
|
+
|
|
550
|
+
/// Return the list of ShapeNodes containing given Aspect
|
|
551
|
+
///
|
|
552
|
+
/// \deprecated Use eachShapeNodeWith() instead.
|
|
553
|
+
template <class Aspect>
|
|
554
|
+
DART_DEPRECATED(6.13)
|
|
555
|
+
const std::vector<const ShapeNode*> getShapeNodesWith() const;
|
|
556
|
+
|
|
557
|
+
/// Returns the index-th ShapeNode among the ShapeNodes that have a specific
|
|
558
|
+
/// Aspect.
|
|
559
|
+
///
|
|
560
|
+
/// Returns nullptr if not found.
|
|
561
|
+
template <class Aspect>
|
|
562
|
+
ShapeNode* getShapeNodeWith(std::size_t index);
|
|
563
|
+
|
|
564
|
+
template <class Aspect>
|
|
565
|
+
const ShapeNode* getShapeNodeWith(std::size_t index) const;
|
|
566
|
+
|
|
567
|
+
/// Remove all ShapeNodes containing given Aspect from this BodyNode
|
|
568
|
+
template <class Aspect>
|
|
569
|
+
void removeAllShapeNodesWith();
|
|
570
|
+
|
|
571
|
+
/// Iterates all the ShapeNodes that has a specific aspect and invokes the
|
|
572
|
+
/// callback function.
|
|
573
|
+
///
|
|
574
|
+
/// Example:
|
|
575
|
+
/// \code{.cpp}
|
|
576
|
+
/// bodyNode->eachShapeNodeWith<VisualAspect>([](const ShapeNode* shapeNode)
|
|
577
|
+
/// {
|
|
578
|
+
/// shapeNode->getVisualAspect()->getAlpha();
|
|
579
|
+
/// });
|
|
580
|
+
/// \endcode
|
|
581
|
+
///
|
|
582
|
+
/// \tparam Aspect: The Aspect type that ShapeNodes should have to be visited.
|
|
583
|
+
/// \tparam Func: The callback function type. The function signature should be
|
|
584
|
+
/// equivalent to \c void(const ShapeNode*) or \c bool(const ShapeNode*). If
|
|
585
|
+
/// you want to conditionally iterate, use \c bool(const ShapeNode*) and
|
|
586
|
+
/// return false when to stop iterating.
|
|
587
|
+
///
|
|
588
|
+
/// \param[in] func: The callback function to be called for each ShapeNode.
|
|
589
|
+
template <typename Aspect, typename Func>
|
|
590
|
+
void eachShapeNodeWith(Func func) const;
|
|
591
|
+
|
|
592
|
+
/// Iterates all the ShapeNodes that has a specific aspect and invokes the
|
|
593
|
+
/// callback function.
|
|
594
|
+
///
|
|
595
|
+
/// Example:
|
|
596
|
+
/// \code{.cpp}
|
|
597
|
+
/// bodyNode->eachShapeNodeWith<VisualAspect>([&](ShapeNode* shapeNode) {
|
|
598
|
+
/// shapeNode->getVisualAspect()->setAlpha(0.5);
|
|
599
|
+
/// });
|
|
600
|
+
/// \endcode
|
|
601
|
+
///
|
|
602
|
+
/// \tparam Aspect: The Aspect type that ShapeNodes should have to be visited.
|
|
603
|
+
/// \tparam Func: The callback function type. The function signature should be
|
|
604
|
+
/// equivalent to \c void(ShapeNode*) or \c bool(ShapeNode*). If
|
|
605
|
+
/// you want to conditionally iterate, use \c bool(ShapeNode*) and return
|
|
606
|
+
/// false when to stop iterating.
|
|
607
|
+
///
|
|
608
|
+
/// \param[in] func: The callback function to be called for each ShapeNode.
|
|
609
|
+
template <typename Aspect, typename Func>
|
|
610
|
+
void eachShapeNodeWith(Func func);
|
|
611
|
+
|
|
612
|
+
DART_BAKE_SPECIALIZED_NODE_DECLARATIONS(EndEffector)
|
|
613
|
+
|
|
614
|
+
/// Create an EndEffector attached to this BodyNode. Pass an
|
|
615
|
+
/// EndEffector::Properties argument into this function.
|
|
616
|
+
EndEffector* createEndEffector(
|
|
617
|
+
const EndEffector::BasicProperties& _properties);
|
|
618
|
+
|
|
619
|
+
/// Create an EndEffector with the specified name
|
|
620
|
+
EndEffector* createEndEffector(const std::string& _name = "EndEffector");
|
|
621
|
+
|
|
622
|
+
/// Create an EndEffector with the specified name
|
|
623
|
+
EndEffector* createEndEffector(const char* _name);
|
|
624
|
+
|
|
625
|
+
DART_BAKE_SPECIALIZED_NODE_DECLARATIONS(Marker)
|
|
626
|
+
|
|
627
|
+
/// Create a Marker with the given fields
|
|
628
|
+
Marker* createMarker(
|
|
629
|
+
const std::string& name = "marker",
|
|
630
|
+
const Eigen::Vector3d& position = Eigen::Vector3d::Zero(),
|
|
631
|
+
const Eigen::Vector4d& color = Eigen::Vector4d::Constant(1.0));
|
|
632
|
+
|
|
633
|
+
/// Create a Marker given its basic properties
|
|
634
|
+
Marker* createMarker(const Marker::BasicProperties& properties);
|
|
635
|
+
|
|
636
|
+
// Documentation inherited
|
|
637
|
+
bool dependsOn(std::size_t _genCoordIndex) const override;
|
|
638
|
+
|
|
639
|
+
// Documentation inherited
|
|
640
|
+
std::size_t getNumDependentGenCoords() const override;
|
|
641
|
+
|
|
642
|
+
// Documentation inherited
|
|
643
|
+
std::size_t getDependentGenCoordIndex(std::size_t _arrayIndex) const override;
|
|
644
|
+
|
|
645
|
+
// Documentation inherited
|
|
646
|
+
const std::vector<std::size_t>& getDependentGenCoordIndices() const override;
|
|
647
|
+
|
|
648
|
+
// Documentation inherited
|
|
649
|
+
std::size_t getNumDependentDofs() const override;
|
|
650
|
+
|
|
651
|
+
// Documentation inherited
|
|
652
|
+
DegreeOfFreedom* getDependentDof(std::size_t _index) override;
|
|
653
|
+
|
|
654
|
+
// Documentation inherited
|
|
655
|
+
const DegreeOfFreedom* getDependentDof(std::size_t _index) const override;
|
|
656
|
+
|
|
657
|
+
// Documentation inherited
|
|
658
|
+
const std::vector<DegreeOfFreedom*>& getDependentDofs() override;
|
|
659
|
+
|
|
660
|
+
// Documentation inherited
|
|
661
|
+
const std::vector<const DegreeOfFreedom*>& getDependentDofs() const override;
|
|
662
|
+
|
|
663
|
+
// Documentation inherited
|
|
664
|
+
const std::vector<const DegreeOfFreedom*> getChainDofs() const override;
|
|
665
|
+
|
|
666
|
+
//--------------------------------------------------------------------------
|
|
667
|
+
// Properties updated by dynamics (kinematics)
|
|
668
|
+
//--------------------------------------------------------------------------
|
|
669
|
+
|
|
670
|
+
/// Get the transform of this BodyNode with respect to its parent BodyNode,
|
|
671
|
+
/// which is also its parent Frame.
|
|
672
|
+
const Eigen::Isometry3d& getRelativeTransform() const override;
|
|
673
|
+
|
|
674
|
+
// Documentation inherited
|
|
675
|
+
const Eigen::Vector6d& getRelativeSpatialVelocity() const override;
|
|
676
|
+
|
|
677
|
+
// Documentation inherited
|
|
678
|
+
const Eigen::Vector6d& getRelativeSpatialAcceleration() const override;
|
|
679
|
+
|
|
680
|
+
// Documentation inherited
|
|
681
|
+
const Eigen::Vector6d& getPrimaryRelativeAcceleration() const override;
|
|
682
|
+
|
|
683
|
+
/// Return the partial acceleration of this body
|
|
684
|
+
const Eigen::Vector6d& getPartialAcceleration() const override;
|
|
685
|
+
|
|
686
|
+
/// Return the generalized Jacobian targeting the origin of this BodyNode. The
|
|
687
|
+
/// Jacobian is expressed in the Frame of this BodyNode.
|
|
688
|
+
const math::Jacobian& getJacobian() const override final;
|
|
689
|
+
|
|
690
|
+
// Prevent the inherited getJacobian functions from being shadowed
|
|
691
|
+
using TemplatedJacobianNode<BodyNode>::getJacobian;
|
|
692
|
+
|
|
693
|
+
/// Return the generalized Jacobian targeting the origin of this BodyNode. The
|
|
694
|
+
/// Jacobian is expressed in the World Frame.
|
|
695
|
+
const math::Jacobian& getWorldJacobian() const override final;
|
|
696
|
+
|
|
697
|
+
// Prevent the inherited getWorldJacobian functions from being shadowed
|
|
698
|
+
using TemplatedJacobianNode<BodyNode>::getWorldJacobian;
|
|
699
|
+
|
|
700
|
+
/// Return the spatial time derivative of the generalized Jacobian targeting
|
|
701
|
+
/// the origin of this BodyNode. The Jacobian is expressed in this BodyNode's
|
|
702
|
+
/// coordinate Frame.
|
|
703
|
+
///
|
|
704
|
+
/// NOTE: Since this is a spatial time derivative, it should be used with
|
|
705
|
+
/// spatial vectors. If you are using classical linear and angular
|
|
706
|
+
/// acceleration vectors, then use getJacobianClassicDeriv(),
|
|
707
|
+
/// getLinearJacobianDeriv(), or getAngularJacobianDeriv() instead.
|
|
708
|
+
const math::Jacobian& getJacobianSpatialDeriv() const override final;
|
|
709
|
+
|
|
710
|
+
// Prevent the inherited getJacobianSpatialDeriv functions from being shadowed
|
|
711
|
+
using TemplatedJacobianNode<BodyNode>::getJacobianSpatialDeriv;
|
|
712
|
+
|
|
713
|
+
/// Return the classical time derivative of the generalized Jacobian targeting
|
|
714
|
+
/// the origin of this BodyNode. The Jacobian is expressed in the World
|
|
715
|
+
/// coordinate Frame.
|
|
716
|
+
///
|
|
717
|
+
/// NOTE: Since this is a classical time derivative, it should be used with
|
|
718
|
+
/// classical linear and angular vectors. If you are using spatial vectors,
|
|
719
|
+
/// use getJacobianSpatialDeriv() instead.
|
|
720
|
+
const math::Jacobian& getJacobianClassicDeriv() const override final;
|
|
721
|
+
|
|
722
|
+
// Prevent the inherited getJacobianClassicDeriv functions from being shadowed
|
|
723
|
+
using TemplatedJacobianNode<BodyNode>::getJacobianClassicDeriv;
|
|
724
|
+
|
|
725
|
+
/// Return the velocity change due to the constraint impulse
|
|
726
|
+
const Eigen::Vector6d& getBodyVelocityChange() const;
|
|
727
|
+
|
|
728
|
+
/// Set whether this body node is colliding with other objects. Note that
|
|
729
|
+
/// this status is set by the constraint solver during dynamics simulation but
|
|
730
|
+
/// not by collision detector.
|
|
731
|
+
/// \param[in] _isColliding True if this body node is colliding.
|
|
732
|
+
DART_DEPRECATED(6.0)
|
|
733
|
+
void setColliding(bool _isColliding);
|
|
734
|
+
|
|
735
|
+
/// Return whether this body node is set to be colliding with other objects.
|
|
736
|
+
/// \return True if this body node is colliding.
|
|
737
|
+
DART_DEPRECATED(6.0)
|
|
738
|
+
bool isColliding();
|
|
739
|
+
|
|
740
|
+
/// Add applying linear Cartesian forces to this node
|
|
741
|
+
///
|
|
742
|
+
/// A force is defined by a point of application and a force vector. The
|
|
743
|
+
/// last two parameters specify frames of the first two parameters.
|
|
744
|
+
/// Coordinate transformations are applied when needed. The point of
|
|
745
|
+
/// application and the force in local coordinates are stored in mContacts.
|
|
746
|
+
/// When conversion is needed, make sure the transformations are avaialble.
|
|
747
|
+
void addExtForce(
|
|
748
|
+
const Eigen::Vector3d& _force,
|
|
749
|
+
const Eigen::Vector3d& _offset = Eigen::Vector3d::Zero(),
|
|
750
|
+
bool _isForceLocal = false,
|
|
751
|
+
bool _isOffsetLocal = true);
|
|
752
|
+
|
|
753
|
+
/// Set Applying linear Cartesian forces to this node.
|
|
754
|
+
void setExtForce(
|
|
755
|
+
const Eigen::Vector3d& _force,
|
|
756
|
+
const Eigen::Vector3d& _offset = Eigen::Vector3d::Zero(),
|
|
757
|
+
bool _isForceLocal = false,
|
|
758
|
+
bool _isOffsetLocal = true);
|
|
759
|
+
|
|
760
|
+
/// Add applying Cartesian torque to the node.
|
|
761
|
+
///
|
|
762
|
+
/// The torque in local coordinates is accumulated in mExtTorqueBody.
|
|
763
|
+
void addExtTorque(const Eigen::Vector3d& _torque, bool _isLocal = false);
|
|
764
|
+
|
|
765
|
+
/// Set applying Cartesian torque to the node.
|
|
766
|
+
///
|
|
767
|
+
/// The torque in local coordinates is accumulated in mExtTorqueBody.
|
|
768
|
+
void setExtTorque(const Eigen::Vector3d& _torque, bool _isLocal = false);
|
|
769
|
+
|
|
770
|
+
/// Clean up structures that store external forces: mContacts, mFext,
|
|
771
|
+
/// mExtForceBody and mExtTorqueBody.
|
|
772
|
+
///
|
|
773
|
+
/// Called by Skeleton::clearExternalForces.
|
|
774
|
+
virtual void clearExternalForces();
|
|
775
|
+
|
|
776
|
+
/// Clear out the generalized forces of the parent Joint and any other forces
|
|
777
|
+
/// related to this BodyNode that are internal to the Skeleton. For example,
|
|
778
|
+
/// the point mass forces for SoftBodyNodes.
|
|
779
|
+
virtual void clearInternalForces();
|
|
780
|
+
|
|
781
|
+
///
|
|
782
|
+
const Eigen::Vector6d& getExternalForceLocal() const;
|
|
783
|
+
|
|
784
|
+
///
|
|
785
|
+
Eigen::Vector6d getExternalForceGlobal() const;
|
|
786
|
+
|
|
787
|
+
/// Get spatial body force transmitted from the parent joint.
|
|
788
|
+
///
|
|
789
|
+
/// The spatial body force is transmitted to this BodyNode from the parent
|
|
790
|
+
/// body through the connecting joint. It is expressed in this BodyNode's
|
|
791
|
+
/// frame.
|
|
792
|
+
const Eigen::Vector6d& getBodyForce() const;
|
|
793
|
+
|
|
794
|
+
//----------------------------------------------------------------------------
|
|
795
|
+
// Constraints
|
|
796
|
+
// - Following functions are managed by constraint solver.
|
|
797
|
+
//----------------------------------------------------------------------------
|
|
798
|
+
|
|
799
|
+
/// Return true if the body can react to force or constraint impulse.
|
|
800
|
+
///
|
|
801
|
+
/// A body node is reactive if the skeleton is mobile and the number of
|
|
802
|
+
/// dependent generalized coordinates is non zero.
|
|
803
|
+
bool isReactive() const;
|
|
804
|
+
|
|
805
|
+
/// Set constraint impulse
|
|
806
|
+
/// \param[in] _constImp Spatial constraint impulse w.r.t. body frame
|
|
807
|
+
void setConstraintImpulse(const Eigen::Vector6d& _constImp);
|
|
808
|
+
|
|
809
|
+
/// Add constraint impulse
|
|
810
|
+
/// \param[in] _constImp Spatial constraint impulse w.r.t. body frame
|
|
811
|
+
void addConstraintImpulse(const Eigen::Vector6d& _constImp);
|
|
812
|
+
|
|
813
|
+
/// Add constraint impulse
|
|
814
|
+
void addConstraintImpulse(
|
|
815
|
+
const Eigen::Vector3d& _constImp,
|
|
816
|
+
const Eigen::Vector3d& _offset,
|
|
817
|
+
bool _isImpulseLocal = false,
|
|
818
|
+
bool _isOffsetLocal = true);
|
|
819
|
+
|
|
820
|
+
/// Clear constraint impulses and cache data used for impulse-based forward
|
|
821
|
+
/// dynamics algorithm
|
|
822
|
+
virtual void clearConstraintImpulse();
|
|
823
|
+
|
|
824
|
+
/// Return constraint impulse
|
|
825
|
+
const Eigen::Vector6d& getConstraintImpulse() const;
|
|
826
|
+
|
|
827
|
+
//----------------------------------------------------------------------------
|
|
828
|
+
// Energies
|
|
829
|
+
//----------------------------------------------------------------------------
|
|
830
|
+
|
|
831
|
+
/// Return Lagrangian of this body
|
|
832
|
+
double computeLagrangian(const Eigen::Vector3d& gravity) const;
|
|
833
|
+
|
|
834
|
+
/// Return kinetic energy.
|
|
835
|
+
DART_DEPRECATED(6.1)
|
|
836
|
+
virtual double getKineticEnergy() const;
|
|
837
|
+
|
|
838
|
+
/// Return kinetic energy
|
|
839
|
+
double computeKineticEnergy() const;
|
|
840
|
+
|
|
841
|
+
/// Return potential energy.
|
|
842
|
+
DART_DEPRECATED(6.1)
|
|
843
|
+
virtual double getPotentialEnergy(const Eigen::Vector3d& _gravity) const;
|
|
844
|
+
|
|
845
|
+
/// Return potential energy.
|
|
846
|
+
double computePotentialEnergy(const Eigen::Vector3d& gravity) const;
|
|
847
|
+
|
|
848
|
+
/// Return linear momentum.
|
|
849
|
+
Eigen::Vector3d getLinearMomentum() const;
|
|
850
|
+
|
|
851
|
+
/// Return angular momentum.
|
|
852
|
+
Eigen::Vector3d getAngularMomentum(
|
|
853
|
+
const Eigen::Vector3d& _pivot = Eigen::Vector3d::Zero());
|
|
854
|
+
|
|
855
|
+
//----------------------------------------------------------------------------
|
|
856
|
+
// Notifications
|
|
857
|
+
//----------------------------------------------------------------------------
|
|
858
|
+
|
|
859
|
+
// Documentation inherited
|
|
860
|
+
void dirtyTransform() override;
|
|
861
|
+
|
|
862
|
+
// Documentation inherited
|
|
863
|
+
void dirtyVelocity() override;
|
|
864
|
+
|
|
865
|
+
// Documentation inherited
|
|
866
|
+
void dirtyAcceleration() override;
|
|
867
|
+
|
|
868
|
+
/// Notify the Skeleton that the tree of this BodyNode needs an articulated
|
|
869
|
+
/// inertia update
|
|
870
|
+
DART_DEPRECATED(6.2)
|
|
871
|
+
void notifyArticulatedInertiaUpdate();
|
|
872
|
+
|
|
873
|
+
/// Notify the Skeleton that the tree of this BodyNode needs an articulated
|
|
874
|
+
/// inertia update
|
|
875
|
+
void dirtyArticulatedInertia();
|
|
876
|
+
|
|
877
|
+
/// Tell the Skeleton that the external forces need to be updated
|
|
878
|
+
DART_DEPRECATED(6.2)
|
|
879
|
+
void notifyExternalForcesUpdate();
|
|
880
|
+
|
|
881
|
+
/// Tell the Skeleton that the external forces need to be updated
|
|
882
|
+
void dirtyExternalForces();
|
|
883
|
+
|
|
884
|
+
/// Tell the Skeleton that the coriolis forces need to be update
|
|
885
|
+
DART_DEPRECATED(6.2)
|
|
886
|
+
void notifyCoriolisUpdate();
|
|
887
|
+
|
|
888
|
+
/// Tell the Skeleton that the coriolis forces need to be update
|
|
889
|
+
void dirtyCoriolisForces();
|
|
890
|
+
|
|
891
|
+
/// Sets the RGB color of the ShapeNodes that are currently in this
|
|
892
|
+
/// BodyNode.
|
|
893
|
+
///
|
|
894
|
+
/// ShapeNodes that don't have VisualAspect will be ignored.
|
|
895
|
+
///
|
|
896
|
+
/// Note that the ShapeNodes that are added after calling this function
|
|
897
|
+
/// don't get updated to the color that was set beforehand.
|
|
898
|
+
void setColor(const Eigen::Vector3d& color);
|
|
899
|
+
|
|
900
|
+
/// Sets the RGBA color of the ShapeNodes that are currently in this
|
|
901
|
+
/// BodyNode.
|
|
902
|
+
///
|
|
903
|
+
/// ShapeNodes that don't have VisualAspect will be ignored.
|
|
904
|
+
///
|
|
905
|
+
/// Note that the ShapeNodes that are added after calling this function
|
|
906
|
+
/// don't get updated to the color that was set beforehand.
|
|
907
|
+
void setColor(const Eigen::Vector4d& color);
|
|
908
|
+
|
|
909
|
+
/// Sets the alpha component of the ShapeNodes that are currently in this
|
|
910
|
+
/// BodyNode.
|
|
911
|
+
///
|
|
912
|
+
/// ShapeNodes that don't have VisualAspect will be ignored.
|
|
913
|
+
///
|
|
914
|
+
/// Note that the ShapeNodes that are added after calling this function
|
|
915
|
+
/// don't get updated to the alpha value that was set beforehand.
|
|
916
|
+
void setAlpha(double alpha);
|
|
917
|
+
|
|
918
|
+
//----------------------------------------------------------------------------
|
|
919
|
+
// Friendship
|
|
920
|
+
//----------------------------------------------------------------------------
|
|
921
|
+
|
|
922
|
+
friend class Skeleton;
|
|
923
|
+
friend class Joint;
|
|
924
|
+
friend class EndEffector;
|
|
925
|
+
friend class SoftBodyNode;
|
|
926
|
+
friend class PointMass;
|
|
927
|
+
friend class Node;
|
|
928
|
+
|
|
929
|
+
protected:
|
|
930
|
+
/// Constructor called by Skeleton class
|
|
931
|
+
BodyNode(
|
|
932
|
+
BodyNode* _parentBodyNode,
|
|
933
|
+
Joint* _parentJoint,
|
|
934
|
+
const Properties& _properties);
|
|
935
|
+
|
|
936
|
+
/// Delegating constructor
|
|
937
|
+
BodyNode(const std::tuple<BodyNode*, Joint*, Properties>& args);
|
|
938
|
+
|
|
939
|
+
/// Create a clone of this BodyNode. This may only be called by the Skeleton
|
|
940
|
+
/// class.
|
|
941
|
+
virtual BodyNode* clone(
|
|
942
|
+
BodyNode* _parentBodyNode, Joint* _parentJoint, bool cloneNodes) const;
|
|
943
|
+
|
|
944
|
+
/// This is needed in order to inherit the Node class, but it does nothing
|
|
945
|
+
Node* cloneNode(BodyNode* bn) const override final;
|
|
946
|
+
|
|
947
|
+
/// Initialize the vector members with proper sizes.
|
|
948
|
+
virtual void init(const SkeletonPtr& _skeleton);
|
|
949
|
+
|
|
950
|
+
/// Add a child bodynode into the bodynode
|
|
951
|
+
void addChildBodyNode(BodyNode* _body);
|
|
952
|
+
|
|
953
|
+
//----------------------------------------------------------------------------
|
|
954
|
+
/// \{ \name Recursive dynamics routines
|
|
955
|
+
//----------------------------------------------------------------------------
|
|
956
|
+
|
|
957
|
+
/// Separate generic child Entities from child BodyNodes for more efficient
|
|
958
|
+
/// update notices
|
|
959
|
+
void processNewEntity(Entity* _newChildEntity) override;
|
|
960
|
+
|
|
961
|
+
/// Remove this Entity from mChildBodyNodes or mNonBodyNodeEntities
|
|
962
|
+
void processRemovedEntity(Entity* _oldChildEntity) override;
|
|
963
|
+
|
|
964
|
+
/// Update transformation
|
|
965
|
+
virtual void updateTransform();
|
|
966
|
+
|
|
967
|
+
/// Update spatial body velocity.
|
|
968
|
+
virtual void updateVelocity();
|
|
969
|
+
|
|
970
|
+
/// Update partial spatial body acceleration due to parent joint's velocity.
|
|
971
|
+
virtual void updatePartialAcceleration() const;
|
|
972
|
+
|
|
973
|
+
/// Update articulated body inertia for forward dynamics.
|
|
974
|
+
/// \param[in] _timeStep Rquired for implicit joint stiffness and damping.
|
|
975
|
+
virtual void updateArtInertia(double _timeStep) const;
|
|
976
|
+
|
|
977
|
+
/// Update bias force associated with the articulated body inertia for forward
|
|
978
|
+
/// dynamics.
|
|
979
|
+
/// \param[in] _gravity Vector of gravitational acceleration
|
|
980
|
+
/// \param[in] _timeStep Rquired for implicit joint stiffness and damping.
|
|
981
|
+
virtual void updateBiasForce(
|
|
982
|
+
const Eigen::Vector3d& _gravity, double _timeStep);
|
|
983
|
+
|
|
984
|
+
/// Update bias impulse associated with the articulated body inertia for
|
|
985
|
+
/// impulse-based forward dynamics.
|
|
986
|
+
virtual void updateBiasImpulse();
|
|
987
|
+
|
|
988
|
+
/// Update spatial body acceleration with the partial spatial body
|
|
989
|
+
/// acceleration for inverse dynamics.
|
|
990
|
+
virtual void updateAccelerationID();
|
|
991
|
+
|
|
992
|
+
/// Update spatial body acceleration for forward dynamics.
|
|
993
|
+
virtual void updateAccelerationFD();
|
|
994
|
+
|
|
995
|
+
/// Update spatical body velocity change for impluse-based forward dynamics.
|
|
996
|
+
virtual void updateVelocityChangeFD();
|
|
997
|
+
|
|
998
|
+
/// Update spatial body force for inverse dynamics.
|
|
999
|
+
///
|
|
1000
|
+
/// The spatial body force is transmitted to this BodyNode from the parent
|
|
1001
|
+
/// body through the connecting joint. It is expressed in this BodyNode's
|
|
1002
|
+
/// frame.
|
|
1003
|
+
virtual void updateTransmittedForceID(
|
|
1004
|
+
const Eigen::Vector3d& _gravity, bool _withExternalForces = false);
|
|
1005
|
+
|
|
1006
|
+
/// Update spatial body force for forward dynamics.
|
|
1007
|
+
///
|
|
1008
|
+
/// The spatial body force is transmitted to this BodyNode from the parent
|
|
1009
|
+
/// body through the connecting joint. It is expressed in this BodyNode's
|
|
1010
|
+
/// frame.
|
|
1011
|
+
virtual void updateTransmittedForceFD();
|
|
1012
|
+
|
|
1013
|
+
/// Update spatial body force for impulse-based forward dynamics.
|
|
1014
|
+
///
|
|
1015
|
+
/// The spatial body impulse is transmitted to this BodyNode from the parent
|
|
1016
|
+
/// body through the connecting joint. It is expressed in this BodyNode's
|
|
1017
|
+
/// frame.
|
|
1018
|
+
virtual void updateTransmittedImpulse();
|
|
1019
|
+
// TODO: Rename to updateTransmittedImpulseFD if impulse-based inverse
|
|
1020
|
+
// dynamics is implemented.
|
|
1021
|
+
|
|
1022
|
+
/// Update the joint force for inverse dynamics.
|
|
1023
|
+
virtual void updateJointForceID(
|
|
1024
|
+
double _timeStep, bool _withDampingForces, bool _withSpringForces);
|
|
1025
|
+
|
|
1026
|
+
/// Update the joint force for forward dynamics.
|
|
1027
|
+
virtual void updateJointForceFD(
|
|
1028
|
+
double _timeStep, bool _withDampingForces, bool _withSpringForces);
|
|
1029
|
+
|
|
1030
|
+
/// Update the joint impulse for forward dynamics.
|
|
1031
|
+
virtual void updateJointImpulseFD();
|
|
1032
|
+
|
|
1033
|
+
/// Update constrained terms due to the constraint impulses for foward
|
|
1034
|
+
/// dynamics.
|
|
1035
|
+
virtual void updateConstrainedTerms(double _timeStep);
|
|
1036
|
+
|
|
1037
|
+
/// \}
|
|
1038
|
+
|
|
1039
|
+
//----------------------------------------------------------------------------
|
|
1040
|
+
/// \{ \name Equations of motion related routines
|
|
1041
|
+
//----------------------------------------------------------------------------
|
|
1042
|
+
|
|
1043
|
+
///
|
|
1044
|
+
virtual void updateMassMatrix();
|
|
1045
|
+
virtual void aggregateMassMatrix(Eigen::MatrixXd& _MCol, std::size_t _col);
|
|
1046
|
+
virtual void aggregateAugMassMatrix(
|
|
1047
|
+
Eigen::MatrixXd& _MCol, std::size_t _col, double _timeStep);
|
|
1048
|
+
|
|
1049
|
+
///
|
|
1050
|
+
virtual void updateInvMassMatrix();
|
|
1051
|
+
virtual void updateInvAugMassMatrix();
|
|
1052
|
+
virtual void aggregateInvMassMatrix(
|
|
1053
|
+
Eigen::MatrixXd& _InvMCol, std::size_t _col);
|
|
1054
|
+
virtual void aggregateInvAugMassMatrix(
|
|
1055
|
+
Eigen::MatrixXd& _InvMCol, std::size_t _col, double _timeStep);
|
|
1056
|
+
|
|
1057
|
+
///
|
|
1058
|
+
virtual void aggregateCoriolisForceVector(Eigen::VectorXd& _C);
|
|
1059
|
+
|
|
1060
|
+
///
|
|
1061
|
+
virtual void aggregateGravityForceVector(
|
|
1062
|
+
Eigen::VectorXd& _g, const Eigen::Vector3d& _gravity);
|
|
1063
|
+
|
|
1064
|
+
///
|
|
1065
|
+
virtual void updateCombinedVector();
|
|
1066
|
+
virtual void aggregateCombinedVector(
|
|
1067
|
+
Eigen::VectorXd& _Cg, const Eigen::Vector3d& _gravity);
|
|
1068
|
+
|
|
1069
|
+
/// Aggregate the external forces mFext in the generalized coordinates
|
|
1070
|
+
/// recursively
|
|
1071
|
+
virtual void aggregateExternalForces(Eigen::VectorXd& _Fext);
|
|
1072
|
+
|
|
1073
|
+
///
|
|
1074
|
+
virtual void aggregateSpatialToGeneralized(
|
|
1075
|
+
Eigen::VectorXd& _generalized, const Eigen::Vector6d& _spatial);
|
|
1076
|
+
|
|
1077
|
+
/// Update body Jacobian. getJacobian() calls this function if
|
|
1078
|
+
/// mIsBodyJacobianDirty is true.
|
|
1079
|
+
void updateBodyJacobian() const;
|
|
1080
|
+
|
|
1081
|
+
/// Update the World Jacobian. The commonality of using the World Jacobian
|
|
1082
|
+
/// makes it worth caching.
|
|
1083
|
+
void updateWorldJacobian() const;
|
|
1084
|
+
|
|
1085
|
+
/// Update spatial time derivative of body Jacobian.
|
|
1086
|
+
/// getJacobianSpatialTimeDeriv() calls this function if
|
|
1087
|
+
/// mIsBodyJacobianSpatialDerivDirty is true.
|
|
1088
|
+
void updateBodyJacobianSpatialDeriv() const;
|
|
1089
|
+
|
|
1090
|
+
/// Update classic time derivative of body Jacobian.
|
|
1091
|
+
/// getJacobianClassicDeriv() calls this function if
|
|
1092
|
+
/// mIsWorldJacobianClassicDerivDirty is true.
|
|
1093
|
+
void updateWorldJacobianClassicDeriv() const;
|
|
1094
|
+
|
|
1095
|
+
/// \}
|
|
1096
|
+
|
|
1097
|
+
protected:
|
|
1098
|
+
//--------------------------------------------------------------------------
|
|
1099
|
+
// General properties
|
|
1100
|
+
//--------------------------------------------------------------------------
|
|
1101
|
+
|
|
1102
|
+
/// A unique ID of this node globally.
|
|
1103
|
+
int mID;
|
|
1104
|
+
|
|
1105
|
+
/// Counts the number of nodes globally.
|
|
1106
|
+
static std::size_t msBodyNodeCount;
|
|
1107
|
+
|
|
1108
|
+
/// Whether the node is currently in collision with another node.
|
|
1109
|
+
/// \deprecated DART_DEPRECATED(6.0) See #670 for more detail.
|
|
1110
|
+
bool mIsColliding;
|
|
1111
|
+
|
|
1112
|
+
//--------------------------------------------------------------------------
|
|
1113
|
+
// Structural Properties
|
|
1114
|
+
//--------------------------------------------------------------------------
|
|
1115
|
+
|
|
1116
|
+
/// Index of this BodyNode in its Skeleton
|
|
1117
|
+
std::size_t mIndexInSkeleton;
|
|
1118
|
+
|
|
1119
|
+
/// Index of this BodyNode in its Tree
|
|
1120
|
+
std::size_t mIndexInTree;
|
|
1121
|
+
|
|
1122
|
+
/// Index of this BodyNode's tree
|
|
1123
|
+
std::size_t mTreeIndex;
|
|
1124
|
+
|
|
1125
|
+
/// Parent joint
|
|
1126
|
+
Joint* mParentJoint;
|
|
1127
|
+
|
|
1128
|
+
/// Parent body node
|
|
1129
|
+
BodyNode* mParentBodyNode;
|
|
1130
|
+
|
|
1131
|
+
/// Array of child body nodes
|
|
1132
|
+
std::vector<BodyNode*> mChildBodyNodes;
|
|
1133
|
+
|
|
1134
|
+
/// Array of child Entities that are not BodyNodes. Organizing them separately
|
|
1135
|
+
/// allows some performance optimizations.
|
|
1136
|
+
std::set<Entity*> mNonBodyNodeEntities;
|
|
1137
|
+
|
|
1138
|
+
/// A increasingly sorted list of dependent dof indices.
|
|
1139
|
+
std::vector<std::size_t> mDependentGenCoordIndices;
|
|
1140
|
+
|
|
1141
|
+
/// A version of mDependentGenCoordIndices that holds DegreeOfFreedom pointers
|
|
1142
|
+
/// instead of indices
|
|
1143
|
+
std::vector<DegreeOfFreedom*> mDependentDofs;
|
|
1144
|
+
|
|
1145
|
+
/// Same as mDependentDofs, but holds const pointers
|
|
1146
|
+
std::vector<const DegreeOfFreedom*> mConstDependentDofs;
|
|
1147
|
+
|
|
1148
|
+
//--------------------------------------------------------------------------
|
|
1149
|
+
// Dynamical Properties
|
|
1150
|
+
//--------------------------------------------------------------------------
|
|
1151
|
+
|
|
1152
|
+
/// Body Jacobian
|
|
1153
|
+
///
|
|
1154
|
+
/// Do not use directly! Use getJacobian() to access this quantity
|
|
1155
|
+
mutable math::Jacobian mBodyJacobian;
|
|
1156
|
+
|
|
1157
|
+
/// Cached World Jacobian
|
|
1158
|
+
///
|
|
1159
|
+
/// Do not use directly! Use getJacobian() to access this quantity
|
|
1160
|
+
mutable math::Jacobian mWorldJacobian;
|
|
1161
|
+
|
|
1162
|
+
/// Spatial time derivative of body Jacobian.
|
|
1163
|
+
///
|
|
1164
|
+
/// Do not use directly! Use getJacobianSpatialDeriv() to access this quantity
|
|
1165
|
+
mutable math::Jacobian mBodyJacobianSpatialDeriv;
|
|
1166
|
+
|
|
1167
|
+
/// Classic time derivative of Body Jacobian
|
|
1168
|
+
///
|
|
1169
|
+
/// Do not use directly! Use getJacobianClassicDeriv() to access this quantity
|
|
1170
|
+
mutable math::Jacobian mWorldJacobianClassicDeriv;
|
|
1171
|
+
|
|
1172
|
+
/// Partial spatial body acceleration due to parent joint's velocity
|
|
1173
|
+
///
|
|
1174
|
+
/// Do not use directly! Use getPartialAcceleration() to access this quantity
|
|
1175
|
+
mutable Eigen::Vector6d mPartialAcceleration;
|
|
1176
|
+
// TODO(JS): Rename with more informative name
|
|
1177
|
+
|
|
1178
|
+
/// Is the partial acceleration vector dirty
|
|
1179
|
+
mutable bool mIsPartialAccelerationDirty;
|
|
1180
|
+
|
|
1181
|
+
/// Transmitted wrench from parent to the bodynode expressed in body-fixed
|
|
1182
|
+
/// frame
|
|
1183
|
+
Eigen::Vector6d mF;
|
|
1184
|
+
|
|
1185
|
+
/// Spatial gravity force
|
|
1186
|
+
Eigen::Vector6d mFgravity;
|
|
1187
|
+
|
|
1188
|
+
/// Articulated body inertia
|
|
1189
|
+
///
|
|
1190
|
+
/// Do not use directly! Use getArticulatedInertia() to access this quantity
|
|
1191
|
+
mutable math::Inertia mArtInertia;
|
|
1192
|
+
|
|
1193
|
+
/// Articulated body inertia for implicit joint damping and spring forces
|
|
1194
|
+
///
|
|
1195
|
+
/// DO not use directly! Use getArticulatedInertiaImplicit() to access this
|
|
1196
|
+
mutable math::Inertia mArtInertiaImplicit;
|
|
1197
|
+
|
|
1198
|
+
/// Bias force
|
|
1199
|
+
Eigen::Vector6d mBiasForce;
|
|
1200
|
+
|
|
1201
|
+
/// Cache data for combined vector of the system.
|
|
1202
|
+
Eigen::Vector6d mCg_dV;
|
|
1203
|
+
Eigen::Vector6d mCg_F;
|
|
1204
|
+
|
|
1205
|
+
/// Cache data for gravity force vector of the system.
|
|
1206
|
+
Eigen::Vector6d mG_F;
|
|
1207
|
+
|
|
1208
|
+
/// Cache data for external force vector of the system.
|
|
1209
|
+
Eigen::Vector6d mFext_F;
|
|
1210
|
+
|
|
1211
|
+
/// Cache data for mass matrix of the system.
|
|
1212
|
+
Eigen::Vector6d mM_dV;
|
|
1213
|
+
Eigen::Vector6d mM_F;
|
|
1214
|
+
|
|
1215
|
+
/// Cache data for inverse mass matrix of the system.
|
|
1216
|
+
Eigen::Vector6d mInvM_c;
|
|
1217
|
+
Eigen::Vector6d mInvM_U;
|
|
1218
|
+
|
|
1219
|
+
/// Cache data for arbitrary spatial value
|
|
1220
|
+
Eigen::Vector6d mArbitrarySpatial;
|
|
1221
|
+
|
|
1222
|
+
//------------------------- Impulse-based Dyanmics ---------------------------
|
|
1223
|
+
/// Velocity change due to to external impulsive force exerted on
|
|
1224
|
+
/// bodies of the parent skeleton.
|
|
1225
|
+
Eigen::Vector6d mDelV;
|
|
1226
|
+
|
|
1227
|
+
/// Impulsive bias force due to external impulsive force exerted on
|
|
1228
|
+
/// bodies of the parent skeleton.
|
|
1229
|
+
Eigen::Vector6d mBiasImpulse;
|
|
1230
|
+
|
|
1231
|
+
/// Constraint impulse: contact impulse, dynamic joint impulse
|
|
1232
|
+
Eigen::Vector6d mConstraintImpulse;
|
|
1233
|
+
|
|
1234
|
+
// TODO(JS): rename with more informative one
|
|
1235
|
+
/// Generalized impulsive body force w.r.t. body frame.
|
|
1236
|
+
Eigen::Vector6d mImpF;
|
|
1237
|
+
|
|
1238
|
+
/// Collision shape added signal
|
|
1239
|
+
ColShapeAddedSignal mColShapeAddedSignal;
|
|
1240
|
+
|
|
1241
|
+
/// Collision shape removed signal
|
|
1242
|
+
ColShapeRemovedSignal mColShapeRemovedSignal;
|
|
1243
|
+
|
|
1244
|
+
/// Structural change signal
|
|
1245
|
+
StructuralChangeSignal mStructuralChangeSignal;
|
|
1246
|
+
|
|
1247
|
+
public:
|
|
1248
|
+
// To get byte-aligned Eigen vectors
|
|
1249
|
+
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
|
1250
|
+
|
|
1251
|
+
//----------------------------------------------------------------------------
|
|
1252
|
+
/// \{ \name Slot registers
|
|
1253
|
+
//----------------------------------------------------------------------------
|
|
1254
|
+
|
|
1255
|
+
/// Slot register for collision shape added signal
|
|
1256
|
+
common::SlotRegister<ColShapeAddedSignal> onColShapeAdded;
|
|
1257
|
+
|
|
1258
|
+
/// Slot register for collision shape removed signal
|
|
1259
|
+
common::SlotRegister<ColShapeRemovedSignal> onColShapeRemoved;
|
|
1260
|
+
|
|
1261
|
+
/// Raised when (1) parent BodyNode is changed, (2) moved between Skeletons,
|
|
1262
|
+
/// (3) parent Joint is changed
|
|
1263
|
+
mutable common::SlotRegister<StructuralChangeSignal> onStructuralChange;
|
|
1264
|
+
|
|
1265
|
+
/// \}
|
|
1266
|
+
|
|
1267
|
+
private:
|
|
1268
|
+
/// Hold onto a reference to this BodyNode's own Destructor to make sure that
|
|
1269
|
+
/// it never gets destroyed.
|
|
1270
|
+
std::shared_ptr<NodeDestructor> mSelfDestructor;
|
|
1271
|
+
};
|
|
1272
|
+
DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_END
|
|
1273
|
+
|
|
1274
|
+
} // namespace dynamics
|
|
1275
|
+
} // namespace dart
|
|
1276
|
+
|
|
1277
|
+
#include <dart/dynamics/detail/BodyNode.hpp>
|
|
1278
|
+
|
|
1279
|
+
#endif // DART_DYNAMICS_BODYNODE_HPP_
|