dartpy 7.0.0.dev0__cp313-cp313-manylinux_2_39_x86_64.whl

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

Potentially problematic release.


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

Files changed (994) hide show
  1. dartpy-7.0.0.dev0.dist-info/METADATA +86 -0
  2. dartpy-7.0.0.dev0.dist-info/RECORD +994 -0
  3. dartpy-7.0.0.dev0.dist-info/WHEEL +5 -0
  4. dartpy-7.0.0.dev0.dist-info/licenses/LICENSE +31 -0
  5. dartpy.cpython-313-x86_64-linux-gnu.so +0 -0
  6. dartpy.libs/libBulletCollision-f96eb02c.so.3.25 +0 -0
  7. dartpy.libs/libBulletDynamics-3cff1f18.so.3.25 +0 -0
  8. dartpy.libs/libBulletSoftBody-220f01bd.so.3.25 +0 -0
  9. dartpy.libs/libLinearMath-71568d02.so.3.25 +0 -0
  10. dartpy.libs/libOpenThreads-8bc434db.so.3.3.1 +0 -0
  11. dartpy.libs/libSDL2-2-3db87ac0.0.so.0.3200.56 +0 -0
  12. dartpy.libs/libassimp-44cf3e77.so.5.4.3 +0 -0
  13. dartpy.libs/libccd-4f119cf4.so.2.0 +0 -0
  14. dartpy.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
  15. dartpy.libs/libfcl-0400fc28.so.0.7.0 +0 -0
  16. dartpy.libs/libfmt-277170bf.so.11.2.0 +0 -0
  17. dartpy.libs/libfontconfig-582da43c.so.1.14.0 +0 -0
  18. dartpy.libs/libfreetype-64806fc6.so.6.20.4 +0 -0
  19. dartpy.libs/libglfw-6f066845.so.3.4 +0 -0
  20. dartpy.libs/libimgui-ab87b07d.so +0 -0
  21. dartpy.libs/libnlopt-d1ae937b.so.1.0.0 +0 -0
  22. dartpy.libs/liboctomap-38e56f99.so.1.10.0 +0 -0
  23. dartpy.libs/liboctomath-bff26442.so.1.10.0 +0 -0
  24. dartpy.libs/libode-99b67f5b.so.8.2.0 +0 -0
  25. dartpy.libs/libosg-e67375e5.so.3.6.5 +0 -0
  26. dartpy.libs/libosgDB-bcdb6be9.so.3.6.5 +0 -0
  27. dartpy.libs/libosgGA-6af4078b.so.3.6.5 +0 -0
  28. dartpy.libs/libosgManipulator-3270f659.so.3.6.5 +0 -0
  29. dartpy.libs/libosgShadow-127a8d77.so.3.6.5 +0 -0
  30. dartpy.libs/libosgText-87d82d87.so.3.6.5 +0 -0
  31. dartpy.libs/libosgUtil-55896958.so.3.6.5 +0 -0
  32. dartpy.libs/libosgViewer-76d832e3.so.3.6.5 +0 -0
  33. dartpy.libs/libpng16-bd65464e.so.16.50.0 +0 -0
  34. dartpy.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
  35. dartpy.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
  36. dartpy.libs/liburdfdom_model_state-95a5ad6e.so.4.0 +0 -0
  37. dartpy.libs/liburdfdom_sensor-55a145ea.so.4.0 +0 -0
  38. dartpy.libs/liburdfdom_world-a32c7194.so.4.0 +0 -0
  39. dartpy.libs/libvulkan-08e1e162.so.1.4.328 +0 -0
  40. include/dart/collision/CollisionDetector.hpp +305 -0
  41. include/dart/collision/CollisionFilter.hpp +126 -0
  42. include/dart/collision/CollisionGroup.hpp +546 -0
  43. include/dart/collision/CollisionObject.hpp +90 -0
  44. include/dart/collision/CollisionOption.hpp +71 -0
  45. include/dart/collision/CollisionResult.hpp +109 -0
  46. include/dart/collision/Contact.hpp +103 -0
  47. include/dart/collision/DistanceFilter.hpp +66 -0
  48. include/dart/collision/DistanceOption.hpp +80 -0
  49. include/dart/collision/DistanceResult.hpp +123 -0
  50. include/dart/collision/Option.hpp +42 -0
  51. include/dart/collision/RaycastOption.hpp +58 -0
  52. include/dart/collision/RaycastResult.hpp +80 -0
  53. include/dart/collision/Result.hpp +42 -0
  54. include/dart/collision/SmartPointer.hpp +51 -0
  55. include/dart/collision/all.hpp +17 -0
  56. include/dart/collision/bullet/BulletCollisionDetector.hpp +168 -0
  57. include/dart/collision/bullet/BulletCollisionGroup.hpp +98 -0
  58. include/dart/collision/bullet/BulletCollisionObject.hpp +75 -0
  59. include/dart/collision/bullet/BulletCollisionShape.hpp +62 -0
  60. include/dart/collision/bullet/BulletInclude.hpp +47 -0
  61. include/dart/collision/bullet/BulletTypes.hpp +57 -0
  62. include/dart/collision/bullet/all.hpp +8 -0
  63. include/dart/collision/bullet/bullet.hpp +14 -0
  64. include/dart/collision/bullet/detail/BulletCollisionDispatcher.hpp +70 -0
  65. include/dart/collision/bullet/detail/BulletOverlapFilterCallback.hpp +72 -0
  66. include/dart/collision/collision.hpp +14 -0
  67. include/dart/collision/dart/DARTCollide.hpp +106 -0
  68. include/dart/collision/dart/DARTCollisionDetector.hpp +109 -0
  69. include/dart/collision/dart/DARTCollisionGroup.hpp +82 -0
  70. include/dart/collision/dart/DARTCollisionObject.hpp +63 -0
  71. include/dart/collision/dart/all.hpp +6 -0
  72. include/dart/collision/dart/dart.hpp +14 -0
  73. include/dart/collision/detail/CollisionDetector.hpp +66 -0
  74. include/dart/collision/detail/CollisionGroup.hpp +287 -0
  75. include/dart/collision/detail/Contact-impl.hpp +56 -0
  76. include/dart/collision/detail/UnorderedPairs.hpp +153 -0
  77. include/dart/collision/fcl/BackwardCompatibility.hpp +145 -0
  78. include/dart/collision/fcl/CollisionShapes.hpp +374 -0
  79. include/dart/collision/fcl/FCLCollisionDetector.hpp +204 -0
  80. include/dart/collision/fcl/FCLCollisionGroup.hpp +95 -0
  81. include/dart/collision/fcl/FCLCollisionObject.hpp +72 -0
  82. include/dart/collision/fcl/FCLTypes.hpp +62 -0
  83. include/dart/collision/fcl/TriTriIntersectionTest.hpp +17 -0
  84. include/dart/collision/fcl/all.hpp +9 -0
  85. include/dart/collision/fcl/fcl.hpp +14 -0
  86. include/dart/collision/fcl/tri_tri_intersection_test.hpp +332 -0
  87. include/dart/collision/ode/OdeCollisionDetector.hpp +131 -0
  88. include/dart/collision/ode/OdeCollisionGroup.hpp +87 -0
  89. include/dart/collision/ode/OdeCollisionObject.hpp +89 -0
  90. include/dart/collision/ode/OdeTypes.hpp +51 -0
  91. include/dart/collision/ode/all.hpp +6 -0
  92. include/dart/collision/ode/detail/OdeBox.hpp +58 -0
  93. include/dart/collision/ode/detail/OdeCapsule.hpp +58 -0
  94. include/dart/collision/ode/detail/OdeCylinder.hpp +58 -0
  95. include/dart/collision/ode/detail/OdeGeom.hpp +83 -0
  96. include/dart/collision/ode/detail/OdeHeightmap-impl.hpp +170 -0
  97. include/dart/collision/ode/detail/OdeHeightmap.hpp +70 -0
  98. include/dart/collision/ode/detail/OdeMesh.hpp +83 -0
  99. include/dart/collision/ode/detail/OdePlane.hpp +67 -0
  100. include/dart/collision/ode/detail/OdeSphere.hpp +58 -0
  101. include/dart/collision/ode/ode.hpp +14 -0
  102. include/dart/common/Aspect.hpp +215 -0
  103. include/dart/common/AspectWithVersion.hpp +180 -0
  104. include/dart/common/CAllocator.hpp +65 -0
  105. include/dart/common/Castable.hpp +102 -0
  106. include/dart/common/ClassWithVirtualBase.hpp +47 -0
  107. include/dart/common/Cloneable.hpp +327 -0
  108. include/dart/common/Composite.hpp +205 -0
  109. include/dart/common/CompositeJoiner.hpp +160 -0
  110. include/dart/common/Console.hpp +75 -0
  111. include/dart/common/Deprecated.hpp +126 -0
  112. include/dart/common/EmbeddedAspect.hpp +466 -0
  113. include/dart/common/Empty.hpp +55 -0
  114. include/dart/common/Factory.hpp +146 -0
  115. include/dart/common/Filesystem.hpp +112 -0
  116. include/dart/common/FreeListAllocator.hpp +162 -0
  117. include/dart/common/IncludeWindows.hpp +50 -0
  118. include/dart/common/LocalResource.hpp +76 -0
  119. include/dart/common/LocalResourceRetriever.hpp +63 -0
  120. include/dart/common/LockableReference.hpp +166 -0
  121. include/dart/common/Logging.hpp +146 -0
  122. include/dart/common/Macros.hpp +78 -0
  123. include/dart/common/Memory.hpp +215 -0
  124. include/dart/common/MemoryAllocator.hpp +120 -0
  125. include/dart/common/MemoryAllocatorDebugger.hpp +98 -0
  126. include/dart/common/MemoryManager.hpp +189 -0
  127. include/dart/common/Metaprogramming.hpp +68 -0
  128. include/dart/common/NameManager.hpp +184 -0
  129. include/dart/common/Observer.hpp +85 -0
  130. include/dart/common/Optional.hpp +48 -0
  131. include/dart/common/Platform.hpp +92 -0
  132. include/dart/common/PoolAllocator.hpp +141 -0
  133. include/dart/common/Profile.hpp +56 -0
  134. include/dart/common/ProxyAspect.hpp +93 -0
  135. include/dart/common/RequiresAspect.hpp +79 -0
  136. include/dart/common/Resource.hpp +96 -0
  137. include/dart/common/ResourceRetriever.hpp +82 -0
  138. include/dart/common/SharedLibrary.hpp +201 -0
  139. include/dart/common/Signal.hpp +250 -0
  140. include/dart/common/Singleton.hpp +85 -0
  141. include/dart/common/SmartPointer.hpp +63 -0
  142. include/dart/common/SpecializedForAspect.hpp +207 -0
  143. include/dart/common/StlAllocator.hpp +111 -0
  144. include/dart/common/StlHelpers.hpp +61 -0
  145. include/dart/common/Stopwatch.hpp +143 -0
  146. include/dart/common/String.hpp +71 -0
  147. include/dart/common/SubPtr.hpp +17 -0
  148. include/dart/common/Subject.hpp +84 -0
  149. include/dart/common/Timer.hpp +119 -0
  150. include/dart/common/Uri.hpp +229 -0
  151. include/dart/common/VersionCounter.hpp +68 -0
  152. include/dart/common/Virtual.hpp +51 -0
  153. include/dart/common/all.hpp +53 -0
  154. include/dart/common/common.hpp +14 -0
  155. include/dart/common/detail/Aspect.hpp +102 -0
  156. include/dart/common/detail/AspectWithVersion.hpp +455 -0
  157. include/dart/common/detail/Castable-impl.hpp +109 -0
  158. include/dart/common/detail/Cloneable.hpp +638 -0
  159. include/dart/common/detail/Composite.hpp +241 -0
  160. include/dart/common/detail/CompositeData.hpp +393 -0
  161. include/dart/common/detail/CompositeJoiner.hpp +128 -0
  162. include/dart/common/detail/ConnectionBody.hpp +157 -0
  163. include/dart/common/detail/EmbeddedAspect.hpp +487 -0
  164. include/dart/common/detail/Factory-impl.hpp +200 -0
  165. include/dart/common/detail/LockableReference-impl.hpp +156 -0
  166. include/dart/common/detail/Logging-impl.hpp +162 -0
  167. include/dart/common/detail/Memory-impl.hpp +66 -0
  168. include/dart/common/detail/MemoryAllocator-impl.hpp +97 -0
  169. include/dart/common/detail/MemoryAllocatorDebugger-impl.hpp +201 -0
  170. include/dart/common/detail/MemoryManager-impl.hpp +102 -0
  171. include/dart/common/detail/Metaprogramming-impl.hpp +89 -0
  172. include/dart/common/detail/NameManager.hpp +301 -0
  173. include/dart/common/detail/NoOp.hpp +57 -0
  174. include/dart/common/detail/ProxyAspect.hpp +172 -0
  175. include/dart/common/detail/RequiresAspect.hpp +51 -0
  176. include/dart/common/detail/SharedLibraryManager.hpp +106 -0
  177. include/dart/common/detail/Signal.hpp +242 -0
  178. include/dart/common/detail/Singleton-impl.hpp +74 -0
  179. include/dart/common/detail/SpecializedForAspect.hpp +331 -0
  180. include/dart/common/detail/StlAllocator-impl.hpp +108 -0
  181. include/dart/common/detail/Stopwatch-impl.hpp +242 -0
  182. include/dart/common/detail/SubPtr.hpp +17 -0
  183. include/dart/common/detail/TemplateJoinerDispatchMacro.hpp +59 -0
  184. include/dart/common/detail/sub_ptr.hpp +139 -0
  185. include/dart/common/sub_ptr.hpp +103 -0
  186. include/dart/config.hpp +100 -0
  187. include/dart/constraint/BalanceConstraint.hpp +202 -0
  188. include/dart/constraint/BallJointConstraint.hpp +142 -0
  189. include/dart/constraint/BoxedLcpConstraintSolver.hpp +182 -0
  190. include/dart/constraint/BoxedLcpSolver.hpp +101 -0
  191. include/dart/constraint/ConstrainedGroup.hpp +120 -0
  192. include/dart/constraint/ConstraintBase.hpp +141 -0
  193. include/dart/constraint/ConstraintSolver.hpp +325 -0
  194. include/dart/constraint/ContactConstraint.hpp +286 -0
  195. include/dart/constraint/ContactSurface.hpp +191 -0
  196. include/dart/constraint/DantzigBoxedLcpSolver.hpp +71 -0
  197. include/dart/constraint/DantzigLCPSolver.hpp +87 -0
  198. include/dart/constraint/DynamicJointConstraint.hpp +120 -0
  199. include/dart/constraint/JointConstraint.hpp +182 -0
  200. include/dart/constraint/JointCoulombFrictionConstraint.hpp +149 -0
  201. include/dart/constraint/JointLimitConstraint.hpp +185 -0
  202. include/dart/constraint/LCPSolver.hpp +71 -0
  203. include/dart/constraint/MimicMotorConstraint.hpp +164 -0
  204. include/dart/constraint/PGSLCPSolver.hpp +109 -0
  205. include/dart/constraint/PgsBoxedLcpSolver.hpp +106 -0
  206. include/dart/constraint/ServoMotorConstraint.hpp +151 -0
  207. include/dart/constraint/SmartPointer.hpp +69 -0
  208. include/dart/constraint/SoftContactConstraint.hpp +262 -0
  209. include/dart/constraint/WeldJointConstraint.hpp +133 -0
  210. include/dart/constraint/all.hpp +25 -0
  211. include/dart/constraint/constraint.hpp +14 -0
  212. include/dart/constraint/detail/ConstraintSolver-impl.hpp +78 -0
  213. include/dart/dart.hpp +44 -0
  214. include/dart/dynamics/ArrowShape.hpp +121 -0
  215. include/dart/dynamics/AssimpInputResourceAdaptor.hpp +129 -0
  216. include/dart/dynamics/BallJoint.hpp +143 -0
  217. include/dart/dynamics/BodyNode.hpp +1279 -0
  218. include/dart/dynamics/BoxShape.hpp +90 -0
  219. include/dart/dynamics/Branch.hpp +107 -0
  220. include/dart/dynamics/CapsuleShape.hpp +105 -0
  221. include/dart/dynamics/Chain.hpp +142 -0
  222. include/dart/dynamics/CompositeNode.hpp +114 -0
  223. include/dart/dynamics/ConeShape.hpp +107 -0
  224. include/dart/dynamics/CylinderShape.hpp +96 -0
  225. include/dart/dynamics/DegreeOfFreedom.hpp +415 -0
  226. include/dart/dynamics/EllipsoidShape.hpp +115 -0
  227. include/dart/dynamics/EndEffector.hpp +158 -0
  228. include/dart/dynamics/Entity.hpp +258 -0
  229. include/dart/dynamics/EntityNode.hpp +77 -0
  230. include/dart/dynamics/EulerJoint.hpp +174 -0
  231. include/dart/dynamics/FixedFrame.hpp +105 -0
  232. include/dart/dynamics/FixedJacobianNode.hpp +168 -0
  233. include/dart/dynamics/Frame.hpp +388 -0
  234. include/dart/dynamics/FreeJoint.hpp +369 -0
  235. include/dart/dynamics/GenericJoint.hpp +825 -0
  236. include/dart/dynamics/Group.hpp +270 -0
  237. include/dart/dynamics/HeightmapShape.hpp +195 -0
  238. include/dart/dynamics/HierarchicalIK.hpp +419 -0
  239. include/dart/dynamics/IkFast.hpp +277 -0
  240. include/dart/dynamics/Inertia.hpp +176 -0
  241. include/dart/dynamics/InvalidIndex.hpp +46 -0
  242. include/dart/dynamics/InverseKinematics.hpp +1401 -0
  243. include/dart/dynamics/JacobianNode.hpp +312 -0
  244. include/dart/dynamics/Joint.hpp +1128 -0
  245. include/dart/dynamics/LineSegmentShape.hpp +140 -0
  246. include/dart/dynamics/Linkage.hpp +246 -0
  247. include/dart/dynamics/Marker.hpp +126 -0
  248. include/dart/dynamics/MeshShape.hpp +225 -0
  249. include/dart/dynamics/MetaSkeleton.hpp +1034 -0
  250. include/dart/dynamics/MimicDofProperties.hpp +62 -0
  251. include/dart/dynamics/MultiSphereConvexHullShape.hpp +111 -0
  252. include/dart/dynamics/MultiSphereShape.hpp +42 -0
  253. include/dart/dynamics/Node.hpp +273 -0
  254. include/dart/dynamics/NodeManagerJoiner.hpp +190 -0
  255. include/dart/dynamics/PlanarJoint.hpp +161 -0
  256. include/dart/dynamics/PlaneShape.hpp +105 -0
  257. include/dart/dynamics/PointCloudShape.hpp +186 -0
  258. include/dart/dynamics/PointMass.hpp +709 -0
  259. include/dart/dynamics/PrismaticJoint.hpp +120 -0
  260. include/dart/dynamics/PyramidShape.hpp +122 -0
  261. include/dart/dynamics/ReferentialSkeleton.hpp +550 -0
  262. include/dart/dynamics/RevoluteJoint.hpp +120 -0
  263. include/dart/dynamics/ScrewJoint.hpp +126 -0
  264. include/dart/dynamics/Shape.hpp +231 -0
  265. include/dart/dynamics/ShapeFrame.hpp +291 -0
  266. include/dart/dynamics/ShapeNode.hpp +134 -0
  267. include/dart/dynamics/SharedLibraryIkFast.hpp +147 -0
  268. include/dart/dynamics/SimpleFrame.hpp +247 -0
  269. include/dart/dynamics/Skeleton.hpp +1350 -0
  270. include/dart/dynamics/SmartPointer.hpp +185 -0
  271. include/dart/dynamics/SoftBodyNode.hpp +472 -0
  272. include/dart/dynamics/SoftMeshShape.hpp +100 -0
  273. include/dart/dynamics/SpecializedNodeManager.hpp +230 -0
  274. include/dart/dynamics/SphereShape.hpp +89 -0
  275. include/dart/dynamics/TemplatedJacobianNode.hpp +128 -0
  276. include/dart/dynamics/TranslationalJoint.hpp +105 -0
  277. include/dart/dynamics/TranslationalJoint2D.hpp +156 -0
  278. include/dart/dynamics/UniversalJoint.hpp +128 -0
  279. include/dart/dynamics/VoxelGridShape.hpp +171 -0
  280. include/dart/dynamics/WeldJoint.hpp +116 -0
  281. include/dart/dynamics/ZeroDofJoint.hpp +562 -0
  282. include/dart/dynamics/all.hpp +69 -0
  283. include/dart/dynamics/detail/BasicNodeManager.hpp +539 -0
  284. include/dart/dynamics/detail/BodyNode.hpp +344 -0
  285. include/dart/dynamics/detail/BodyNodeAspect.hpp +177 -0
  286. include/dart/dynamics/detail/BodyNodePtr.hpp +351 -0
  287. include/dart/dynamics/detail/CompositeNode.hpp +93 -0
  288. include/dart/dynamics/detail/DegreeOfFreedomPtr.hpp +338 -0
  289. include/dart/dynamics/detail/EndEffectorAspect.hpp +106 -0
  290. include/dart/dynamics/detail/EntityNode.hpp +81 -0
  291. include/dart/dynamics/detail/EntityNodeAspect.hpp +101 -0
  292. include/dart/dynamics/detail/EulerJointAspect.hpp +93 -0
  293. include/dart/dynamics/detail/FixedFrameAspect.hpp +58 -0
  294. include/dart/dynamics/detail/FixedJacobianNode.hpp +55 -0
  295. include/dart/dynamics/detail/GenericJoint.hpp +2471 -0
  296. include/dart/dynamics/detail/GenericJointAspect.hpp +353 -0
  297. include/dart/dynamics/detail/HeightmapShape-impl.hpp +243 -0
  298. include/dart/dynamics/detail/InverseKinematics.hpp +83 -0
  299. include/dart/dynamics/detail/InverseKinematicsPtr.hpp +341 -0
  300. include/dart/dynamics/detail/JointAspect.hpp +161 -0
  301. include/dart/dynamics/detail/JointPtr.hpp +293 -0
  302. include/dart/dynamics/detail/MarkerAspect.hpp +68 -0
  303. include/dart/dynamics/detail/MetaSkeleton-impl.hpp +151 -0
  304. include/dart/dynamics/detail/Node.hpp +532 -0
  305. include/dart/dynamics/detail/NodeManagerJoiner.hpp +184 -0
  306. include/dart/dynamics/detail/NodePtr.hpp +259 -0
  307. include/dart/dynamics/detail/PlanarJointAspect.hpp +136 -0
  308. include/dart/dynamics/detail/PrismaticJointAspect.hpp +85 -0
  309. include/dart/dynamics/detail/RevoluteJointAspect.hpp +86 -0
  310. include/dart/dynamics/detail/ScrewJointAspect.hpp +90 -0
  311. include/dart/dynamics/detail/ShapeFrameAspect.hpp +169 -0
  312. include/dart/dynamics/detail/ShapeNode.hpp +51 -0
  313. include/dart/dynamics/detail/Skeleton.hpp +92 -0
  314. include/dart/dynamics/detail/SkeletonAspect.hpp +181 -0
  315. include/dart/dynamics/detail/SoftBodyNodeAspect.hpp +132 -0
  316. include/dart/dynamics/detail/SpecializedNodeManager.hpp +324 -0
  317. include/dart/dynamics/detail/TemplatedJacobianNode.hpp +294 -0
  318. include/dart/dynamics/detail/TranslationalJoint2DAspect.hpp +140 -0
  319. include/dart/dynamics/detail/UniversalJointAspect.hpp +86 -0
  320. include/dart/dynamics/dynamics.hpp +14 -0
  321. include/dart/dynamics/ikfast.h +345 -0
  322. include/dart/external/convhull_3d/convhull_3d.h +1878 -0
  323. include/dart/external/convhull_3d/safe_convhull_3d.h +53 -0
  324. include/dart/external/odelcpsolver/common.h +418 -0
  325. include/dart/external/odelcpsolver/error.h +62 -0
  326. include/dart/external/odelcpsolver/lcp.h +75 -0
  327. include/dart/external/odelcpsolver/matrix.h +277 -0
  328. include/dart/external/odelcpsolver/misc.h +82 -0
  329. include/dart/external/odelcpsolver/odeconfig.h +110 -0
  330. include/dart/gui/osg/DefaultEventHandler.hpp +237 -0
  331. include/dart/gui/osg/DragAndDrop.hpp +360 -0
  332. include/dart/gui/osg/GridVisual.hpp +218 -0
  333. include/dart/gui/osg/ImGuiHandler.hpp +113 -0
  334. include/dart/gui/osg/ImGuiViewer.hpp +83 -0
  335. include/dart/gui/osg/ImGuiWidget.hpp +91 -0
  336. include/dart/gui/osg/IncludeImGui.hpp +75 -0
  337. include/dart/gui/osg/InteractiveFrame.hpp +170 -0
  338. include/dart/gui/osg/MouseEventHandler.hpp +76 -0
  339. include/dart/gui/osg/RealTimeWorldNode.hpp +126 -0
  340. include/dart/gui/osg/ShapeFrameNode.hpp +117 -0
  341. include/dart/gui/osg/SupportPolygonVisual.hpp +202 -0
  342. include/dart/gui/osg/TrackballManipulator.hpp +97 -0
  343. include/dart/gui/osg/Utils.hpp +120 -0
  344. include/dart/gui/osg/Viewer.hpp +427 -0
  345. include/dart/gui/osg/WorldNode.hpp +211 -0
  346. include/dart/gui/osg/all.hpp +19 -0
  347. include/dart/gui/osg/detail/CameraModeCallback.hpp +82 -0
  348. include/dart/gui/osg/detail/Utils-impl.hpp +160 -0
  349. include/dart/gui/osg/osg.hpp +14 -0
  350. include/dart/gui/osg/render/BoxShapeNode.hpp +74 -0
  351. include/dart/gui/osg/render/CapsuleShapeNode.hpp +75 -0
  352. include/dart/gui/osg/render/ConeShapeNode.hpp +74 -0
  353. include/dart/gui/osg/render/CylinderShapeNode.hpp +75 -0
  354. include/dart/gui/osg/render/EllipsoidShapeNode.hpp +76 -0
  355. include/dart/gui/osg/render/HeightmapShapeNode.hpp +485 -0
  356. include/dart/gui/osg/render/LineSegmentShapeNode.hpp +75 -0
  357. include/dart/gui/osg/render/MeshShapeNode.hpp +86 -0
  358. include/dart/gui/osg/render/MultiSphereShapeNode.hpp +76 -0
  359. include/dart/gui/osg/render/PlaneShapeNode.hpp +75 -0
  360. include/dart/gui/osg/render/PointCloudShapeNode.hpp +85 -0
  361. include/dart/gui/osg/render/PyramidShapeNode.hpp +75 -0
  362. include/dart/gui/osg/render/ShapeNode.hpp +126 -0
  363. include/dart/gui/osg/render/SoftMeshShapeNode.hpp +75 -0
  364. include/dart/gui/osg/render/SphereShapeNode.hpp +76 -0
  365. include/dart/gui/osg/render/VoxelGridShapeNode.hpp +83 -0
  366. include/dart/gui/osg/render/WarningShapeNode.hpp +64 -0
  367. include/dart/gui/osg/render/all.hpp +19 -0
  368. include/dart/gui/osg/render/render.hpp +14 -0
  369. include/dart/integration/EulerIntegrator.hpp +64 -0
  370. include/dart/integration/Integrator.hpp +104 -0
  371. include/dart/integration/RK4Integrator.hpp +68 -0
  372. include/dart/integration/SemiImplicitEulerIntegrator.hpp +64 -0
  373. include/dart/integration/all.hpp +6 -0
  374. include/dart/integration/integration.hpp +14 -0
  375. include/dart/lcpsolver/Lemke.hpp +54 -0
  376. include/dart/lcpsolver/ODELCPSolver.hpp +88 -0
  377. include/dart/lcpsolver/all.hpp +4 -0
  378. include/dart/lcpsolver/lcpsolver.hpp +14 -0
  379. include/dart/math/ConfigurationSpace.hpp +144 -0
  380. include/dart/math/Constants.hpp +79 -0
  381. include/dart/math/Geometry.hpp +659 -0
  382. include/dart/math/Helpers.hpp +481 -0
  383. include/dart/math/Icosphere.hpp +106 -0
  384. include/dart/math/MathTypes.hpp +100 -0
  385. include/dart/math/Mesh.hpp +108 -0
  386. include/dart/math/Random.hpp +225 -0
  387. include/dart/math/TriMesh.hpp +121 -0
  388. include/dart/math/all.hpp +11 -0
  389. include/dart/math/detail/ConfigurationSpace.hpp +235 -0
  390. include/dart/math/detail/Geometry-impl.hpp +126 -0
  391. include/dart/math/detail/Icosphere-impl.hpp +214 -0
  392. include/dart/math/detail/Mesh-impl.hpp +151 -0
  393. include/dart/math/detail/Random-impl.hpp +353 -0
  394. include/dart/math/detail/TriMesh-impl.hpp +202 -0
  395. include/dart/math/math.hpp +14 -0
  396. include/dart/optimizer/Function.hpp +203 -0
  397. include/dart/optimizer/GenericMultiObjectiveProblem.hpp +174 -0
  398. include/dart/optimizer/GradientDescentSolver.hpp +240 -0
  399. include/dart/optimizer/MultiObjectiveProblem.hpp +168 -0
  400. include/dart/optimizer/MultiObjectiveSolver.hpp +168 -0
  401. include/dart/optimizer/Population.hpp +108 -0
  402. include/dart/optimizer/Problem.hpp +191 -0
  403. include/dart/optimizer/Solver.hpp +182 -0
  404. include/dart/optimizer/all.hpp +10 -0
  405. include/dart/optimizer/ipopt/BackwardCompatibility.hpp +43 -0
  406. include/dart/optimizer/ipopt/IpoptSolver.hpp +223 -0
  407. include/dart/optimizer/ipopt/all.hpp +4 -0
  408. include/dart/optimizer/ipopt/ipopt.hpp +14 -0
  409. include/dart/optimizer/nlopt/NloptSolver.hpp +212 -0
  410. include/dart/optimizer/nlopt/all.hpp +3 -0
  411. include/dart/optimizer/nlopt/nlopt.hpp +14 -0
  412. include/dart/optimizer/optimizer.hpp +14 -0
  413. include/dart/simulation/Recording.hpp +118 -0
  414. include/dart/simulation/SmartPointer.hpp +46 -0
  415. include/dart/simulation/World.hpp +405 -0
  416. include/dart/simulation/all.hpp +5 -0
  417. include/dart/simulation/detail/World-impl.hpp +129 -0
  418. include/dart/simulation/simulation.hpp +14 -0
  419. include/dart/utils/C3D.hpp +107 -0
  420. include/dart/utils/CompositeResourceRetriever.hpp +97 -0
  421. include/dart/utils/DartResourceRetriever.hpp +104 -0
  422. include/dart/utils/FileInfoC3D.hpp +91 -0
  423. include/dart/utils/FileInfoDof.hpp +109 -0
  424. include/dart/utils/FileInfoWorld.hpp +75 -0
  425. include/dart/utils/PackageResourceRetriever.hpp +118 -0
  426. include/dart/utils/SkelParser.hpp +70 -0
  427. include/dart/utils/VskParser.hpp +108 -0
  428. include/dart/utils/XmlHelpers.hpp +243 -0
  429. include/dart/utils/all.hpp +14 -0
  430. include/dart/utils/detail/XmlHelpers-impl.hpp +213 -0
  431. include/dart/utils/mjcf/MjcfParser.hpp +80 -0
  432. include/dart/utils/mjcf/all.hpp +3 -0
  433. include/dart/utils/mjcf/mjcf.hpp +14 -0
  434. include/dart/utils/sdf/SdfParser.hpp +98 -0
  435. include/dart/utils/sdf/all.hpp +3 -0
  436. include/dart/utils/sdf/sdf.hpp +14 -0
  437. include/dart/utils/urdf/BackwardCompatibility.hpp +52 -0
  438. include/dart/utils/urdf/DartLoader.hpp +277 -0
  439. include/dart/utils/urdf/IncludeUrdf.hpp +47 -0
  440. include/dart/utils/urdf/URDFTypes.hpp +42 -0
  441. include/dart/utils/urdf/all.hpp +5 -0
  442. include/dart/utils/urdf/urdf.hpp +14 -0
  443. include/dart/utils/urdf/urdf_world_parser.hpp +83 -0
  444. include/dart/utils/utils.hpp +14 -0
  445. lib64/libdart-collision-bullet.a +0 -0
  446. lib64/libdart-collision-ode.a +0 -0
  447. lib64/libdart-external-odelcpsolver.a +0 -0
  448. lib64/libdart-gui-osg.a +0 -0
  449. lib64/libdart-optimizer-ipopt.a +0 -0
  450. lib64/libdart-optimizer-nlopt.a +0 -0
  451. lib64/libdart-utils-urdf.a +0 -0
  452. lib64/libdart-utils.a +0 -0
  453. lib64/libdart.a +0 -0
  454. lib64/pkgconfig/dart.pc +12 -0
  455. share/dart/cmake/DARTConfig.cmake +194 -0
  456. share/dart/cmake/DARTConfigVersion.cmake +65 -0
  457. share/dart/cmake/DARTFindBullet.cmake +96 -0
  458. share/dart/cmake/DARTFindEigen3.cmake +9 -0
  459. share/dart/cmake/DARTFindIPOPT.cmake +20 -0
  460. share/dart/cmake/DARTFindNLOPT.cmake +17 -0
  461. share/dart/cmake/DARTFindODE.cmake +23 -0
  462. share/dart/cmake/DARTFindOpenSceneGraph.cmake +69 -0
  463. share/dart/cmake/DARTFindassimp.cmake +18 -0
  464. share/dart/cmake/DARTFindfcl.cmake +23 -0
  465. share/dart/cmake/DARTFindfmt.cmake +9 -0
  466. share/dart/cmake/DARTFindimgui.cmake +21 -0
  467. share/dart/cmake/DARTFindoctomap.cmake +17 -0
  468. share/dart/cmake/DARTFindspdlog.cmake +9 -0
  469. share/dart/cmake/DARTFindtinyxml2.cmake +27 -0
  470. share/dart/cmake/DARTFindurdfdom.cmake +29 -0
  471. share/dart/cmake/FindIPOPT.cmake +54 -0
  472. share/dart/cmake/FindNLOPT.cmake +54 -0
  473. share/dart/cmake/FindODE.cmake +54 -0
  474. share/dart/cmake/Findassimp.cmake +56 -0
  475. share/dart/cmake/Findfcl.cmake +67 -0
  476. share/dart/cmake/Findimgui.cmake +70 -0
  477. share/dart/cmake/Findtinyxml2.cmake +54 -0
  478. share/dart/cmake/dart_collision-bulletComponent.cmake +19 -0
  479. share/dart/cmake/dart_collision-bulletTargets-release.cmake +19 -0
  480. share/dart/cmake/dart_collision-bulletTargets.cmake +122 -0
  481. share/dart/cmake/dart_collision-odeComponent.cmake +19 -0
  482. share/dart/cmake/dart_collision-odeTargets-release.cmake +19 -0
  483. share/dart/cmake/dart_collision-odeTargets.cmake +122 -0
  484. share/dart/cmake/dart_dartComponent.cmake +19 -0
  485. share/dart/cmake/dart_dartTargets-release.cmake +19 -0
  486. share/dart/cmake/dart_dartTargets.cmake +125 -0
  487. share/dart/cmake/dart_external-odelcpsolverComponent.cmake +19 -0
  488. share/dart/cmake/dart_external-odelcpsolverTargets-release.cmake +19 -0
  489. share/dart/cmake/dart_external-odelcpsolverTargets.cmake +106 -0
  490. share/dart/cmake/dart_gui-osgComponent.cmake +19 -0
  491. share/dart/cmake/dart_gui-osgTargets-release.cmake +19 -0
  492. share/dart/cmake/dart_gui-osgTargets.cmake +122 -0
  493. share/dart/cmake/dart_optimizer-ipoptComponent.cmake +19 -0
  494. share/dart/cmake/dart_optimizer-ipoptTargets-release.cmake +19 -0
  495. share/dart/cmake/dart_optimizer-ipoptTargets.cmake +123 -0
  496. share/dart/cmake/dart_optimizer-nloptComponent.cmake +19 -0
  497. share/dart/cmake/dart_optimizer-nloptTargets-release.cmake +19 -0
  498. share/dart/cmake/dart_optimizer-nloptTargets.cmake +123 -0
  499. share/dart/cmake/dart_utils-urdfComponent.cmake +19 -0
  500. share/dart/cmake/dart_utils-urdfTargets-release.cmake +19 -0
  501. share/dart/cmake/dart_utils-urdfTargets.cmake +122 -0
  502. share/dart/cmake/dart_utilsComponent.cmake +19 -0
  503. share/dart/cmake/dart_utilsTargets-release.cmake +19 -0
  504. share/dart/cmake/dart_utilsTargets.cmake +122 -0
  505. share/dart/package.xml +42 -0
  506. share/doc/dart/data/c3d/nick_freeform_001.c3d +0 -0
  507. share/doc/dart/data/c3d/squat.c3d +0 -0
  508. share/doc/dart/data/dof/RHand.dof +205 -0
  509. share/doc/dart/data/dof/fixedHand.dof +205 -0
  510. share/doc/dart/data/dof/init_Tpose.dof +240 -0
  511. share/doc/dart/data/dof/same.dof +1003 -0
  512. share/doc/dart/data/dof/simMotion.dof +1817 -0
  513. share/doc/dart/data/dof/simMotion1.dof +1355 -0
  514. share/doc/dart/data/etc/fort.4 +43 -0
  515. share/doc/dart/data/humanJointLimits/neuralnets/net-larm +0 -0
  516. share/doc/dart/data/humanJointLimits/neuralnets/net-lleg +0 -0
  517. share/doc/dart/data/mjcf/openai/LICENSE.md +36 -0
  518. share/doc/dart/data/mjcf/openai/ant.xml +81 -0
  519. share/doc/dart/data/mjcf/openai/half_cheetah.xml +96 -0
  520. share/doc/dart/data/mjcf/openai/hopper.xml +50 -0
  521. share/doc/dart/data/mjcf/openai/humanoid.xml +121 -0
  522. share/doc/dart/data/mjcf/openai/humanoidstandup.xml +121 -0
  523. share/doc/dart/data/mjcf/openai/inverted_double_pendulum.xml +47 -0
  524. share/doc/dart/data/mjcf/openai/inverted_pendulum.xml +27 -0
  525. share/doc/dart/data/mjcf/openai/point.xml +31 -0
  526. share/doc/dart/data/mjcf/openai/pusher.xml +91 -0
  527. share/doc/dart/data/mjcf/openai/reacher.xml +39 -0
  528. share/doc/dart/data/mjcf/openai/robotics/fetch/pick_and_place.xml +35 -0
  529. share/doc/dart/data/mjcf/openai/robotics/fetch/push.xml +32 -0
  530. share/doc/dart/data/mjcf/openai/robotics/fetch/reach.xml +26 -0
  531. share/doc/dart/data/mjcf/openai/robotics/fetch/robot.xml +123 -0
  532. share/doc/dart/data/mjcf/openai/robotics/fetch/shared.xml +66 -0
  533. share/doc/dart/data/mjcf/openai/robotics/fetch/slide.xml +32 -0
  534. share/doc/dart/data/mjcf/openai/robotics/stls/.get +0 -0
  535. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/base_link_collision.stl +0 -0
  536. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/bellows_link_collision.stl +0 -0
  537. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/elbow_flex_link_collision.stl +0 -0
  538. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/estop_link.stl +0 -0
  539. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/forearm_roll_link_collision.stl +0 -0
  540. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/gripper_link.stl +0 -0
  541. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/head_pan_link_collision.stl +0 -0
  542. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/head_tilt_link_collision.stl +0 -0
  543. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/l_wheel_link_collision.stl +0 -0
  544. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/laser_link.stl +0 -0
  545. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/r_wheel_link_collision.stl +0 -0
  546. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/shoulder_lift_link_collision.stl +0 -0
  547. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/shoulder_pan_link_collision.stl +0 -0
  548. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/torso_fixed_link.stl +0 -0
  549. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/torso_lift_link_collision.stl +0 -0
  550. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/upperarm_roll_link_collision.stl +0 -0
  551. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/wrist_flex_link_collision.stl +0 -0
  552. share/doc/dart/data/mjcf/openai/robotics/stls/fetch/wrist_roll_link_collision.stl +0 -0
  553. share/doc/dart/data/mjcf/openai/robotics/textures/block.png +0 -0
  554. share/doc/dart/data/mjcf/openai/robotics/textures/block_hidden.png +0 -0
  555. share/doc/dart/data/mjcf/openai/striker.xml +101 -0
  556. share/doc/dart/data/mjcf/openai/swimmer.xml +39 -0
  557. share/doc/dart/data/mjcf/openai/thrower.xml +127 -0
  558. share/doc/dart/data/mjcf/openai/walker2d.xml +62 -0
  559. share/doc/dart/data/mjcf/test/default.xml +17 -0
  560. share/doc/dart/data/mjcf/test/include_default.xml +8 -0
  561. share/doc/dart/data/mjcf/test/include_main.xml +12 -0
  562. share/doc/dart/data/obj/Body_Hip.obj +22830 -0
  563. share/doc/dart/data/obj/BoxSmall.obj +23 -0
  564. share/doc/dart/data/obj/foot.obj +10970 -0
  565. share/doc/dart/data/other/torus1.path +11991 -0
  566. share/doc/dart/data/other/torus1.tris +5329 -0
  567. share/doc/dart/data/other/torus2.path +11991 -0
  568. share/doc/dart/data/other/torus2.tris +12961 -0
  569. share/doc/dart/data/screencap/.KEEP +0 -0
  570. share/doc/dart/data/sdf/atlas/atlas_v3.urdf +914 -0
  571. share/doc/dart/data/sdf/atlas/atlas_v3_no_head.sdf +1541 -0
  572. share/doc/dart/data/sdf/atlas/atlas_v3_no_head.urdf +914 -0
  573. share/doc/dart/data/sdf/atlas/atlas_v3_no_head_soft_feet.sdf +1567 -0
  574. share/doc/dart/data/sdf/atlas/ground.urdf +28 -0
  575. share/doc/dart/data/sdf/atlas/head.dae +8607 -0
  576. share/doc/dart/data/sdf/atlas/head.stl +0 -0
  577. share/doc/dart/data/sdf/atlas/head_camera.dae +2326 -0
  578. share/doc/dart/data/sdf/atlas/head_camera.stl +0 -0
  579. share/doc/dart/data/sdf/atlas/l_clav.dae +1278 -0
  580. share/doc/dart/data/sdf/atlas/l_clav.stl +0 -0
  581. share/doc/dart/data/sdf/atlas/l_farm.dae +1204 -0
  582. share/doc/dart/data/sdf/atlas/l_farm.stl +0 -0
  583. share/doc/dart/data/sdf/atlas/l_foot.dae +1330 -0
  584. share/doc/dart/data/sdf/atlas/l_foot.stl +0 -0
  585. share/doc/dart/data/sdf/atlas/l_hand.dae +964 -0
  586. share/doc/dart/data/sdf/atlas/l_hand.stl +0 -0
  587. share/doc/dart/data/sdf/atlas/l_larm.dae +1378 -0
  588. share/doc/dart/data/sdf/atlas/l_larm.stl +0 -0
  589. share/doc/dart/data/sdf/atlas/l_lglut.dae +897 -0
  590. share/doc/dart/data/sdf/atlas/l_lglut.stl +0 -0
  591. share/doc/dart/data/sdf/atlas/l_lleg.dae +6660 -0
  592. share/doc/dart/data/sdf/atlas/l_lleg.stl +0 -0
  593. share/doc/dart/data/sdf/atlas/l_scap.dae +1531 -0
  594. share/doc/dart/data/sdf/atlas/l_scap.stl +0 -0
  595. share/doc/dart/data/sdf/atlas/l_talus.dae +374 -0
  596. share/doc/dart/data/sdf/atlas/l_talus.stl +0 -0
  597. share/doc/dart/data/sdf/atlas/l_uarm.dae +1204 -0
  598. share/doc/dart/data/sdf/atlas/l_uarm.stl +0 -0
  599. share/doc/dart/data/sdf/atlas/l_uglut.dae +398 -0
  600. share/doc/dart/data/sdf/atlas/l_uglut.stl +0 -0
  601. share/doc/dart/data/sdf/atlas/l_uleg.dae +9087 -0
  602. share/doc/dart/data/sdf/atlas/l_uleg.stl +0 -0
  603. share/doc/dart/data/sdf/atlas/ltorso.dae +614 -0
  604. share/doc/dart/data/sdf/atlas/ltorso.stl +0 -0
  605. share/doc/dart/data/sdf/atlas/mtorso.dae +266 -0
  606. share/doc/dart/data/sdf/atlas/mtorso.stl +0 -0
  607. share/doc/dart/data/sdf/atlas/pelvis.dae +8727 -0
  608. share/doc/dart/data/sdf/atlas/pelvis.stl +0 -0
  609. share/doc/dart/data/sdf/atlas/r_clav.dae +1278 -0
  610. share/doc/dart/data/sdf/atlas/r_clav.stl +0 -0
  611. share/doc/dart/data/sdf/atlas/r_farm.dae +1204 -0
  612. share/doc/dart/data/sdf/atlas/r_farm.stl +0 -0
  613. share/doc/dart/data/sdf/atlas/r_foot.dae +1330 -0
  614. share/doc/dart/data/sdf/atlas/r_foot.stl +0 -0
  615. share/doc/dart/data/sdf/atlas/r_hand.dae +904 -0
  616. share/doc/dart/data/sdf/atlas/r_hand.stl +0 -0
  617. share/doc/dart/data/sdf/atlas/r_larm.dae +1378 -0
  618. share/doc/dart/data/sdf/atlas/r_larm.stl +0 -0
  619. share/doc/dart/data/sdf/atlas/r_lglut.dae +897 -0
  620. share/doc/dart/data/sdf/atlas/r_lglut.stl +0 -0
  621. share/doc/dart/data/sdf/atlas/r_lleg.dae +6661 -0
  622. share/doc/dart/data/sdf/atlas/r_lleg.stl +0 -0
  623. share/doc/dart/data/sdf/atlas/r_scap.dae +1531 -0
  624. share/doc/dart/data/sdf/atlas/r_scap.stl +0 -0
  625. share/doc/dart/data/sdf/atlas/r_talus.dae +374 -0
  626. share/doc/dart/data/sdf/atlas/r_talus.stl +0 -0
  627. share/doc/dart/data/sdf/atlas/r_uarm.dae +1144 -0
  628. share/doc/dart/data/sdf/atlas/r_uarm.stl +0 -0
  629. share/doc/dart/data/sdf/atlas/r_uglut.dae +398 -0
  630. share/doc/dart/data/sdf/atlas/r_uglut.stl +0 -0
  631. share/doc/dart/data/sdf/atlas/r_uleg.dae +9087 -0
  632. share/doc/dart/data/sdf/atlas/r_uleg.stl +0 -0
  633. share/doc/dart/data/sdf/atlas/utorso.dae +28342 -0
  634. share/doc/dart/data/sdf/atlas/utorso.stl +0 -0
  635. share/doc/dart/data/sdf/atlas/utorso_mod.dae +16508 -0
  636. share/doc/dart/data/sdf/atlas/utorso_mod.stl +0 -0
  637. share/doc/dart/data/sdf/atlas/utorso_pack.dae +8521 -0
  638. share/doc/dart/data/sdf/atlas/utorso_pack.stl +0 -0
  639. share/doc/dart/data/sdf/benchmark.world +2510 -0
  640. share/doc/dart/data/sdf/double_pendulum.world +168 -0
  641. share/doc/dart/data/sdf/double_pendulum_with_base.world +263 -0
  642. share/doc/dart/data/sdf/empty.world +13 -0
  643. share/doc/dart/data/sdf/ground.world +48 -0
  644. share/doc/dart/data/sdf/materials/textures/atlas_cage_and_camera_diffuse_flat.jpg +0 -0
  645. share/doc/dart/data/sdf/materials/textures/drc_extremities_diffuse.jpg +0 -0
  646. share/doc/dart/data/sdf/materials/textures/drc_labels_1.jpg +0 -0
  647. share/doc/dart/data/sdf/materials/textures/drc_torso_head_diffuse.jpg +0 -0
  648. share/doc/dart/data/sdf/materials/textures/extremities_diffuse_unplugged.jpg +0 -0
  649. share/doc/dart/data/sdf/materials/textures/right_leg_diffuse_unplugged.jpg +0 -0
  650. share/doc/dart/data/sdf/materials/textures/torso_diffuse_unplugged.jpg +0 -0
  651. share/doc/dart/data/sdf/quad.sdf +867 -0
  652. share/doc/dart/data/sdf/test/force_torque_test.world +173 -0
  653. share/doc/dart/data/sdf/test/force_torque_test2.world +214 -0
  654. share/doc/dart/data/sdf/test/issue1193_revolute_test.sdf +70 -0
  655. share/doc/dart/data/sdf/test/issue1193_revolute_with_offset_test.sdf +70 -0
  656. share/doc/dart/data/sdf/test/issue1624_cubes.sdf +5037 -0
  657. share/doc/dart/data/sdf/test/single_bodynode_skeleton.world +55 -0
  658. share/doc/dart/data/sdf/test/test_issue1583.model +45 -0
  659. share/doc/dart/data/sdf/test/test_issue1596.model +182 -0
  660. share/doc/dart/data/sdf/test/test_skeleton_joint.world +278 -0
  661. share/doc/dart/data/skel/biped.skel +850 -0
  662. share/doc/dart/data/skel/bullet_collision.skel +174 -0
  663. share/doc/dart/data/skel/chain.skel +212 -0
  664. share/doc/dart/data/skel/cube.skel +71 -0
  665. share/doc/dart/data/skel/cubes.skel +137 -0
  666. share/doc/dart/data/skel/empty.skel +10 -0
  667. share/doc/dart/data/skel/freeChain.skel +212 -0
  668. share/doc/dart/data/skel/fullbody1.skel +1177 -0
  669. share/doc/dart/data/skel/ground.skel +31 -0
  670. share/doc/dart/data/skel/joint_limit.skel +123 -0
  671. share/doc/dart/data/skel/kima/abdomen.dae +18933 -0
  672. share/doc/dart/data/skel/kima/head.dae +34634 -0
  673. share/doc/dart/data/skel/kima/kima_human_edited.skel +933 -0
  674. share/doc/dart/data/skel/kima/kima_human_left_arm.skel +323 -0
  675. share/doc/dart/data/skel/kima/kima_human_left_leg.skel +327 -0
  676. share/doc/dart/data/skel/kima/l-clavicle.dae +20111 -0
  677. share/doc/dart/data/skel/kima/l-foot.dae +28208 -0
  678. share/doc/dart/data/skel/kima/pelvis.dae +35919 -0
  679. share/doc/dart/data/skel/kima/r-clavicle.dae +20090 -0
  680. share/doc/dart/data/skel/kima/thorax.dae +47337 -0
  681. share/doc/dart/data/skel/mesh_collision.skel +137 -0
  682. share/doc/dart/data/skel/shapes.skel +378 -0
  683. share/doc/dart/data/skel/skateboard.skel +222 -0
  684. share/doc/dart/data/skel/softBodies.skel +284 -0
  685. share/doc/dart/data/skel/soft_cubes.skel +134 -0
  686. share/doc/dart/data/skel/soft_open_chain.skel +241 -0
  687. share/doc/dart/data/skel/sphere.skel +74 -0
  688. share/doc/dart/data/skel/spheres.skel +118 -0
  689. share/doc/dart/data/skel/test/SimplePendulum.skel +141 -0
  690. share/doc/dart/data/skel/test/ball_joints.skel +49 -0
  691. share/doc/dart/data/skel/test/box_stacking.skel +346 -0
  692. share/doc/dart/data/skel/test/boxes.skel +52 -0
  693. share/doc/dart/data/skel/test/chainwhipa.skel +193 -0
  694. share/doc/dart/data/skel/test/collision_of_prescribed_joints_test.skel +249 -0
  695. share/doc/dart/data/skel/test/dof_attribute_test.skel +206 -0
  696. share/doc/dart/data/skel/test/double_pendulum.skel +76 -0
  697. share/doc/dart/data/skel/test/double_pendulum_ball_joint.skel +76 -0
  698. share/doc/dart/data/skel/test/double_pendulum_euler_joint.skel +78 -0
  699. share/doc/dart/data/skel/test/double_pendulum_with_base.skel +1390 -0
  700. share/doc/dart/data/skel/test/drop.skel +116 -0
  701. share/doc/dart/data/skel/test/drop_BENCHMARK.skel +10 -0
  702. share/doc/dart/data/skel/test/drop_unrotated_box.skel +156 -0
  703. share/doc/dart/data/skel/test/empty.skel +10 -0
  704. share/doc/dart/data/skel/test/file_info_world_test.skel +1177 -0
  705. share/doc/dart/data/skel/test/free_joints.skel +49 -0
  706. share/doc/dart/data/skel/test/gazebo/drop_test.skel +161 -0
  707. share/doc/dart/data/skel/test/gazebo/force_torque_test.skel +138 -0
  708. share/doc/dart/data/skel/test/gazebo/force_torque_test2.skel +171 -0
  709. share/doc/dart/data/skel/test/hybrid_dynamics_test.skel +172 -0
  710. share/doc/dart/data/skel/test/joint_actuator_type_test.skel +185 -0
  711. share/doc/dart/data/skel/test/joint_dynamics_elements_test.skel +103 -0
  712. share/doc/dart/data/skel/test/joint_friction_test.skel +80 -0
  713. share/doc/dart/data/skel/test/joint_limit_test.skel +80 -0
  714. share/doc/dart/data/skel/test/planar_joint.skel +167 -0
  715. share/doc/dart/data/skel/test/serial_chain_BENCHMARK.skel +10 -0
  716. share/doc/dart/data/skel/test/serial_chain_ball_joint.skel +212 -0
  717. share/doc/dart/data/skel/test/serial_chain_ball_joint_20.skel +412 -0
  718. share/doc/dart/data/skel/test/serial_chain_ball_joint_40.skel +812 -0
  719. share/doc/dart/data/skel/test/serial_chain_eulerxyz_joint.skel +224 -0
  720. share/doc/dart/data/skel/test/serial_chain_revolute_joint.skel +244 -0
  721. share/doc/dart/data/skel/test/simple_tree_structure.skel +108 -0
  722. share/doc/dart/data/skel/test/simple_tree_structure_ball_joint.skel +108 -0
  723. share/doc/dart/data/skel/test/simple_tree_structure_euler_joint.skel +111 -0
  724. share/doc/dart/data/skel/test/single_pendulum.skel +55 -0
  725. share/doc/dart/data/skel/test/single_pendulum_ball_joint.skel +55 -0
  726. share/doc/dart/data/skel/test/single_pendulum_euler_joint.skel +56 -0
  727. share/doc/dart/data/skel/test/spheres.skel +118 -0
  728. share/doc/dart/data/skel/test/test_adaptive_deformable.skel +88 -0
  729. share/doc/dart/data/skel/test/test_articulated_bodies.skel +112 -0
  730. share/doc/dart/data/skel/test/test_articulated_bodies_10bodies.skel +401 -0
  731. share/doc/dart/data/skel/test/test_double_pendulum.skel +105 -0
  732. share/doc/dart/data/skel/test/test_drop_box.skel +87 -0
  733. share/doc/dart/data/skel/test/test_drop_box_offset.skel +87 -0
  734. share/doc/dart/data/skel/test/test_drop_low_stiffness.skel +86 -0
  735. share/doc/dart/data/skel/test/test_drop_sphere.skel +86 -0
  736. share/doc/dart/data/skel/test/test_shapes.skel +324 -0
  737. share/doc/dart/data/skel/test/test_single_body.skel +55 -0
  738. share/doc/dart/data/skel/test/test_single_pendulum.skel +55 -0
  739. share/doc/dart/data/skel/test/translational_joints.skel +49 -0
  740. share/doc/dart/data/skel/test/tree_structure.skel +428 -0
  741. share/doc/dart/data/skel/test/tree_structure_ball_joint.skel +441 -0
  742. share/doc/dart/data/skel/test/tree_structure_euler_joint.skel +441 -0
  743. share/doc/dart/data/skel/two_cubes.skel +118 -0
  744. share/doc/dart/data/skel/vehicle.skel +322 -0
  745. share/doc/dart/data/test/hello_world.txt +1 -0
  746. share/doc/dart/data/urdf/KR5/KR5 sixx R650.urdf +397 -0
  747. share/doc/dart/data/urdf/KR5/ground.urdf +28 -0
  748. share/doc/dart/data/urdf/KR5/meshes/base_link.STL +0 -0
  749. share/doc/dart/data/urdf/KR5/meshes/bicep.STL +0 -0
  750. share/doc/dart/data/urdf/KR5/meshes/elbow.STL +0 -0
  751. share/doc/dart/data/urdf/KR5/meshes/forearm.STL +0 -0
  752. share/doc/dart/data/urdf/KR5/meshes/palm.STL +0 -0
  753. share/doc/dart/data/urdf/KR5/meshes/shoulder.STL +0 -0
  754. share/doc/dart/data/urdf/KR5/meshes/wrist.STL +0 -0
  755. share/doc/dart/data/urdf/drchubo/CMakeLists.txt +5 -0
  756. share/doc/dart/data/urdf/drchubo/drchubo.urdf +1508 -0
  757. share/doc/dart/data/urdf/drchubo/meshes/convhull_LAP_merged.stl +0 -0
  758. share/doc/dart/data/urdf/drchubo/meshes/convhull_LAR_merged.stl +0 -0
  759. share/doc/dart/data/urdf/drchubo/meshes/convhull_LEP_merged.stl +0 -0
  760. share/doc/dart/data/urdf/drchubo/meshes/convhull_LF1.stl +0 -0
  761. share/doc/dart/data/urdf/drchubo/meshes/convhull_LF2.stl +0 -0
  762. share/doc/dart/data/urdf/drchubo/meshes/convhull_LF3.stl +0 -0
  763. share/doc/dart/data/urdf/drchubo/meshes/convhull_LHP_merged.stl +0 -0
  764. share/doc/dart/data/urdf/drchubo/meshes/convhull_LHR_merged.stl +0 -0
  765. share/doc/dart/data/urdf/drchubo/meshes/convhull_LHY_merged.stl +0 -0
  766. share/doc/dart/data/urdf/drchubo/meshes/convhull_LKP_merged.stl +0 -0
  767. share/doc/dart/data/urdf/drchubo/meshes/convhull_LSP_merged.stl +0 -0
  768. share/doc/dart/data/urdf/drchubo/meshes/convhull_LSR_merged.stl +0 -0
  769. share/doc/dart/data/urdf/drchubo/meshes/convhull_LSY_merged.stl +0 -0
  770. share/doc/dart/data/urdf/drchubo/meshes/convhull_LWP_merged.stl +0 -0
  771. share/doc/dart/data/urdf/drchubo/meshes/convhull_LWR_merged.stl +0 -0
  772. share/doc/dart/data/urdf/drchubo/meshes/convhull_LWY_merged.stl +0 -0
  773. share/doc/dart/data/urdf/drchubo/meshes/convhull_NK1_merged.stl +0 -0
  774. share/doc/dart/data/urdf/drchubo/meshes/convhull_NK2.stl +0 -0
  775. share/doc/dart/data/urdf/drchubo/meshes/convhull_NKY_merged.stl +0 -0
  776. share/doc/dart/data/urdf/drchubo/meshes/convhull_RAP_merged.stl +0 -0
  777. share/doc/dart/data/urdf/drchubo/meshes/convhull_RAR_merged.stl +0 -0
  778. share/doc/dart/data/urdf/drchubo/meshes/convhull_REP_merged.stl +0 -0
  779. share/doc/dart/data/urdf/drchubo/meshes/convhull_RF1.stl +0 -0
  780. share/doc/dart/data/urdf/drchubo/meshes/convhull_RF2.stl +0 -0
  781. share/doc/dart/data/urdf/drchubo/meshes/convhull_RF3.stl +0 -0
  782. share/doc/dart/data/urdf/drchubo/meshes/convhull_RHP_merged.stl +0 -0
  783. share/doc/dart/data/urdf/drchubo/meshes/convhull_RHR_merged.stl +0 -0
  784. share/doc/dart/data/urdf/drchubo/meshes/convhull_RHY_merged.stl +0 -0
  785. share/doc/dart/data/urdf/drchubo/meshes/convhull_RKP_merged.stl +0 -0
  786. share/doc/dart/data/urdf/drchubo/meshes/convhull_RSP_merged.stl +0 -0
  787. share/doc/dart/data/urdf/drchubo/meshes/convhull_RSR_merged.stl +0 -0
  788. share/doc/dart/data/urdf/drchubo/meshes/convhull_RSY_merged.stl +0 -0
  789. share/doc/dart/data/urdf/drchubo/meshes/convhull_RWP_merged.stl +0 -0
  790. share/doc/dart/data/urdf/drchubo/meshes/convhull_RWR_merged.stl +0 -0
  791. share/doc/dart/data/urdf/drchubo/meshes/convhull_RWY_merged.stl +0 -0
  792. share/doc/dart/data/urdf/drchubo/meshes/convhull_TSY_merged.stl +0 -0
  793. share/doc/dart/data/urdf/drchubo/meshes/convhull_Torso_merged.stl +0 -0
  794. share/doc/dart/data/urdf/drchubo/package.xml +11 -0
  795. share/doc/dart/data/urdf/test/invalid.urdf +1 -0
  796. share/doc/dart/data/urdf/test/invalid_mesh.stl +1 -0
  797. share/doc/dart/data/urdf/test/invalid_mesh.urdf +10 -0
  798. share/doc/dart/data/urdf/test/issue838.urdf +86 -0
  799. share/doc/dart/data/urdf/test/joint_properties.urdf +60 -0
  800. share/doc/dart/data/urdf/test/missing_mesh.urdf +10 -0
  801. share/doc/dart/data/urdf/test/missing_package.urdf +10 -0
  802. share/doc/dart/data/urdf/test/primitive_geometry.urdf +12 -0
  803. share/doc/dart/data/urdf/test/testWorld.urdf +9 -0
  804. share/doc/dart/data/urdf/wam/meshes/images/base_gray_128x.jpg +0 -0
  805. share/doc/dart/data/urdf/wam/meshes/images/forearm_256x.jpg +0 -0
  806. share/doc/dart/data/urdf/wam/meshes/images/lpu_128x.jpg +0 -0
  807. share/doc/dart/data/urdf/wam/meshes/images/shoulder_256x.jpg +0 -0
  808. share/doc/dart/data/urdf/wam/meshes/images/upperarm_128x.jpg +0 -0
  809. share/doc/dart/data/urdf/wam/meshes/images/wrist_yaw_128x.jpg +0 -0
  810. share/doc/dart/data/urdf/wam/meshes/wam/wam1.STL +0 -0
  811. share/doc/dart/data/urdf/wam/meshes/wam/wam1.dae +187 -0
  812. share/doc/dart/data/urdf/wam/meshes/wam/wam1_collision.STL +0 -0
  813. share/doc/dart/data/urdf/wam/meshes/wam/wam2.STL +0 -0
  814. share/doc/dart/data/urdf/wam/meshes/wam/wam2.dae +187 -0
  815. share/doc/dart/data/urdf/wam/meshes/wam/wam2_collision.STL +0 -0
  816. share/doc/dart/data/urdf/wam/meshes/wam/wam3.STL +0 -0
  817. share/doc/dart/data/urdf/wam/meshes/wam/wam3.dae +187 -0
  818. share/doc/dart/data/urdf/wam/meshes/wam/wam3_collision.STL +0 -0
  819. share/doc/dart/data/urdf/wam/meshes/wam/wam4.STL +0 -0
  820. share/doc/dart/data/urdf/wam/meshes/wam/wam4.dae +187 -0
  821. share/doc/dart/data/urdf/wam/meshes/wam/wam4_collision.STL +0 -0
  822. share/doc/dart/data/urdf/wam/meshes/wam/wam5.STL +0 -0
  823. share/doc/dart/data/urdf/wam/meshes/wam/wam5.dae +187 -0
  824. share/doc/dart/data/urdf/wam/meshes/wam/wam5_collision.STL +0 -0
  825. share/doc/dart/data/urdf/wam/meshes/wam/wam6.STL +0 -0
  826. share/doc/dart/data/urdf/wam/meshes/wam/wam6.dae +187 -0
  827. share/doc/dart/data/urdf/wam/meshes/wam/wam6_collision.STL +0 -0
  828. share/doc/dart/data/urdf/wam/meshes/wam/wam7.STL +0 -0
  829. share/doc/dart/data/urdf/wam/meshes/wam/wam7.dae +137 -0
  830. share/doc/dart/data/urdf/wam/meshes/wam/wam7_collision.STL +0 -0
  831. share/doc/dart/data/urdf/wam/meshes/wam/wam_base.STL +0 -0
  832. share/doc/dart/data/urdf/wam/meshes/wam/wam_base.dae +103 -0
  833. share/doc/dart/data/urdf/wam/meshes/wam/wam_base_collision.STL +0 -0
  834. share/doc/dart/data/urdf/wam/wam.urdf +230 -0
  835. share/doc/dart/data/vsk/Nick01.vsk +398 -0
  836. share/doc/dart/data/vsk/SehoonVSK3.vsk +398 -0
  837. share/doc/dart/data/vsk/Yuting.vsk +398 -0
  838. share/doc/dart/data/vsk/test/empty.vsk +3 -0
  839. share/doc/dart/examples/CMakeLists.txt +44 -0
  840. share/doc/dart/examples/README.md +33 -0
  841. share/doc/dart/examples/add_delete_skels/CMakeLists.txt +19 -0
  842. share/doc/dart/examples/add_delete_skels/main.cpp +165 -0
  843. share/doc/dart/examples/atlas_puppet/CMakeLists.txt +19 -0
  844. share/doc/dart/examples/atlas_puppet/README.md +20 -0
  845. share/doc/dart/examples/atlas_puppet/main.cpp +930 -0
  846. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconEventHandler.cpp +71 -0
  847. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconEventHandler.hpp +56 -0
  848. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWidget.cpp +187 -0
  849. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWidget.hpp +85 -0
  850. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWorldNode.cpp +134 -0
  851. share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWorldNode.hpp +75 -0
  852. share/doc/dart/examples/atlas_simbicon/CMakeLists.txt +19 -0
  853. share/doc/dart/examples/atlas_simbicon/Controller.cpp +996 -0
  854. share/doc/dart/examples/atlas_simbicon/Controller.hpp +203 -0
  855. share/doc/dart/examples/atlas_simbicon/README.md +20 -0
  856. share/doc/dart/examples/atlas_simbicon/State.cpp +674 -0
  857. share/doc/dart/examples/atlas_simbicon/State.hpp +336 -0
  858. share/doc/dart/examples/atlas_simbicon/StateMachine.cpp +222 -0
  859. share/doc/dart/examples/atlas_simbicon/StateMachine.hpp +134 -0
  860. share/doc/dart/examples/atlas_simbicon/TerminalCondition.cpp +111 -0
  861. share/doc/dart/examples/atlas_simbicon/TerminalCondition.hpp +102 -0
  862. share/doc/dart/examples/atlas_simbicon/main.cpp +102 -0
  863. share/doc/dart/examples/biped_stand/CMakeLists.txt +19 -0
  864. share/doc/dart/examples/biped_stand/README.md +20 -0
  865. share/doc/dart/examples/biped_stand/main.cpp +287 -0
  866. share/doc/dart/examples/box_stacking/CMakeLists.txt +19 -0
  867. share/doc/dart/examples/box_stacking/README.md +20 -0
  868. share/doc/dart/examples/box_stacking/main.cpp +417 -0
  869. share/doc/dart/examples/boxes/CMakeLists.txt +19 -0
  870. share/doc/dart/examples/boxes/README.md +20 -0
  871. share/doc/dart/examples/boxes/main.cpp +157 -0
  872. share/doc/dart/examples/drag_and_drop/CMakeLists.txt +19 -0
  873. share/doc/dart/examples/drag_and_drop/README.md +20 -0
  874. share/doc/dart/examples/drag_and_drop/main.cpp +101 -0
  875. share/doc/dart/examples/empty/CMakeLists.txt +19 -0
  876. share/doc/dart/examples/empty/README.md +20 -0
  877. share/doc/dart/examples/empty/main.cpp +164 -0
  878. share/doc/dart/examples/fetch/CMakeLists.txt +19 -0
  879. share/doc/dart/examples/fetch/README.md +20 -0
  880. share/doc/dart/examples/fetch/main.cpp +246 -0
  881. share/doc/dart/examples/hardcoded_design/CMakeLists.txt +19 -0
  882. share/doc/dart/examples/hardcoded_design/HardcodedEventHandler.cpp +71 -0
  883. share/doc/dart/examples/hardcoded_design/HardcodedEventHandler.hpp +56 -0
  884. share/doc/dart/examples/hardcoded_design/README.md +27 -0
  885. share/doc/dart/examples/hardcoded_design/main.cpp +186 -0
  886. share/doc/dart/examples/heightmap/CMakeLists.txt +19 -0
  887. share/doc/dart/examples/heightmap/README.md +20 -0
  888. share/doc/dart/examples/heightmap/main.cpp +460 -0
  889. share/doc/dart/examples/hello_world/CMakeLists.txt +19 -0
  890. share/doc/dart/examples/hello_world/README.md +20 -0
  891. share/doc/dart/examples/hello_world/main.cpp +114 -0
  892. share/doc/dart/examples/hubo_puppet/CMakeLists.txt +19 -0
  893. share/doc/dart/examples/hubo_puppet/README.md +20 -0
  894. share/doc/dart/examples/hubo_puppet/main.cpp +1464 -0
  895. share/doc/dart/examples/human_joint_limits/CMakeLists.txt +49 -0
  896. share/doc/dart/examples/human_joint_limits/HumanArmJointLimitConstraint.cpp +411 -0
  897. share/doc/dart/examples/human_joint_limits/HumanArmJointLimitConstraint.hpp +182 -0
  898. share/doc/dart/examples/human_joint_limits/HumanLegJointLimitConstraint.cpp +432 -0
  899. share/doc/dart/examples/human_joint_limits/HumanLegJointLimitConstraint.hpp +179 -0
  900. share/doc/dart/examples/human_joint_limits/main.cpp +157 -0
  901. share/doc/dart/examples/hybrid_dynamics/CMakeLists.txt +19 -0
  902. share/doc/dart/examples/hybrid_dynamics/README.md +17 -0
  903. share/doc/dart/examples/hybrid_dynamics/main.cpp +187 -0
  904. share/doc/dart/examples/imgui/CMakeLists.txt +19 -0
  905. share/doc/dart/examples/imgui/README.md +20 -0
  906. share/doc/dart/examples/imgui/main.cpp +289 -0
  907. share/doc/dart/examples/joint_constraints/CMakeLists.txt +19 -0
  908. share/doc/dart/examples/joint_constraints/Controller.cpp +110 -0
  909. share/doc/dart/examples/joint_constraints/Controller.hpp +105 -0
  910. share/doc/dart/examples/joint_constraints/README.md +22 -0
  911. share/doc/dart/examples/joint_constraints/main.cpp +242 -0
  912. share/doc/dart/examples/mixed_chain/CMakeLists.txt +19 -0
  913. share/doc/dart/examples/mixed_chain/README.md +35 -0
  914. share/doc/dart/examples/mixed_chain/main.cpp +188 -0
  915. share/doc/dart/examples/operational_space_control/CMakeLists.txt +19 -0
  916. share/doc/dart/examples/operational_space_control/README.md +20 -0
  917. share/doc/dart/examples/operational_space_control/main.cpp +338 -0
  918. share/doc/dart/examples/point_cloud/CMakeLists.txt +19 -0
  919. share/doc/dart/examples/point_cloud/README.md +20 -0
  920. share/doc/dart/examples/point_cloud/main.cpp +740 -0
  921. share/doc/dart/examples/rerun/CMakeLists.txt +19 -0
  922. share/doc/dart/examples/rigid_chain/CMakeLists.txt +19 -0
  923. share/doc/dart/examples/rigid_chain/README.md +19 -0
  924. share/doc/dart/examples/rigid_chain/main.cpp +110 -0
  925. share/doc/dart/examples/rigid_cubes/CMakeLists.txt +19 -0
  926. share/doc/dart/examples/rigid_cubes/README.md +91 -0
  927. share/doc/dart/examples/rigid_cubes/main.cpp +201 -0
  928. share/doc/dart/examples/rigid_loop/CMakeLists.txt +19 -0
  929. share/doc/dart/examples/rigid_loop/README.md +34 -0
  930. share/doc/dart/examples/rigid_loop/main.cpp +127 -0
  931. share/doc/dart/examples/rigid_shapes/CMakeLists.txt +19 -0
  932. share/doc/dart/examples/rigid_shapes/README.md +19 -0
  933. share/doc/dart/examples/rigid_shapes/main.cpp +250 -0
  934. share/doc/dart/examples/simple_frames/CMakeLists.txt +19 -0
  935. share/doc/dart/examples/simple_frames/README.md +27 -0
  936. share/doc/dart/examples/simple_frames/main.cpp +124 -0
  937. share/doc/dart/examples/simulation_event_handler/CMakeLists.txt +19 -0
  938. share/doc/dart/examples/simulation_event_handler/README.md +189 -0
  939. share/doc/dart/examples/simulation_event_handler/SimulationEventHandler.cpp +572 -0
  940. share/doc/dart/examples/simulation_event_handler/SimulationEventHandler.hpp +211 -0
  941. share/doc/dart/examples/simulation_event_handler/main.cpp +277 -0
  942. share/doc/dart/examples/soft_bodies/CMakeLists.txt +19 -0
  943. share/doc/dart/examples/soft_bodies/README.md +20 -0
  944. share/doc/dart/examples/soft_bodies/main.cpp +219 -0
  945. share/doc/dart/examples/speed_test/CMakeLists.txt +19 -0
  946. share/doc/dart/examples/speed_test/README.md +20 -0
  947. share/doc/dart/examples/speed_test/main.cpp +250 -0
  948. share/doc/dart/examples/tinkertoy/CMakeLists.txt +19 -0
  949. share/doc/dart/examples/tinkertoy/README.md +20 -0
  950. share/doc/dart/examples/tinkertoy/TinkertoyWidget.cpp +208 -0
  951. share/doc/dart/examples/tinkertoy/TinkertoyWidget.hpp +70 -0
  952. share/doc/dart/examples/tinkertoy/TinkertoyWorldNode.cpp +35 -0
  953. share/doc/dart/examples/tinkertoy/TinkertoyWorldNode.hpp +470 -0
  954. share/doc/dart/examples/tinkertoy/main.cpp +186 -0
  955. share/doc/dart/examples/vehicle/CMakeLists.txt +19 -0
  956. share/doc/dart/examples/vehicle/README.md +22 -0
  957. share/doc/dart/examples/vehicle/main.cpp +195 -0
  958. share/doc/dart/examples/wam_ikfast/CMakeLists.txt +22 -0
  959. share/doc/dart/examples/wam_ikfast/Helpers.cpp +148 -0
  960. share/doc/dart/examples/wam_ikfast/Helpers.hpp +46 -0
  961. share/doc/dart/examples/wam_ikfast/InputHandler.cpp +110 -0
  962. share/doc/dart/examples/wam_ikfast/InputHandler.hpp +73 -0
  963. share/doc/dart/examples/wam_ikfast/README.md +20 -0
  964. share/doc/dart/examples/wam_ikfast/WamWorld.cpp +46 -0
  965. share/doc/dart/examples/wam_ikfast/WamWorld.hpp +53 -0
  966. share/doc/dart/examples/wam_ikfast/ikfast/CMakeLists.txt +11 -0
  967. share/doc/dart/examples/wam_ikfast/ikfast/ikfast71.Transform6D.4_6_9_10_11_12_f8.cpp +14930 -0
  968. share/doc/dart/examples/wam_ikfast/osgWamIkFast.cpp +96 -0
  969. share/doc/dart/tutorials/CMakeLists.txt +12 -0
  970. share/doc/dart/tutorials/README.md +45 -0
  971. share/doc/dart/tutorials/tutorial_biped/CMakeLists.txt +19 -0
  972. share/doc/dart/tutorials/tutorial_biped/README +18 -0
  973. share/doc/dart/tutorials/tutorial_biped/main.cpp +374 -0
  974. share/doc/dart/tutorials/tutorial_biped_finished/CMakeLists.txt +19 -0
  975. share/doc/dart/tutorials/tutorial_biped_finished/README +18 -0
  976. share/doc/dart/tutorials/tutorial_biped_finished/main.cpp +532 -0
  977. share/doc/dart/tutorials/tutorial_collisions/CMakeLists.txt +19 -0
  978. share/doc/dart/tutorials/tutorial_collisions/README +18 -0
  979. share/doc/dart/tutorials/tutorial_collisions/main.cpp +506 -0
  980. share/doc/dart/tutorials/tutorial_collisions_finished/CMakeLists.txt +19 -0
  981. share/doc/dart/tutorials/tutorial_collisions_finished/README +18 -0
  982. share/doc/dart/tutorials/tutorial_collisions_finished/main.cpp +679 -0
  983. share/doc/dart/tutorials/tutorial_dominoes/CMakeLists.txt +19 -0
  984. share/doc/dart/tutorials/tutorial_dominoes/README +18 -0
  985. share/doc/dart/tutorials/tutorial_dominoes/main.cpp +394 -0
  986. share/doc/dart/tutorials/tutorial_dominoes_finished/CMakeLists.txt +19 -0
  987. share/doc/dart/tutorials/tutorial_dominoes_finished/README +18 -0
  988. share/doc/dart/tutorials/tutorial_dominoes_finished/main.cpp +559 -0
  989. share/doc/dart/tutorials/tutorial_multi_pendulum/CMakeLists.txt +19 -0
  990. share/doc/dart/tutorials/tutorial_multi_pendulum/README +18 -0
  991. share/doc/dart/tutorials/tutorial_multi_pendulum/main.cpp +443 -0
  992. share/doc/dart/tutorials/tutorial_multi_pendulum_finished/CMakeLists.txt +19 -0
  993. share/doc/dart/tutorials/tutorial_multi_pendulum_finished/README +18 -0
  994. share/doc/dart/tutorials/tutorial_multi_pendulum_finished/main.cpp +512 -0
