dartpy 7.0.0.dev0__cp312-cp312-manylinux_2_39_x86_64.whl

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

Potentially problematic release.


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

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