dartpy 7.0.0.dev0__cp313-cp313-manylinux_2_39_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dartpy might be problematic. Click here for more details.

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