@@ -0,0 +1,1464 @@
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
+ #include <dart/gui/osg/osg.hpp>
34
+
35
+ #include <dart/utils/urdf/urdf.hpp>
36
+ #include <dart/utils/utils.hpp>
37
+
38
+ #include <dart/dart.hpp>
39
+
40
+ using namespace dart::math;
41
+ using namespace dart::dynamics;
42
+ using namespace dart::simulation;
43
+
44
+ class RelaxedPosture : public dart::optimizer::Function
45
+ {
46
+ public:
47
+ RelaxedPosture(
48
+ const Eigen::VectorXd& idealPosture,
49
+ const Eigen::VectorXd& lower,
50
+ const Eigen::VectorXd& upper,
51
+ const Eigen::VectorXd& weights,
52
+ bool enforceIdeal = false)
53
+ : enforceIdealPosture(enforceIdeal),
54
+ mIdeal(idealPosture),
55
+ mLower(lower),
56
+ mUpper(upper),
57
+ mWeights(weights)
58
+ {
59
+ int dofs = mIdeal.size();
60
+ if (mLower.size() != dofs || mWeights.size() != dofs
61
+ || mUpper.size() != dofs) {
62
+ dterr << "[RelaxedPose::RelaxedPose] Dimension mismatch:\n"
63
+ << " ideal: " << mIdeal.size() << "\n"
64
+ << " lower: " << mLower.size() << "\n"
65
+ << " upper: " << mUpper.size() << "\n"
66
+ << " weights: " << mWeights.size() << "\n";
67
+ }
68
+ mResultVector.setZero(dofs);
69
+ }
70
+
71
+ double eval(const Eigen::VectorXd& _x) override
72
+ {
73
+ computeResultVector(_x);
74
+ return 0.5 * mResultVector.dot(mResultVector);
75
+ }
76
+
77
+ void evalGradient(
78
+ const Eigen::VectorXd& _x, Eigen::Map<Eigen::VectorXd> _grad) override
79
+ {
80
+ computeResultVector(_x);
81
+
82
+ _grad.setZero();
83
+ int smaller = std::min(mResultVector.size(), _grad.size());
84
+ for (int i = 0; i < smaller; ++i)
85
+ _grad[i] = mResultVector[i];
86
+ }
87
+
88
+ void computeResultVector(const Eigen::VectorXd& _x)
89
+ {
90
+ mResultVector.setZero();
91
+
92
+ if (enforceIdealPosture) {
93
+ for (int i = 0; i < _x.size(); ++i) {
94
+ if (mIdeal.size() <= i)
95
+ break;
96
+
97
+ mResultVector[i] = mWeights[i] * (_x[i] - mIdeal[i]);
98
+ }
99
+ } else {
100
+ for (int i = 0; i < _x.size(); ++i) {
101
+ if (mIdeal.size() <= i)
102
+ break;
103
+
104
+ if (_x[i] < mLower[i])
105
+ mResultVector[i] = mWeights[i] * (_x[i] - mLower[i]);
106
+ else if (mUpper[i] < _x[i])
107
+ mResultVector[i] = mWeights[i] * (_x[i] - mUpper[i]);
108
+ }
109
+ }
110
+ }
111
+
112
+ bool enforceIdealPosture;
113
+
114
+ protected:
115
+ Eigen::VectorXd mResultVector;
116
+
117
+ Eigen::VectorXd mIdeal;
118
+
119
+ Eigen::VectorXd mLower;
120
+
121
+ Eigen::VectorXd mUpper;
122
+
123
+ Eigen::VectorXd mWeights;
124
+ };
125
+
126
+ static inline bool checkDist(Eigen::Vector3d& p, double a, double b)
127
+ {
128
+ double d = p.norm();
129
+ double dmax = a + b;
130
+ double dmin = fabs(a - b);
131
+
132
+ if (d > dmax) {
133
+ p *= dmax / d;
134
+ return false;
135
+ } else if (d < dmin) {
136
+ p *= dmin / d;
137
+ return false;
138
+ } else {
139
+ return true;
140
+ }
141
+ }
142
+
143
+ static inline void clamp_sincos(double& sincos, bool& valid)
144
+ {
145
+ if (sincos < -1) {
146
+ valid = false;
147
+ sincos = -1;
148
+ } else if (sincos > 1) {
149
+ valid = false;
150
+ sincos = 1;
151
+ }
152
+ }
153
+
154
+ static inline Eigen::Vector3d flipEuler3Axis(const Eigen::Vector3d& u)
155
+ {
156
+ Eigen::Vector3d v;
157
+ v[0] = u[0] - constantsd::pi();
158
+ v[1] = constantsd::pi() - u[1];
159
+ v[2] = u[2] - constantsd::pi();
160
+ return v;
161
+ }
162
+
163
+ /// The HuboArmIK is based on the derivation of Hubo's arm IK by Matt Zucker.
164
+ class HuboArmIK : public InverseKinematics::Analytical
165
+ {
166
+ public:
167
+ HuboArmIK(
168
+ InverseKinematics* _ik,
169
+ const std::string& baseLinkName,
170
+ const Analytical::Properties& properties = Analytical::Properties())
171
+ : Analytical(_ik, "HuboArmIK_" + baseLinkName, properties),
172
+ configured(false),
173
+ mBaseLinkName(baseLinkName)
174
+ {
175
+ // Do nothing
176
+ }
177
+
178
+ std::unique_ptr<GradientMethod> clone(
179
+ InverseKinematics* _newIK) const override
180
+ {
181
+ return std::make_unique<HuboArmIK>(
182
+ _newIK, mBaseLinkName, getAnalyticalProperties());
183
+ }
184
+
185
+ const std::vector<Solution>& computeSolutions(
186
+ const Eigen::Isometry3d& _desiredBodyTf) override
187
+ {
188
+ mSolutions.clear();
189
+ mSolutions.reserve(8);
190
+
191
+ if (!configured) {
192
+ configure();
193
+
194
+ if (!configured) {
195
+ dtwarn
196
+ << "[HuboArmIK::computeSolutions] This analytical IK was not able "
197
+ << "to configure properly, so it will not be able to compute "
198
+ << "solutions\n";
199
+ return mSolutions;
200
+ }
201
+ }
202
+
203
+ const BodyNodePtr& base = mBaseLink.lock();
204
+ if (nullptr == base) {
205
+ dterr << "[HuboArmIK::computeSolutions] Attempting to perform an IK on a "
206
+ << "limb that no longer exists [" << getMethodName() << "]!\n";
207
+ assert(false);
208
+ return mSolutions;
209
+ }
210
+
211
+ if (nullptr == mWristEnd) {
212
+ dterr << "[HuboArmIK::computeSolutions] Attempting to perform IK without "
213
+ << "a wrist!\n";
214
+ assert(false);
215
+ return mSolutions;
216
+ }
217
+
218
+ const std::size_t SP = 0;
219
+ const std::size_t SR = 1;
220
+ const std::size_t SY = 2;
221
+ const std::size_t EP = 3;
222
+ const std::size_t WY = 4;
223
+ const std::size_t WP = 5;
224
+
225
+ const SkeletonPtr& skel = base->getSkeleton();
226
+
227
+ Eigen::Isometry3d B
228
+ = base->getParentBodyNode()->getWorldTransform().inverse()
229
+ * _desiredBodyTf * mWristEnd->getTransform(mIK->getNode());
230
+
231
+ Eigen::Isometry3d shoulder_from_wrist = shoulderTf.inverse() * B;
232
+ Eigen::Vector3d p = shoulder_from_wrist.inverse().translation();
233
+
234
+ const double a2 = L5 * L5 + L4 * L4;
235
+ const double b2 = L3 * L3 + L4 * L4;
236
+ const double a = sqrt(a2);
237
+ const double b = sqrt(b2);
238
+
239
+ const double alpha = atan2(L5, L4);
240
+ const double beta = atan2(L3, L4);
241
+
242
+ bool startValid = checkDist(p, a, b);
243
+
244
+ double c2 = p.dot(p);
245
+ double x = p.x();
246
+ double y = p.y();
247
+ double z = p.z();
248
+
249
+ for (std::size_t i = 0; i < 8; ++i) {
250
+ const int flipEP = alterantives(i, 0);
251
+ const int incWY = alterantives(i, 1);
252
+ const int flipShoulder = alterantives(i, 2);
253
+
254
+ Eigen::Vector6d testQ;
255
+ bool isValid = startValid;
256
+
257
+ double cosGamma = (a2 + b2 - c2) / (2 * a * b);
258
+ clamp_sincos(cosGamma, isValid);
259
+
260
+ double gamma = flipEP * acos(cosGamma);
261
+ double theta3 = alpha + beta + gamma - 2 * constantsd::pi();
262
+
263
+ testQ(EP) = theta3;
264
+
265
+ double c3 = cos(theta3);
266
+ double s3 = sin(theta3);
267
+
268
+ double numer = -y;
269
+ double denom = (-L4 * c3 - L3 * s3 + L4);
270
+
271
+ double s2, theta2;
272
+
273
+ if (std::abs(denom) < zeroSize) {
274
+ isValid = false;
275
+ const double& prevWY = skel->getPosition(mDofs[WY]);
276
+ theta2 = incWY ? prevWY : constantsd::pi() - prevWY;
277
+ s2 = sin(theta2);
278
+ } else {
279
+ s2 = numer / denom;
280
+ clamp_sincos(s2, isValid);
281
+ theta2 = incWY ? constantsd::pi() - asin(s2) : asin(s2);
282
+ }
283
+
284
+ testQ(WY) = theta2;
285
+
286
+ double c2 = cos(theta2);
287
+
288
+ double r = L4 * c2 - L4 * c2 * c3 - L3 * s3 * c2;
289
+ double q = -L4 * s3 + L3 * c3 + L5;
290
+
291
+ double det = -(q * q + r * r);
292
+
293
+ if (std::abs(det) < zeroSize)
294
+ isValid = false;
295
+
296
+ double k = det < 0 ? -1 : 1;
297
+
298
+ double ks1 = k * (q * x - r * z);
299
+ double kc1 = k * (-r * x - q * z);
300
+
301
+ double theta1 = atan2(ks1, kc1);
302
+ testQ(WP) = theta1;
303
+
304
+ Eigen::Quaterniond Rlower = Eigen::Quaterniond(Eigen::AngleAxisd(
305
+ testQ(EP), Eigen::Vector3d::UnitY()))
306
+ * Eigen::Quaterniond(Eigen::AngleAxisd(
307
+ testQ(WY), Eigen::Vector3d::UnitZ()))
308
+ * Eigen::Quaterniond(Eigen::AngleAxisd(
309
+ testQ(WP), Eigen::Vector3d::UnitY()));
310
+
311
+ Eigen::Matrix3d Rupper = B.rotation() * Rlower.inverse().matrix();
312
+
313
+ Eigen::Vector3d euler = Rupper.eulerAngles(1, 0, 2);
314
+
315
+ if (flipShoulder)
316
+ euler = flipEuler3Axis(euler);
317
+
318
+ testQ(SP) = euler[0];
319
+ testQ(SR) = euler[1];
320
+ testQ(SY) = euler[2];
321
+
322
+ for (std::size_t j = 0; j < 6; ++j) {
323
+ testQ[j] = dart::math::wrapToPi(testQ[j]);
324
+ if (std::abs(testQ[j]) < zeroSize)
325
+ testQ[j] = 0.0;
326
+ }
327
+
328
+ int validity = isValid ? VALID : OUT_OF_REACH;
329
+ mSolutions.push_back(Solution(testQ, validity));
330
+ }
331
+
332
+ checkSolutionJointLimits();
333
+
334
+ return mSolutions;
335
+ }
336
+
337
+ const std::vector<std::size_t>& getDofs() const override
338
+ {
339
+ if (!configured)
340
+ configure();
341
+
342
+ return mDofs;
343
+ }
344
+
345
+ const double zeroSize = 1e-8;
346
+
347
+ protected:
348
+ void configure() const
349
+ {
350
+ configured = false;
351
+
352
+ mBaseLink = mIK->getNode()->getSkeleton()->getBodyNode(mBaseLinkName);
353
+
354
+ BodyNode* base = mBaseLink.lock();
355
+ if (nullptr == base) {
356
+ dterr << "[HuboArmIK::configure] base link is a nullptr\n";
357
+ assert(false);
358
+ return;
359
+ }
360
+
361
+ const SkeletonPtr& skel = base->getSkeleton();
362
+ const BodyNodePtr& pelvis = skel->getBodyNode("Body_TSY");
363
+ if (nullptr == pelvis) {
364
+ dterr << "[HuboArmIK::configure] Could not find Hubo's pelvis "
365
+ << "(Body_TSY)\n";
366
+ assert(false);
367
+ return;
368
+ }
369
+
370
+ Eigen::Vector6d saved_q;
371
+
372
+ DegreeOfFreedom* dofs[6];
373
+ BodyNode* bn = base;
374
+ for (std::size_t i = 0; i < 6; ++i) {
375
+ Joint* joint = bn->getParentJoint();
376
+ if (joint->getNumDofs() != 1) {
377
+ dterr << "[HuboArmIK::configure] Invalid number of DOFs ("
378
+ << joint->getNumDofs() << ") in the Joint [" << joint->getName()
379
+ << "]\n";
380
+ assert(false);
381
+ return;
382
+ }
383
+
384
+ dofs[i] = joint->getDof(0);
385
+ saved_q[i] = dofs[i]->getPosition();
386
+ dofs[i]->setPosition(0.0);
387
+ bn = bn->getChildBodyNode(0);
388
+ }
389
+
390
+ BodyNode* elbow = dofs[3]->getChildBodyNode();
391
+ L3 = std::abs(
392
+ elbow->getTransform(dofs[2]->getParentBodyNode()).translation()[2]);
393
+ L4 = std::abs(
394
+ elbow->getTransform(dofs[3]->getParentBodyNode()).translation()[0]);
395
+
396
+ BodyNode* wrist = dofs[5]->getChildBodyNode();
397
+ Eigen::Isometry3d wrist_tf = wrist->getTransform(elbow);
398
+ L5 = std::abs(wrist_tf.translation()[2]);
399
+
400
+ shoulderTf = Eigen::Isometry3d::Identity();
401
+ shoulderTf.translate(
402
+ dofs[3]->getParentBodyNode()->getTransform(pelvis).translation()[0]
403
+ * Eigen::Vector3d::UnitX());
404
+ shoulderTf.translate(
405
+ dofs[2]->getParentBodyNode()->getTransform(pelvis).translation()[1]
406
+ * Eigen::Vector3d::UnitY());
407
+ shoulderTf.translate(
408
+ dofs[2]->getParentBodyNode()->getTransform(pelvis).translation()[2]
409
+ * Eigen::Vector3d::UnitZ());
410
+
411
+ mWristEnd = dofs[5]->getChildBodyNode();
412
+
413
+ alterantives << 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, -1, 1, 1, -1, 1, 0, -1,
414
+ 0, 1, -1, 0, 0;
415
+
416
+ for (std::size_t i = 0; i < 6; ++i) {
417
+ dofs[i]->setPosition(saved_q[i]);
418
+ mDofs.push_back(dofs[i]->getIndexInSkeleton());
419
+ }
420
+
421
+ configured = true;
422
+ }
423
+
424
+ mutable bool configured;
425
+
426
+ mutable Eigen::Isometry3d shoulderTf;
427
+ mutable Eigen::Isometry3d wristTfInv;
428
+ mutable Eigen::Isometry3d mNodeOffsetTfInv;
429
+ mutable double L3, L4, L5;
430
+
431
+ mutable Eigen::Matrix<int, 8, 3> alterantives;
432
+
433
+ mutable std::vector<std::size_t> mDofs;
434
+
435
+ std::string mBaseLinkName;
436
+ mutable WeakBodyNodePtr mBaseLink;
437
+
438
+ mutable JacobianNode* mWristEnd;
439
+ };
440
+
441
+ class HuboLegIK : public InverseKinematics::Analytical
442
+ {
443
+ public:
444
+ /// baseLink should be Body_LHY or Body_RHY
445
+ HuboLegIK(
446
+ InverseKinematics* _ik,
447
+ const std::string& baseLinkName,
448
+ const Analytical::Properties& properties = Analytical::Properties())
449
+ : Analytical(_ik, "HuboLegIK_" + baseLinkName, properties),
450
+ configured(false),
451
+ mBaseLinkName(baseLinkName)
452
+ {
453
+ // Do nothing
454
+ }
455
+
456
+ std::unique_ptr<GradientMethod> clone(
457
+ InverseKinematics* _newIK) const override
458
+ {
459
+ return std::make_unique<HuboLegIK>(
460
+ _newIK, mBaseLinkName, getAnalyticalProperties());
461
+ }
462
+
463
+ const std::vector<Solution>& computeSolutions(
464
+ const Eigen::Isometry3d& _desiredBodyTf) override
465
+ {
466
+ mSolutions.clear();
467
+ mSolutions.reserve(8);
468
+
469
+ if (!configured) {
470
+ configure();
471
+
472
+ if (!configured) {
473
+ dtwarn
474
+ << "[HuboLegIK::computeSolutions] This analytical IK was not able "
475
+ << "to configure properly, so it will not be able to compute "
476
+ << "solutions\n";
477
+ return mSolutions;
478
+ }
479
+ }
480
+
481
+ const BodyNodePtr& base = mBaseLink.lock();
482
+ if (nullptr == base) {
483
+ dterr << "[HuboLegIK::computeSolutions] Attempting to perform IK on a "
484
+ << "limb that no longer exists!\n";
485
+ assert(false);
486
+ return mSolutions;
487
+ }
488
+
489
+ double nx, ny, sx, sy, ax, ay, az, px, py, pz;
490
+ double q1, q2, q3, q4, q5, q6;
491
+ double S2, S4, S6;
492
+ double C2, C4, C5, C6;
493
+ double C45, psi, q345;
494
+ std::complex<double> radical;
495
+ std::complex<double> sqrt_radical;
496
+ Eigen::Isometry3d B, Binv;
497
+
498
+ Eigen::Vector6d testQ;
499
+
500
+ B = (base->getParentBodyNode()->getWorldTransform() * waist).inverse()
501
+ * _desiredBodyTf * footTfInv;
502
+ Binv = B.inverse();
503
+
504
+ nx = Binv(0, 0);
505
+ sx = Binv(0, 1);
506
+ ax = Binv(0, 2);
507
+ px = Binv(0, 3);
508
+ ny = Binv(1, 0);
509
+ sy = Binv(1, 1);
510
+ ay = Binv(1, 2);
511
+ py = Binv(1, 3);
512
+ az = Binv(2, 2);
513
+ pz = Binv(2, 3);
514
+
515
+ for (std::size_t i = 0; i < 8; ++i) {
516
+ bool isValid = true;
517
+
518
+ C4 = ((px + L6) * (px + L6) - L4 * L4 - L5 * L5 + py * py + pz * pz)
519
+ / (2 * L4 * L5);
520
+ radical = 1 - C4 * C4;
521
+ sqrt_radical = std::sqrt(radical);
522
+ if (sqrt_radical.imag() != 0)
523
+ isValid = false;
524
+ q4 = atan2(alternatives(i, 0) * sqrt_radical.real(), C4);
525
+
526
+ S4 = sin(q4);
527
+ psi = atan2(S4 * L4, C4 * L4 + L5);
528
+ radical = (px + L6) * (px + L6) + py * py;
529
+ sqrt_radical = std::sqrt(radical);
530
+ if (sqrt_radical.imag() != 0)
531
+ isValid = false;
532
+
533
+ q5 = dart::math::wrapToPi(
534
+ atan2(-pz, alternatives(i, 1) * sqrt_radical.real()) - psi);
535
+
536
+ q6 = atan2(py, -(px + L6));
537
+ C45 = cos(q4 + q5);
538
+ C5 = cos(q5);
539
+ if (C45 * L4 + C5 * L5 < 0)
540
+ q6 = dart::math::wrapToPi(q6 + constantsd::pi());
541
+
542
+ S6 = sin(q6);
543
+ C6 = cos(q6);
544
+
545
+ S2 = C6 * ay + S6 * ax;
546
+ radical = 1 - S2 * S2;
547
+ sqrt_radical = std::sqrt(radical);
548
+ if (sqrt_radical.imag() != 0)
549
+ isValid = false;
550
+ q2 = atan2(S2, alternatives(i, 2) * sqrt_radical.real());
551
+
552
+ q1 = atan2(C6 * sy + S6 * sx, C6 * ny + S6 * nx);
553
+ C2 = cos(q2);
554
+ if (C2 < 0)
555
+ q1 = dart::math::wrapToPi(q1 + constantsd::pi());
556
+
557
+ q345 = atan2(-az / C2, -(C6 * ax - S6 * ay) / C2);
558
+ q3 = dart::math::wrapToPi(q345 - q4 - q5);
559
+
560
+ testQ[0] = q1;
561
+ testQ[1] = q2;
562
+ testQ[2] = q3;
563
+ testQ[3] = q4;
564
+ testQ[4] = q5;
565
+ testQ[5] = q6;
566
+
567
+ for (int k = 0; k < testQ.size(); ++k)
568
+ if (fabs(testQ[k]) < zeroSize)
569
+ testQ[k] = 0;
570
+
571
+ int validity = isValid ? VALID : OUT_OF_REACH;
572
+ mSolutions.push_back(Solution(testQ, validity));
573
+ }
574
+
575
+ checkSolutionJointLimits();
576
+
577
+ return mSolutions;
578
+ }
579
+
580
+ const std::vector<std::size_t>& getDofs() const override
581
+ {
582
+ if (!configured)
583
+ configure();
584
+
585
+ return mDofs;
586
+ }
587
+
588
+ const double zeroSize = 1e-8;
589
+
590
+ protected:
591
+ void configure() const
592
+ {
593
+ configured = false;
594
+
595
+ mBaseLink = mIK->getNode()->getSkeleton()->getBodyNode(mBaseLinkName);
596
+
597
+ BodyNode* base = mBaseLink.lock();
598
+ if (nullptr == base) {
599
+ dterr << "[HuboLegIK::configure] base link is a nullptr\n";
600
+ assert(false);
601
+ return;
602
+ }
603
+
604
+ const SkeletonPtr& skel = mIK->getNode()->getSkeleton();
605
+ BodyNode* pelvis = skel->getBodyNode("Body_TSY");
606
+ if (nullptr == pelvis) {
607
+ dterr << "[HuboLegIK::configure] Could not find Hubo's pelvis "
608
+ << "(Body_TSY)\n";
609
+ assert(false);
610
+ return;
611
+ }
612
+
613
+ Eigen::Vector6d saved_q;
614
+
615
+ DegreeOfFreedom* dofs[6];
616
+ BodyNode* bn = base;
617
+ for (std::size_t i = 0; i < 6; ++i) {
618
+ Joint* joint = bn->getParentJoint();
619
+ if (joint->getNumDofs() != 1) {
620
+ dterr << "[HuboLegIK::configure] Invalid number of DOFs ("
621
+ << joint->getNumDofs() << ") in the Joint [" << joint->getName()
622
+ << "]\n";
623
+ assert(false);
624
+ return;
625
+ }
626
+
627
+ dofs[i] = joint->getDof(0);
628
+ saved_q[i] = dofs[i]->getPosition();
629
+ dofs[i]->setPosition(0.0);
630
+
631
+ if (bn->getNumChildBodyNodes() > 0)
632
+ bn = bn->getChildBodyNode(0);
633
+ }
634
+
635
+ L4 = std::abs(
636
+ dofs[3]->getChildBodyNode()->getRelativeTransform().translation()[2]);
637
+
638
+ L5 = std::abs(
639
+ dofs[4]->getChildBodyNode()->getRelativeTransform().translation()[2]);
640
+
641
+ // This offset will be taken care of with footTfInv
642
+ L6 = 0.0;
643
+
644
+ hipRotation = Eigen::Isometry3d::Identity();
645
+ hipRotation.rotate(Eigen::AngleAxisd(
646
+ 90 * constantsd::pi() / 180.0, Eigen::Vector3d::UnitZ()));
647
+
648
+ waist = dofs[2]->getChildBodyNode()->getTransform(
649
+ dofs[0]->getParentBodyNode())
650
+ * hipRotation;
651
+
652
+ footTfInv = Eigen::Isometry3d::Identity();
653
+ footTfInv.rotate(Eigen::AngleAxisd(
654
+ -90 * constantsd::pi() / 180.0, Eigen::Vector3d::UnitY()));
655
+ footTfInv
656
+ = footTfInv * mIK->getNode()->getTransform(dofs[5]->getChildBodyNode());
657
+ footTfInv = footTfInv.inverse();
658
+
659
+ alternatives << 1, 1, 1, 1, 1, -1, 1, -1, 1, 1, -1, -1, -1, 1, 1, -1, 1, -1,
660
+ -1, -1, 1, -1, -1, -1;
661
+
662
+ for (std::size_t i = 0; i < 6; ++i) {
663
+ dofs[i]->setPosition(saved_q[i]);
664
+ mDofs.push_back(dofs[i]->getIndexInSkeleton());
665
+ }
666
+
667
+ configured = true;
668
+ }
669
+
670
+ mutable double L4, L5, L6;
671
+ mutable Eigen::Isometry3d waist;
672
+ mutable Eigen::Isometry3d hipRotation;
673
+ mutable Eigen::Isometry3d footTfInv;
674
+ mutable Eigen::Matrix<int, 8, 3> alternatives;
675
+
676
+ mutable std::vector<std::size_t> mDofs;
677
+
678
+ mutable bool configured;
679
+
680
+ std::string mBaseLinkName;
681
+
682
+ mutable WeakBodyNodePtr mBaseLink;
683
+ };
684
+
685
+ class TeleoperationWorld : public dart::gui::osg::WorldNode
686
+ {
687
+ public:
688
+ enum MoveEnum_t
689
+ {
690
+ MOVE_Q = 0,
691
+ MOVE_W,
692
+ MOVE_E,
693
+ MOVE_A,
694
+ MOVE_S,
695
+ MOVE_D,
696
+ MOVE_F,
697
+ MOVE_Z,
698
+
699
+ NUM_MOVE
700
+ };
701
+
702
+ TeleoperationWorld(WorldPtr _world, SkeletonPtr _robot)
703
+ : dart::gui::osg::WorldNode(_world),
704
+ mHubo(_robot),
705
+ iter(0),
706
+ l_foot(_robot->getEndEffector("l_foot")),
707
+ r_foot(_robot->getEndEffector("r_foot")),
708
+ l_hand(_robot->getEndEffector("l_hand")),
709
+ r_hand(_robot->getEndEffector("r_hand"))
710
+ {
711
+ mMoveComponents.resize(NUM_MOVE, false);
712
+ mAnyMovement = false;
713
+ mAmplifyMovement = false;
714
+ }
715
+
716
+ void setMovement(const std::vector<bool>& moveComponents)
717
+ {
718
+ mMoveComponents = moveComponents;
719
+
720
+ mAnyMovement = false;
721
+
722
+ for (bool move : mMoveComponents) {
723
+ if (move) {
724
+ mAnyMovement = true;
725
+ break;
726
+ }
727
+ }
728
+ }
729
+
730
+ void customPreRefresh() override
731
+ {
732
+ if (mAnyMovement) {
733
+ Eigen::Isometry3d old_tf = mHubo->getBodyNode(0)->getWorldTransform();
734
+ Eigen::Isometry3d new_tf = Eigen::Isometry3d::Identity();
735
+ Eigen::Vector3d forward = old_tf.linear().col(0);
736
+ forward[2] = 0.0;
737
+ if (forward.norm() > 1e-10)
738
+ forward.normalize();
739
+ else
740
+ forward.setZero();
741
+
742
+ Eigen::Vector3d left = old_tf.linear().col(1);
743
+ left[2] = 0.0;
744
+ if (left.norm() > 1e-10)
745
+ left.normalize();
746
+ else
747
+ left.setZero();
748
+
749
+ const Eigen::Vector3d& up = Eigen::Vector3d::UnitZ();
750
+
751
+ double linearStep = 0.01;
752
+ double elevationStep = 0.2 * linearStep;
753
+ double rotationalStep = 2.0 * constantsd::pi() / 180.0;
754
+
755
+ if (mAmplifyMovement) {
756
+ linearStep *= 2.0;
757
+ elevationStep *= 2.0;
758
+ rotationalStep *= 2.0;
759
+ }
760
+
761
+ if (mMoveComponents[MOVE_W])
762
+ new_tf.translate(linearStep * forward);
763
+
764
+ if (mMoveComponents[MOVE_S])
765
+ new_tf.translate(-linearStep * forward);
766
+
767
+ if (mMoveComponents[MOVE_A])
768
+ new_tf.translate(linearStep * left);
769
+
770
+ if (mMoveComponents[MOVE_D])
771
+ new_tf.translate(-linearStep * left);
772
+
773
+ if (mMoveComponents[MOVE_F])
774
+ new_tf.translate(elevationStep * up);
775
+
776
+ if (mMoveComponents[MOVE_Z])
777
+ new_tf.translate(-elevationStep * up);
778
+
779
+ if (mMoveComponents[MOVE_Q])
780
+ new_tf.rotate(Eigen::AngleAxisd(rotationalStep, up));
781
+
782
+ if (mMoveComponents[MOVE_E])
783
+ new_tf.rotate(Eigen::AngleAxisd(-rotationalStep, up));
784
+
785
+ new_tf.pretranslate(old_tf.translation());
786
+ new_tf.rotate(old_tf.rotation());
787
+
788
+ mHubo->getJoint(0)->setPositions(FreeJoint::convertToPositions(new_tf));
789
+ }
790
+
791
+ mHubo->getIK(true)->solveAndApply(true);
792
+ }
793
+
794
+ bool mAmplifyMovement;
795
+
796
+ protected:
797
+ SkeletonPtr mHubo;
798
+ std::size_t iter;
799
+
800
+ EndEffectorPtr l_foot;
801
+ EndEffectorPtr r_foot;
802
+
803
+ EndEffectorPtr l_hand;
804
+ EndEffectorPtr r_hand;
805
+
806
+ std::vector<IK::Analytical::Solution> mSolutions;
807
+
808
+ Eigen::VectorXd grad;
809
+
810
+ // Order: q, w, e, a, s, d
811
+ std::vector<bool> mMoveComponents;
812
+
813
+ bool mAnyMovement;
814
+ };
815
+
816
+ class InputHandler : public ::osgGA::GUIEventHandler
817
+ {
818
+ public:
819
+ InputHandler(
820
+ dart::gui::osg::Viewer* viewer,
821
+ TeleoperationWorld* teleop,
822
+ const SkeletonPtr& hubo,
823
+ const WorldPtr& world)
824
+ : mViewer(viewer), mTeleop(teleop), mHubo(hubo), mWorld(world)
825
+ {
826
+ initialize();
827
+ }
828
+
829
+ void initialize()
830
+ {
831
+ mRestConfig = mHubo->getPositions();
832
+
833
+ for (std::size_t i = 0; i < mHubo->getNumEndEffectors(); ++i) {
834
+ const InverseKinematicsPtr ik = mHubo->getEndEffector(i)->getIK();
835
+ if (ik) {
836
+ mDefaultBounds.push_back(ik->getErrorMethod().getBounds());
837
+ mDefaultTargetTf.push_back(ik->getTarget()->getRelativeTransform());
838
+ mConstraintActive.push_back(false);
839
+ mEndEffectorIndex.push_back(i);
840
+ }
841
+ }
842
+
843
+ mPosture = std::dynamic_pointer_cast<RelaxedPosture>(
844
+ mHubo->getIK(true)->getObjective());
845
+
846
+ mBalance = std::dynamic_pointer_cast<dart::constraint::BalanceConstraint>(
847
+ mHubo->getIK(true)->getProblem()->getEqConstraint(1));
848
+
849
+ mOptimizationKey = 'r';
850
+
851
+ mMoveComponents.resize(TeleoperationWorld::NUM_MOVE, false);
852
+ }
853
+
854
+ bool handle(
855
+ const ::osgGA::GUIEventAdapter& ea, ::osgGA::GUIActionAdapter&) override
856
+ {
857
+ if (nullptr == mHubo) {
858
+ return false;
859
+ }
860
+
861
+ if (::osgGA::GUIEventAdapter::KEYDOWN == ea.getEventType()) {
862
+ if (ea.getKey() == 'p') {
863
+ for (std::size_t i = 0; i < mHubo->getNumDofs(); ++i)
864
+ std::cout << mHubo->getDof(i)->getName() << ": "
865
+ << mHubo->getDof(i)->getPosition() << std::endl;
866
+ return true;
867
+ }
868
+
869
+ if (ea.getKey() == 't') {
870
+ // Reset all the positions except for x, y, and yaw
871
+ for (std::size_t i = 0; i < mHubo->getNumDofs(); ++i) {
872
+ if (i < 2 || 4 < i)
873
+ mHubo->getDof(i)->setPosition(mRestConfig[i]);
874
+ }
875
+ return true;
876
+ }
877
+
878
+ if ('1' <= ea.getKey() && ea.getKey() <= '9') {
879
+ std::size_t index = ea.getKey() - '1';
880
+ if (index < mConstraintActive.size()) {
881
+ EndEffector* ee = mHubo->getEndEffector(mEndEffectorIndex[index]);
882
+ const InverseKinematicsPtr& ik = ee->getIK();
883
+ if (ik && mConstraintActive[index]) {
884
+ mConstraintActive[index] = false;
885
+
886
+ ik->getErrorMethod().setBounds(mDefaultBounds[index]);
887
+ ik->getTarget()->setRelativeTransform(mDefaultTargetTf[index]);
888
+ mWorld->removeSimpleFrame(ik->getTarget());
889
+ } else if (ik) {
890
+ mConstraintActive[index] = true;
891
+
892
+ // Use the standard default bounds instead of our custom default
893
+ // bounds
894
+ ik->getErrorMethod().setBounds();
895
+ ik->getTarget()->setTransform(ee->getTransform());
896
+ mWorld->addSimpleFrame(ik->getTarget());
897
+ }
898
+ }
899
+ return true;
900
+ }
901
+
902
+ if ('x' == ea.getKey()) {
903
+ EndEffector* ee = mHubo->getEndEffector("l_foot");
904
+ ee->getSupport()->setActive(!ee->getSupport()->isActive());
905
+ return true;
906
+ }
907
+
908
+ if ('c' == ea.getKey()) {
909
+ EndEffector* ee = mHubo->getEndEffector("r_foot");
910
+ ee->getSupport()->setActive(!ee->getSupport()->isActive());
911
+ return true;
912
+ }
913
+
914
+ if (ea.getKey() == ::osgGA::GUIEventAdapter::KEY_Shift_L)
915
+ mTeleop->mAmplifyMovement = true;
916
+
917
+ switch (ea.getKey()) {
918
+ case 'w':
919
+ case 'W':
920
+ mMoveComponents[TeleoperationWorld::MOVE_W] = true;
921
+ break;
922
+ case 'a':
923
+ case 'A':
924
+ mMoveComponents[TeleoperationWorld::MOVE_A] = true;
925
+ break;
926
+ case 's':
927
+ case 'S':
928
+ mMoveComponents[TeleoperationWorld::MOVE_S] = true;
929
+ break;
930
+ case 'd':
931
+ case 'D':
932
+ mMoveComponents[TeleoperationWorld::MOVE_D] = true;
933
+ break;
934
+ case 'q':
935
+ case 'Q':
936
+ mMoveComponents[TeleoperationWorld::MOVE_Q] = true;
937
+ break;
938
+ case 'e':
939
+ case 'E':
940
+ mMoveComponents[TeleoperationWorld::MOVE_E] = true;
941
+ break;
942
+ case 'f':
943
+ case 'F':
944
+ mMoveComponents[TeleoperationWorld::MOVE_F] = true;
945
+ break;
946
+ case 'z':
947
+ case 'Z':
948
+ mMoveComponents[TeleoperationWorld::MOVE_Z] = true;
949
+ break;
950
+ }
951
+
952
+ switch (ea.getKey()) {
953
+ case 'w':
954
+ case 'a':
955
+ case 's':
956
+ case 'd':
957
+ case 'q':
958
+ case 'e':
959
+ case 'f':
960
+ case 'z':
961
+ case 'W':
962
+ case 'A':
963
+ case 'S':
964
+ case 'D':
965
+ case 'Q':
966
+ case 'E':
967
+ case 'F':
968
+ case 'Z': {
969
+ mTeleop->setMovement(mMoveComponents);
970
+ return true;
971
+ }
972
+ }
973
+
974
+ if (mOptimizationKey == ea.getKey()) {
975
+ if (mPosture)
976
+ mPosture->enforceIdealPosture = true;
977
+
978
+ if (mBalance)
979
+ mBalance->setErrorMethod(
980
+ dart::constraint::BalanceConstraint::OPTIMIZE_BALANCE);
981
+
982
+ return true;
983
+ }
984
+ }
985
+
986
+ if (::osgGA::GUIEventAdapter::KEYUP == ea.getEventType()) {
987
+ if (ea.getKey() == mOptimizationKey) {
988
+ if (mPosture)
989
+ mPosture->enforceIdealPosture = false;
990
+
991
+ if (mBalance)
992
+ mBalance->setErrorMethod(
993
+ dart::constraint::BalanceConstraint::FROM_CENTROID);
994
+
995
+ return true;
996
+ }
997
+
998
+ if (ea.getKey() == ::osgGA::GUIEventAdapter::KEY_Shift_L)
999
+ mTeleop->mAmplifyMovement = false;
1000
+
1001
+ switch (ea.getKey()) {
1002
+ case 'w':
1003
+ case 'W':
1004
+ mMoveComponents[TeleoperationWorld::MOVE_W] = false;
1005
+ break;
1006
+ case 'a':
1007
+ case 'A':
1008
+ mMoveComponents[TeleoperationWorld::MOVE_A] = false;
1009
+ break;
1010
+ case 's':
1011
+ case 'S':
1012
+ mMoveComponents[TeleoperationWorld::MOVE_S] = false;
1013
+ break;
1014
+ case 'd':
1015
+ case 'D':
1016
+ mMoveComponents[TeleoperationWorld::MOVE_D] = false;
1017
+ break;
1018
+ case 'q':
1019
+ case 'Q':
1020
+ mMoveComponents[TeleoperationWorld::MOVE_Q] = false;
1021
+ break;
1022
+ case 'e':
1023
+ case 'E':
1024
+ mMoveComponents[TeleoperationWorld::MOVE_E] = false;
1025
+ break;
1026
+ case 'f':
1027
+ case 'F':
1028
+ mMoveComponents[TeleoperationWorld::MOVE_F] = false;
1029
+ break;
1030
+ case 'z':
1031
+ case 'Z':
1032
+ mMoveComponents[TeleoperationWorld::MOVE_Z] = false;
1033
+ break;
1034
+ }
1035
+
1036
+ switch (ea.getKey()) {
1037
+ case 'w':
1038
+ case 'a':
1039
+ case 's':
1040
+ case 'd':
1041
+ case 'q':
1042
+ case 'e':
1043
+ case 'f':
1044
+ case 'z':
1045
+ case 'W':
1046
+ case 'A':
1047
+ case 'S':
1048
+ case 'D':
1049
+ case 'Q':
1050
+ case 'E':
1051
+ case 'F':
1052
+ case 'Z': {
1053
+ mTeleop->setMovement(mMoveComponents);
1054
+ return true;
1055
+ }
1056
+ }
1057
+ }
1058
+
1059
+ return false;
1060
+ }
1061
+
1062
+ protected:
1063
+ dart::gui::osg::Viewer* mViewer;
1064
+
1065
+ TeleoperationWorld* mTeleop;
1066
+
1067
+ SkeletonPtr mHubo;
1068
+
1069
+ WorldPtr mWorld;
1070
+
1071
+ Eigen::VectorXd mRestConfig;
1072
+
1073
+ std::vector<bool> mConstraintActive;
1074
+
1075
+ std::vector<std::size_t> mEndEffectorIndex;
1076
+
1077
+ std::vector<std::pair<Eigen::Vector6d, Eigen::Vector6d>> mDefaultBounds;
1078
+
1079
+ dart::common::aligned_vector<Eigen::Isometry3d> mDefaultTargetTf;
1080
+
1081
+ std::shared_ptr<RelaxedPosture> mPosture;
1082
+
1083
+ std::shared_ptr<dart::constraint::BalanceConstraint> mBalance;
1084
+
1085
+ char mOptimizationKey;
1086
+
1087
+ std::vector<bool> mMoveComponents;
1088
+ };
1089
+
1090
+ SkeletonPtr createGround()
1091
+ {
1092
+ // Create a Skeleton to represent the ground
1093
+ SkeletonPtr ground = Skeleton::create("ground");
1094
+ Eigen::Isometry3d tf(Eigen::Isometry3d::Identity());
1095
+ double thickness = 0.01;
1096
+ tf.translation() = Eigen::Vector3d(0, 0, -thickness / 2.0);
1097
+ WeldJoint::Properties joint;
1098
+ joint.mT_ParentBodyToJoint = tf;
1099
+ ground->createJointAndBodyNodePair<WeldJoint>(nullptr, joint);
1100
+ ShapePtr groundShape
1101
+ = std::make_shared<BoxShape>(Eigen::Vector3d(10, 10, thickness));
1102
+
1103
+ auto shapeNode = ground->getBodyNode(0)
1104
+ ->createShapeNodeWith<
1105
+ VisualAspect,
1106
+ CollisionAspect,
1107
+ DynamicsAspect>(groundShape);
1108
+ shapeNode->getVisualAspect()->setColor(dart::Color::Blue(0.2));
1109
+
1110
+ return ground;
1111
+ }
1112
+
1113
+ SkeletonPtr createHubo()
1114
+ {
1115
+ dart::utils::DartLoader loader;
1116
+ loader.addPackageDirectory("drchubo", DART_DATA_PATH "/urdf/drchubo");
1117
+ SkeletonPtr hubo
1118
+ = loader.parseSkeleton(DART_DATA_PATH "/urdf/drchubo/drchubo.urdf");
1119
+
1120
+ for (std::size_t i = 0; i < hubo->getNumBodyNodes(); ++i) {
1121
+ BodyNode* bn = hubo->getBodyNode(i);
1122
+ if (bn->getName().substr(0, 7) == "Body_LF"
1123
+ || bn->getName().substr(0, 7) == "Body_RF") {
1124
+ bn->remove();
1125
+ --i;
1126
+ }
1127
+ }
1128
+
1129
+ return hubo;
1130
+ }
1131
+
1132
+ void setStartupConfiguration(const SkeletonPtr& hubo)
1133
+ {
1134
+ hubo->getDof("LHP")->setPosition(toRadian(-45.0));
1135
+ hubo->getDof("LKP")->setPosition(toRadian(90.0));
1136
+ hubo->getDof("LAP")->setPosition(toRadian(-45.0));
1137
+
1138
+ hubo->getDof("RHP")->setPosition(toRadian(-45.0));
1139
+ hubo->getDof("RKP")->setPosition(toRadian(90.0));
1140
+ hubo->getDof("RAP")->setPosition(toRadian(-45.0));
1141
+
1142
+ hubo->getDof("LSP")->setPosition(toRadian(30.0));
1143
+ hubo->getDof("LEP")->setPosition(toRadian(-120.0));
1144
+
1145
+ hubo->getDof("RSP")->setPosition(toRadian(30.0));
1146
+ hubo->getDof("REP")->setPosition(toRadian(-120.0));
1147
+
1148
+ hubo->getDof("LSY")->setPositionLowerLimit(toRadian(-90.0));
1149
+ hubo->getDof("LSY")->setPositionUpperLimit(toRadian(90.0));
1150
+ hubo->getDof("LWY")->setPositionLowerLimit(toRadian(-90.0));
1151
+ hubo->getDof("LWY")->setPositionUpperLimit(toRadian(90.0));
1152
+
1153
+ hubo->getDof("RSY")->setPositionLowerLimit(toRadian(-90.0));
1154
+ hubo->getDof("RSY")->setPositionUpperLimit(toRadian(90.0));
1155
+ hubo->getDof("RWY")->setPositionLowerLimit(toRadian(-90.0));
1156
+ hubo->getDof("RWY")->setPositionUpperLimit(toRadian(90.0));
1157
+ }
1158
+
1159
+ void setupEndEffectors(const SkeletonPtr& hubo)
1160
+ {
1161
+ Eigen::VectorXd rootjoint_weights = Eigen::VectorXd::Ones(7);
1162
+ rootjoint_weights = 0.01 * rootjoint_weights;
1163
+
1164
+ double extra_error_clamp = 0.1;
1165
+
1166
+ Eigen::Vector3d linearBounds
1167
+ = Eigen::Vector3d::Constant(std::numeric_limits<double>::infinity());
1168
+
1169
+ Eigen::Vector3d angularBounds
1170
+ = Eigen::Vector3d::Constant(std::numeric_limits<double>::infinity());
1171
+
1172
+ Eigen::Isometry3d tf_hand(Eigen::Isometry3d::Identity());
1173
+ tf_hand.translate(Eigen::Vector3d(0.0, 0.0, -0.09));
1174
+
1175
+ EndEffector* l_hand
1176
+ = hubo->getBodyNode("Body_LWR")->createEndEffector("l_hand");
1177
+ l_hand->setDefaultRelativeTransform(tf_hand, true);
1178
+
1179
+ dart::gui::osg::InteractiveFramePtr lh_target(
1180
+ new dart::gui::osg::InteractiveFrame(Frame::World(), "lh_target"));
1181
+
1182
+ l_hand->getIK(true)->setTarget(lh_target);
1183
+ l_hand->getIK()->useWholeBody();
1184
+
1185
+ l_hand->getIK()->setGradientMethod<HuboArmIK>("Body_LSP");
1186
+
1187
+ l_hand->getIK()->getAnalytical()->setExtraDofUtilization(
1188
+ IK::Analytical::POST_ANALYTICAL);
1189
+
1190
+ l_hand->getIK()->getAnalytical()->setExtraErrorLengthClamp(extra_error_clamp);
1191
+
1192
+ l_hand->getIK()->getGradientMethod().setComponentWeights(rootjoint_weights);
1193
+
1194
+ l_hand->getIK()->getErrorMethod().setLinearBounds(
1195
+ -linearBounds, linearBounds);
1196
+
1197
+ l_hand->getIK()->getErrorMethod().setAngularBounds(
1198
+ -angularBounds, angularBounds);
1199
+
1200
+ EndEffector* r_hand
1201
+ = hubo->getBodyNode("Body_RWR")->createEndEffector("r_hand");
1202
+ r_hand->setDefaultRelativeTransform(tf_hand, true);
1203
+
1204
+ dart::gui::osg::InteractiveFramePtr rh_target(
1205
+ new dart::gui::osg::InteractiveFrame(Frame::World(), "rh_target"));
1206
+
1207
+ r_hand->getIK(true)->setTarget(rh_target);
1208
+ r_hand->getIK()->useWholeBody();
1209
+
1210
+ r_hand->getIK()->setGradientMethod<HuboArmIK>("Body_RSP");
1211
+
1212
+ r_hand->getIK()->getAnalytical()->setExtraDofUtilization(
1213
+ IK::Analytical::POST_ANALYTICAL);
1214
+
1215
+ r_hand->getIK()->getAnalytical()->setExtraErrorLengthClamp(extra_error_clamp);
1216
+
1217
+ r_hand->getIK()->getGradientMethod().setComponentWeights(rootjoint_weights);
1218
+
1219
+ r_hand->getIK()->getErrorMethod().setLinearBounds(
1220
+ -linearBounds, linearBounds);
1221
+
1222
+ r_hand->getIK()->getErrorMethod().setAngularBounds(
1223
+ -angularBounds, angularBounds);
1224
+
1225
+ dart::math::SupportGeometry foot_support;
1226
+ foot_support.push_back(Eigen::Vector3d(-0.08, 0.05, 0.0));
1227
+ foot_support.push_back(Eigen::Vector3d(-0.18, 0.05, 0.0));
1228
+ foot_support.push_back(Eigen::Vector3d(-0.18, -0.05, 0.0));
1229
+ foot_support.push_back(Eigen::Vector3d(-0.08, -0.05, 0.0));
1230
+
1231
+ Eigen::Isometry3d tf_foot(Eigen::Isometry3d::Identity());
1232
+ double ground_dist = 0.01;
1233
+ tf_foot.translation() = Eigen::Vector3d(0.14, 0.0, -0.136 + ground_dist);
1234
+
1235
+ linearBounds[2] = 1e-8;
1236
+ Eigen::Vector3d ground_offset = ground_dist * Eigen::Vector3d::UnitZ();
1237
+
1238
+ angularBounds[0] = 1e-8;
1239
+ angularBounds[1] = 1e-8;
1240
+
1241
+ EndEffector* l_foot
1242
+ = hubo->getBodyNode("Body_LAR")->createEndEffector("l_foot");
1243
+ l_foot->setDefaultRelativeTransform(tf_foot, true);
1244
+
1245
+ dart::gui::osg::InteractiveFramePtr lf_target(
1246
+ new dart::gui::osg::InteractiveFrame(Frame::World(), "lf_target"));
1247
+
1248
+ l_foot->getIK(true)->setTarget(lf_target);
1249
+
1250
+ l_foot->getIK()->setHierarchyLevel(1);
1251
+
1252
+ l_foot->getIK()->getErrorMethod().setLinearBounds(
1253
+ -linearBounds + ground_offset, linearBounds + ground_offset);
1254
+ l_foot->getIK()->getErrorMethod().setAngularBounds(
1255
+ -angularBounds, angularBounds);
1256
+
1257
+ l_foot->getIK()->setGradientMethod<HuboLegIK>("Body_LHY");
1258
+
1259
+ l_foot->getSupport(true)->setGeometry(foot_support);
1260
+ l_foot->getSupport()->setActive();
1261
+
1262
+ EndEffector* r_foot
1263
+ = hubo->getBodyNode("Body_RAR")->createEndEffector("r_foot");
1264
+ r_foot->setDefaultRelativeTransform(tf_foot, true);
1265
+
1266
+ dart::gui::osg::InteractiveFramePtr rf_target(
1267
+ new dart::gui::osg::InteractiveFrame(Frame::World(), "rf_target"));
1268
+
1269
+ r_foot->getIK(true)->setTarget(rf_target);
1270
+
1271
+ r_foot->getIK()->setHierarchyLevel(1);
1272
+
1273
+ r_foot->getIK()->getErrorMethod().setLinearBounds(
1274
+ -linearBounds + ground_offset, linearBounds + ground_offset);
1275
+ r_foot->getIK()->getErrorMethod().setAngularBounds(
1276
+ -angularBounds, angularBounds);
1277
+
1278
+ r_foot->getIK()->setGradientMethod<HuboLegIK>("Body_RHY");
1279
+
1280
+ r_foot->getSupport(true)->setGeometry(foot_support);
1281
+ r_foot->getSupport()->setActive();
1282
+
1283
+ dart::math::SupportGeometry peg_support;
1284
+ peg_support.push_back(Eigen::Vector3d::Zero());
1285
+
1286
+ linearBounds
1287
+ = Eigen::Vector3d::Constant(std::numeric_limits<double>::infinity());
1288
+ angularBounds = linearBounds;
1289
+
1290
+ Eigen::Isometry3d tf_peg(Eigen::Isometry3d::Identity());
1291
+ tf_peg.translation() = Eigen::Vector3d(0.0, 0.0, 0.09);
1292
+
1293
+ EndEffector* l_peg
1294
+ = hubo->getBodyNode("Body_LWP")->createEndEffector("l_peg");
1295
+ l_peg->setDefaultRelativeTransform(tf_peg, true);
1296
+
1297
+ dart::gui::osg::InteractiveFramePtr lp_target(
1298
+ new dart::gui::osg::InteractiveFrame(Frame::World(), "lp_target"));
1299
+
1300
+ l_peg->getIK(true)->setTarget(lp_target);
1301
+
1302
+ l_peg->getIK()->setGradientMethod<HuboArmIK>("Body_LSP");
1303
+
1304
+ l_peg->getIK()->getErrorMethod().setLinearBounds(-linearBounds, linearBounds);
1305
+ l_peg->getIK()->getErrorMethod().setAngularBounds(
1306
+ -angularBounds, angularBounds);
1307
+
1308
+ l_peg->getSupport(true)->setGeometry(peg_support);
1309
+
1310
+ EndEffector* r_peg
1311
+ = hubo->getBodyNode("Body_RWP")->createEndEffector("r_peg");
1312
+ r_peg->setDefaultRelativeTransform(tf_peg, true);
1313
+
1314
+ dart::gui::osg::InteractiveFramePtr rp_target(
1315
+ new dart::gui::osg::InteractiveFrame(Frame::World(), "rp_target"));
1316
+
1317
+ r_peg->getIK(true)->setTarget(rp_target);
1318
+
1319
+ r_peg->getIK()->setGradientMethod<HuboArmIK>("Body_RSP");
1320
+
1321
+ r_peg->getIK()->getErrorMethod().setLinearBounds(-linearBounds, linearBounds);
1322
+ r_peg->getIK()->getErrorMethod().setAngularBounds(
1323
+ -angularBounds, angularBounds);
1324
+
1325
+ r_peg->getSupport(true)->setGeometry(peg_support);
1326
+
1327
+ double heightChange
1328
+ = -r_foot->getWorldTransform().translation()[2] + ground_dist;
1329
+ hubo->getDof("rootJoint_pos_z")->setPosition(heightChange);
1330
+
1331
+ l_foot->getIK()->getTarget()->setTransform(l_foot->getTransform());
1332
+ r_foot->getIK()->getTarget()->setTransform(r_foot->getTransform());
1333
+ }
1334
+
1335
+ void enableDragAndDrops(dart::gui::osg::Viewer& viewer, const SkeletonPtr& hubo)
1336
+ {
1337
+ // Turn on drag-and-drop for the whole Skeleton
1338
+ for (std::size_t i = 0; i < hubo->getNumBodyNodes(); ++i)
1339
+ viewer.enableDragAndDrop(hubo->getBodyNode(i), false, false);
1340
+
1341
+ for (std::size_t i = 0; i < hubo->getNumEndEffectors(); ++i) {
1342
+ EndEffector* ee = hubo->getEndEffector(i);
1343
+ if (!ee->getIK())
1344
+ continue;
1345
+
1346
+ // Check whether the target is an interactive frame, and add it if it is
1347
+ if (const auto& frame
1348
+ = std::dynamic_pointer_cast<dart::gui::osg::InteractiveFrame>(
1349
+ ee->getIK()->getTarget()))
1350
+ viewer.enableDragAndDrop(frame.get());
1351
+ }
1352
+ }
1353
+
1354
+ void setupWholeBodySolver(const SkeletonPtr& hubo)
1355
+ {
1356
+ std::shared_ptr<dart::optimizer::GradientDescentSolver> solver
1357
+ = std::dynamic_pointer_cast<dart::optimizer::GradientDescentSolver>(
1358
+ hubo->getIK(true)->getSolver());
1359
+
1360
+ std::size_t nDofs = hubo->getNumDofs();
1361
+
1362
+ double default_weight = 0.01;
1363
+ Eigen::VectorXd weights = default_weight * Eigen::VectorXd::Ones(nDofs);
1364
+ weights[2] = 0.0;
1365
+ weights[3] = 0.0;
1366
+ weights[4] = 0.0;
1367
+
1368
+ Eigen::VectorXd lower_posture = Eigen::VectorXd::Constant(
1369
+ nDofs, -std::numeric_limits<double>::infinity());
1370
+ lower_posture[0] = -0.35;
1371
+ lower_posture[1] = -0.35;
1372
+ lower_posture[5] = 0.55;
1373
+
1374
+ Eigen::VectorXd upper_posture = Eigen::VectorXd::Constant(
1375
+ nDofs, std::numeric_limits<double>::infinity());
1376
+ upper_posture[0] = 0.35;
1377
+ upper_posture[1] = 0.50;
1378
+ upper_posture[5] = 0.95;
1379
+
1380
+ std::shared_ptr<RelaxedPosture> objective = std::make_shared<RelaxedPosture>(
1381
+ hubo->getPositions(), lower_posture, upper_posture, weights);
1382
+
1383
+ hubo->getIK()->setObjective(objective);
1384
+
1385
+ std::shared_ptr<dart::constraint::BalanceConstraint> balance
1386
+ = std::make_shared<dart::constraint::BalanceConstraint>(hubo->getIK());
1387
+ hubo->getIK()->getProblem()->addEqConstraint(balance);
1388
+
1389
+ balance->setErrorMethod(dart::constraint::BalanceConstraint::FROM_CENTROID);
1390
+ balance->setBalanceMethod(dart::constraint::BalanceConstraint::SHIFT_SUPPORT);
1391
+
1392
+ solver->setNumMaxIterations(5);
1393
+ }
1394
+
1395
+ int main()
1396
+ {
1397
+ dart::simulation::WorldPtr world(new dart::simulation::World);
1398
+
1399
+ SkeletonPtr hubo = createHubo();
1400
+ setStartupConfiguration(hubo);
1401
+ setupEndEffectors(hubo);
1402
+
1403
+ Eigen::VectorXd positions = hubo->getPositions();
1404
+ // We make a clone to test whether the cloned version behaves the exact same
1405
+ // as the original version.
1406
+ hubo = hubo->cloneSkeleton("hubo_copy");
1407
+ hubo->setPositions(positions);
1408
+
1409
+ world->addSkeleton(hubo);
1410
+ world->addSkeleton(createGround());
1411
+
1412
+ setupWholeBodySolver(hubo);
1413
+
1414
+ ::osg::ref_ptr<TeleoperationWorld> node = new TeleoperationWorld(world, hubo);
1415
+
1416
+ dart::gui::osg::Viewer viewer;
1417
+ viewer.allowSimulation(false);
1418
+ viewer.addWorldNode(node);
1419
+
1420
+ enableDragAndDrops(viewer, hubo);
1421
+
1422
+ viewer.addEventHandler(new InputHandler(&viewer, node, hubo, world));
1423
+
1424
+ double display_elevation = 0.05;
1425
+ viewer.addAttachment(
1426
+ new dart::gui::osg::SupportPolygonVisual(hubo, display_elevation));
1427
+
1428
+ std::cout << viewer.getInstructions() << std::endl;
1429
+
1430
+ std::cout
1431
+ << "Alt + Click: Try to translate a body without changing its "
1432
+ "orientation\n"
1433
+ << "Ctrl + Click: Try to rotate a body without changing its "
1434
+ "translation\n"
1435
+ << "Shift + Click: Move a body using only its parent joint\n"
1436
+ << "1 -> 6: Toggle the interactive target of an EndEffector\n"
1437
+ << "W A S D: Move the robot around the scene\n"
1438
+ << "Q E: Rotate the robot counter-clockwise and clockwise\n"
1439
+ << "F Z: Shift the robot's elevation up and down\n"
1440
+ << "X C: Toggle support on the left and right foot\n"
1441
+ << "R: Optimize the robot's posture\n"
1442
+ << "T: Reset the robot to its relaxed posture\n\n"
1443
+ << " The green polygon is the support polygon of the robot, and the "
1444
+ "blue/red ball is\n"
1445
+ << " the robot's center of mass. The green ball is the centroid of the "
1446
+ "polygon.\n\n"
1447
+ << "Note that this is purely kinematic. Physical simulation is not "
1448
+ "allowed in this app.\n"
1449
+ << std::endl;
1450
+
1451
+ // Set up the window
1452
+ viewer.setUpViewInWindow(0, 0, 1280, 960);
1453
+
1454
+ // Set up the default viewing position
1455
+ viewer.getCameraManipulator()->setHomePosition(
1456
+ ::osg::Vec3(5.34, 3.00, 1.91),
1457
+ ::osg::Vec3(0.00, 0.00, 0.50),
1458
+ ::osg::Vec3(-0.20, -0.08, 0.98));
1459
+
1460
+ // Reset the camera manipulator so that it starts in the new viewing position
1461
+ viewer.setCameraManipulator(viewer.getCameraManipulator());
1462
+
1463
+ viewer.run();
1464
+ }