dartpy 7.0.0.dev0__cp312-cp312-manylinux_2_39_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of dartpy might be problematic. Click here for more details.
- dartpy-7.0.0.dev0.dist-info/METADATA +86 -0
- dartpy-7.0.0.dev0.dist-info/RECORD +994 -0
- dartpy-7.0.0.dev0.dist-info/WHEEL +5 -0
- dartpy-7.0.0.dev0.dist-info/licenses/LICENSE +31 -0
- dartpy.cpython-312-x86_64-linux-gnu.so +0 -0
- dartpy.libs/libBulletCollision-f96eb02c.so.3.25 +0 -0
- dartpy.libs/libBulletDynamics-3cff1f18.so.3.25 +0 -0
- dartpy.libs/libBulletSoftBody-220f01bd.so.3.25 +0 -0
- dartpy.libs/libLinearMath-71568d02.so.3.25 +0 -0
- dartpy.libs/libOpenThreads-8bc434db.so.3.3.1 +0 -0
- dartpy.libs/libSDL2-2-3db87ac0.0.so.0.3200.56 +0 -0
- dartpy.libs/libassimp-44cf3e77.so.5.4.3 +0 -0
- dartpy.libs/libccd-4f119cf4.so.2.0 +0 -0
- dartpy.libs/libconsole_bridge-f26e11cc.so.1.0 +0 -0
- dartpy.libs/libfcl-2607815a.so.0.7.0 +0 -0
- dartpy.libs/libfmt-277170bf.so.11.2.0 +0 -0
- dartpy.libs/libfontconfig-559ff509.so.1.14.0 +0 -0
- dartpy.libs/libfreetype-64806fc6.so.6.20.4 +0 -0
- dartpy.libs/libglfw-6f066845.so.3.4 +0 -0
- dartpy.libs/libimgui-ab87b07d.so +0 -0
- dartpy.libs/libnlopt-78f9bc34.so.1.0.0 +0 -0
- dartpy.libs/liboctomap-38e56f99.so.1.10.0 +0 -0
- dartpy.libs/liboctomath-bff26442.so.1.10.0 +0 -0
- dartpy.libs/libode-caca20fc.so.8.2.0 +0 -0
- dartpy.libs/libosg-e67375e5.so.3.6.5 +0 -0
- dartpy.libs/libosgDB-22ae780f.so.3.6.5 +0 -0
- dartpy.libs/libosgGA-6af4078b.so.3.6.5 +0 -0
- dartpy.libs/libosgManipulator-3270f659.so.3.6.5 +0 -0
- dartpy.libs/libosgShadow-127a8d77.so.3.6.5 +0 -0
- dartpy.libs/libosgText-87d82d87.so.3.6.5 +0 -0
- dartpy.libs/libosgUtil-55896958.so.3.6.5 +0 -0
- dartpy.libs/libosgViewer-76d832e3.so.3.6.5 +0 -0
- dartpy.libs/libpng16-bd65464e.so.16.50.0 +0 -0
- dartpy.libs/libtinyxml2-8d10763c.so.11.0.0 +0 -0
- dartpy.libs/liburdfdom_model-7b26ae88.so.4.0 +0 -0
- dartpy.libs/liburdfdom_model_state-95a5ad6e.so.4.0 +0 -0
- dartpy.libs/liburdfdom_sensor-55a145ea.so.4.0 +0 -0
- dartpy.libs/liburdfdom_world-a32c7194.so.4.0 +0 -0
- dartpy.libs/libvulkan-8caf1954.so.1.4.328 +0 -0
- include/dart/collision/CollisionDetector.hpp +305 -0
- include/dart/collision/CollisionFilter.hpp +126 -0
- include/dart/collision/CollisionGroup.hpp +546 -0
- include/dart/collision/CollisionObject.hpp +90 -0
- include/dart/collision/CollisionOption.hpp +71 -0
- include/dart/collision/CollisionResult.hpp +109 -0
- include/dart/collision/Contact.hpp +103 -0
- include/dart/collision/DistanceFilter.hpp +66 -0
- include/dart/collision/DistanceOption.hpp +80 -0
- include/dart/collision/DistanceResult.hpp +123 -0
- include/dart/collision/Option.hpp +42 -0
- include/dart/collision/RaycastOption.hpp +58 -0
- include/dart/collision/RaycastResult.hpp +80 -0
- include/dart/collision/Result.hpp +42 -0
- include/dart/collision/SmartPointer.hpp +51 -0
- include/dart/collision/all.hpp +17 -0
- include/dart/collision/bullet/BulletCollisionDetector.hpp +168 -0
- include/dart/collision/bullet/BulletCollisionGroup.hpp +98 -0
- include/dart/collision/bullet/BulletCollisionObject.hpp +75 -0
- include/dart/collision/bullet/BulletCollisionShape.hpp +62 -0
- include/dart/collision/bullet/BulletInclude.hpp +47 -0
- include/dart/collision/bullet/BulletTypes.hpp +57 -0
- include/dart/collision/bullet/all.hpp +8 -0
- include/dart/collision/bullet/bullet.hpp +14 -0
- include/dart/collision/bullet/detail/BulletCollisionDispatcher.hpp +70 -0
- include/dart/collision/bullet/detail/BulletOverlapFilterCallback.hpp +72 -0
- include/dart/collision/collision.hpp +14 -0
- include/dart/collision/dart/DARTCollide.hpp +106 -0
- include/dart/collision/dart/DARTCollisionDetector.hpp +109 -0
- include/dart/collision/dart/DARTCollisionGroup.hpp +82 -0
- include/dart/collision/dart/DARTCollisionObject.hpp +63 -0
- include/dart/collision/dart/all.hpp +6 -0
- include/dart/collision/dart/dart.hpp +14 -0
- include/dart/collision/detail/CollisionDetector.hpp +66 -0
- include/dart/collision/detail/CollisionGroup.hpp +287 -0
- include/dart/collision/detail/Contact-impl.hpp +56 -0
- include/dart/collision/detail/UnorderedPairs.hpp +153 -0
- include/dart/collision/fcl/BackwardCompatibility.hpp +145 -0
- include/dart/collision/fcl/CollisionShapes.hpp +374 -0
- include/dart/collision/fcl/FCLCollisionDetector.hpp +204 -0
- include/dart/collision/fcl/FCLCollisionGroup.hpp +95 -0
- include/dart/collision/fcl/FCLCollisionObject.hpp +72 -0
- include/dart/collision/fcl/FCLTypes.hpp +62 -0
- include/dart/collision/fcl/TriTriIntersectionTest.hpp +17 -0
- include/dart/collision/fcl/all.hpp +9 -0
- include/dart/collision/fcl/fcl.hpp +14 -0
- include/dart/collision/fcl/tri_tri_intersection_test.hpp +332 -0
- include/dart/collision/ode/OdeCollisionDetector.hpp +131 -0
- include/dart/collision/ode/OdeCollisionGroup.hpp +87 -0
- include/dart/collision/ode/OdeCollisionObject.hpp +89 -0
- include/dart/collision/ode/OdeTypes.hpp +51 -0
- include/dart/collision/ode/all.hpp +6 -0
- include/dart/collision/ode/detail/OdeBox.hpp +58 -0
- include/dart/collision/ode/detail/OdeCapsule.hpp +58 -0
- include/dart/collision/ode/detail/OdeCylinder.hpp +58 -0
- include/dart/collision/ode/detail/OdeGeom.hpp +83 -0
- include/dart/collision/ode/detail/OdeHeightmap-impl.hpp +170 -0
- include/dart/collision/ode/detail/OdeHeightmap.hpp +70 -0
- include/dart/collision/ode/detail/OdeMesh.hpp +83 -0
- include/dart/collision/ode/detail/OdePlane.hpp +67 -0
- include/dart/collision/ode/detail/OdeSphere.hpp +58 -0
- include/dart/collision/ode/ode.hpp +14 -0
- include/dart/common/Aspect.hpp +215 -0
- include/dart/common/AspectWithVersion.hpp +180 -0
- include/dart/common/CAllocator.hpp +65 -0
- include/dart/common/Castable.hpp +102 -0
- include/dart/common/ClassWithVirtualBase.hpp +47 -0
- include/dart/common/Cloneable.hpp +327 -0
- include/dart/common/Composite.hpp +205 -0
- include/dart/common/CompositeJoiner.hpp +160 -0
- include/dart/common/Console.hpp +75 -0
- include/dart/common/Deprecated.hpp +126 -0
- include/dart/common/EmbeddedAspect.hpp +466 -0
- include/dart/common/Empty.hpp +55 -0
- include/dart/common/Factory.hpp +146 -0
- include/dart/common/Filesystem.hpp +112 -0
- include/dart/common/FreeListAllocator.hpp +162 -0
- include/dart/common/IncludeWindows.hpp +50 -0
- include/dart/common/LocalResource.hpp +76 -0
- include/dart/common/LocalResourceRetriever.hpp +63 -0
- include/dart/common/LockableReference.hpp +166 -0
- include/dart/common/Logging.hpp +146 -0
- include/dart/common/Macros.hpp +78 -0
- include/dart/common/Memory.hpp +215 -0
- include/dart/common/MemoryAllocator.hpp +120 -0
- include/dart/common/MemoryAllocatorDebugger.hpp +98 -0
- include/dart/common/MemoryManager.hpp +189 -0
- include/dart/common/Metaprogramming.hpp +68 -0
- include/dart/common/NameManager.hpp +184 -0
- include/dart/common/Observer.hpp +85 -0
- include/dart/common/Optional.hpp +48 -0
- include/dart/common/Platform.hpp +92 -0
- include/dart/common/PoolAllocator.hpp +141 -0
- include/dart/common/Profile.hpp +56 -0
- include/dart/common/ProxyAspect.hpp +93 -0
- include/dart/common/RequiresAspect.hpp +79 -0
- include/dart/common/Resource.hpp +96 -0
- include/dart/common/ResourceRetriever.hpp +82 -0
- include/dart/common/SharedLibrary.hpp +201 -0
- include/dart/common/Signal.hpp +250 -0
- include/dart/common/Singleton.hpp +85 -0
- include/dart/common/SmartPointer.hpp +63 -0
- include/dart/common/SpecializedForAspect.hpp +207 -0
- include/dart/common/StlAllocator.hpp +111 -0
- include/dart/common/StlHelpers.hpp +61 -0
- include/dart/common/Stopwatch.hpp +143 -0
- include/dart/common/String.hpp +71 -0
- include/dart/common/SubPtr.hpp +17 -0
- include/dart/common/Subject.hpp +84 -0
- include/dart/common/Timer.hpp +119 -0
- include/dart/common/Uri.hpp +229 -0
- include/dart/common/VersionCounter.hpp +68 -0
- include/dart/common/Virtual.hpp +51 -0
- include/dart/common/all.hpp +53 -0
- include/dart/common/common.hpp +14 -0
- include/dart/common/detail/Aspect.hpp +102 -0
- include/dart/common/detail/AspectWithVersion.hpp +455 -0
- include/dart/common/detail/Castable-impl.hpp +109 -0
- include/dart/common/detail/Cloneable.hpp +638 -0
- include/dart/common/detail/Composite.hpp +241 -0
- include/dart/common/detail/CompositeData.hpp +393 -0
- include/dart/common/detail/CompositeJoiner.hpp +128 -0
- include/dart/common/detail/ConnectionBody.hpp +157 -0
- include/dart/common/detail/EmbeddedAspect.hpp +487 -0
- include/dart/common/detail/Factory-impl.hpp +200 -0
- include/dart/common/detail/LockableReference-impl.hpp +156 -0
- include/dart/common/detail/Logging-impl.hpp +162 -0
- include/dart/common/detail/Memory-impl.hpp +66 -0
- include/dart/common/detail/MemoryAllocator-impl.hpp +97 -0
- include/dart/common/detail/MemoryAllocatorDebugger-impl.hpp +201 -0
- include/dart/common/detail/MemoryManager-impl.hpp +102 -0
- include/dart/common/detail/Metaprogramming-impl.hpp +89 -0
- include/dart/common/detail/NameManager.hpp +301 -0
- include/dart/common/detail/NoOp.hpp +57 -0
- include/dart/common/detail/ProxyAspect.hpp +172 -0
- include/dart/common/detail/RequiresAspect.hpp +51 -0
- include/dart/common/detail/SharedLibraryManager.hpp +106 -0
- include/dart/common/detail/Signal.hpp +242 -0
- include/dart/common/detail/Singleton-impl.hpp +74 -0
- include/dart/common/detail/SpecializedForAspect.hpp +331 -0
- include/dart/common/detail/StlAllocator-impl.hpp +108 -0
- include/dart/common/detail/Stopwatch-impl.hpp +242 -0
- include/dart/common/detail/SubPtr.hpp +17 -0
- include/dart/common/detail/TemplateJoinerDispatchMacro.hpp +59 -0
- include/dart/common/detail/sub_ptr.hpp +139 -0
- include/dart/common/sub_ptr.hpp +103 -0
- include/dart/config.hpp +100 -0
- include/dart/constraint/BalanceConstraint.hpp +202 -0
- include/dart/constraint/BallJointConstraint.hpp +142 -0
- include/dart/constraint/BoxedLcpConstraintSolver.hpp +182 -0
- include/dart/constraint/BoxedLcpSolver.hpp +101 -0
- include/dart/constraint/ConstrainedGroup.hpp +120 -0
- include/dart/constraint/ConstraintBase.hpp +141 -0
- include/dart/constraint/ConstraintSolver.hpp +325 -0
- include/dart/constraint/ContactConstraint.hpp +286 -0
- include/dart/constraint/ContactSurface.hpp +191 -0
- include/dart/constraint/DantzigBoxedLcpSolver.hpp +71 -0
- include/dart/constraint/DantzigLCPSolver.hpp +87 -0
- include/dart/constraint/DynamicJointConstraint.hpp +120 -0
- include/dart/constraint/JointConstraint.hpp +182 -0
- include/dart/constraint/JointCoulombFrictionConstraint.hpp +149 -0
- include/dart/constraint/JointLimitConstraint.hpp +185 -0
- include/dart/constraint/LCPSolver.hpp +71 -0
- include/dart/constraint/MimicMotorConstraint.hpp +164 -0
- include/dart/constraint/PGSLCPSolver.hpp +109 -0
- include/dart/constraint/PgsBoxedLcpSolver.hpp +106 -0
- include/dart/constraint/ServoMotorConstraint.hpp +151 -0
- include/dart/constraint/SmartPointer.hpp +69 -0
- include/dart/constraint/SoftContactConstraint.hpp +262 -0
- include/dart/constraint/WeldJointConstraint.hpp +133 -0
- include/dart/constraint/all.hpp +25 -0
- include/dart/constraint/constraint.hpp +14 -0
- include/dart/constraint/detail/ConstraintSolver-impl.hpp +78 -0
- include/dart/dart.hpp +44 -0
- include/dart/dynamics/ArrowShape.hpp +121 -0
- include/dart/dynamics/AssimpInputResourceAdaptor.hpp +129 -0
- include/dart/dynamics/BallJoint.hpp +143 -0
- include/dart/dynamics/BodyNode.hpp +1279 -0
- include/dart/dynamics/BoxShape.hpp +90 -0
- include/dart/dynamics/Branch.hpp +107 -0
- include/dart/dynamics/CapsuleShape.hpp +105 -0
- include/dart/dynamics/Chain.hpp +142 -0
- include/dart/dynamics/CompositeNode.hpp +114 -0
- include/dart/dynamics/ConeShape.hpp +107 -0
- include/dart/dynamics/CylinderShape.hpp +96 -0
- include/dart/dynamics/DegreeOfFreedom.hpp +415 -0
- include/dart/dynamics/EllipsoidShape.hpp +115 -0
- include/dart/dynamics/EndEffector.hpp +158 -0
- include/dart/dynamics/Entity.hpp +258 -0
- include/dart/dynamics/EntityNode.hpp +77 -0
- include/dart/dynamics/EulerJoint.hpp +174 -0
- include/dart/dynamics/FixedFrame.hpp +105 -0
- include/dart/dynamics/FixedJacobianNode.hpp +168 -0
- include/dart/dynamics/Frame.hpp +388 -0
- include/dart/dynamics/FreeJoint.hpp +369 -0
- include/dart/dynamics/GenericJoint.hpp +825 -0
- include/dart/dynamics/Group.hpp +270 -0
- include/dart/dynamics/HeightmapShape.hpp +195 -0
- include/dart/dynamics/HierarchicalIK.hpp +419 -0
- include/dart/dynamics/IkFast.hpp +277 -0
- include/dart/dynamics/Inertia.hpp +176 -0
- include/dart/dynamics/InvalidIndex.hpp +46 -0
- include/dart/dynamics/InverseKinematics.hpp +1401 -0
- include/dart/dynamics/JacobianNode.hpp +312 -0
- include/dart/dynamics/Joint.hpp +1128 -0
- include/dart/dynamics/LineSegmentShape.hpp +140 -0
- include/dart/dynamics/Linkage.hpp +246 -0
- include/dart/dynamics/Marker.hpp +126 -0
- include/dart/dynamics/MeshShape.hpp +225 -0
- include/dart/dynamics/MetaSkeleton.hpp +1034 -0
- include/dart/dynamics/MimicDofProperties.hpp +62 -0
- include/dart/dynamics/MultiSphereConvexHullShape.hpp +111 -0
- include/dart/dynamics/MultiSphereShape.hpp +42 -0
- include/dart/dynamics/Node.hpp +273 -0
- include/dart/dynamics/NodeManagerJoiner.hpp +190 -0
- include/dart/dynamics/PlanarJoint.hpp +161 -0
- include/dart/dynamics/PlaneShape.hpp +105 -0
- include/dart/dynamics/PointCloudShape.hpp +186 -0
- include/dart/dynamics/PointMass.hpp +709 -0
- include/dart/dynamics/PrismaticJoint.hpp +120 -0
- include/dart/dynamics/PyramidShape.hpp +122 -0
- include/dart/dynamics/ReferentialSkeleton.hpp +550 -0
- include/dart/dynamics/RevoluteJoint.hpp +120 -0
- include/dart/dynamics/ScrewJoint.hpp +126 -0
- include/dart/dynamics/Shape.hpp +231 -0
- include/dart/dynamics/ShapeFrame.hpp +291 -0
- include/dart/dynamics/ShapeNode.hpp +134 -0
- include/dart/dynamics/SharedLibraryIkFast.hpp +147 -0
- include/dart/dynamics/SimpleFrame.hpp +247 -0
- include/dart/dynamics/Skeleton.hpp +1350 -0
- include/dart/dynamics/SmartPointer.hpp +185 -0
- include/dart/dynamics/SoftBodyNode.hpp +472 -0
- include/dart/dynamics/SoftMeshShape.hpp +100 -0
- include/dart/dynamics/SpecializedNodeManager.hpp +230 -0
- include/dart/dynamics/SphereShape.hpp +89 -0
- include/dart/dynamics/TemplatedJacobianNode.hpp +128 -0
- include/dart/dynamics/TranslationalJoint.hpp +105 -0
- include/dart/dynamics/TranslationalJoint2D.hpp +156 -0
- include/dart/dynamics/UniversalJoint.hpp +128 -0
- include/dart/dynamics/VoxelGridShape.hpp +171 -0
- include/dart/dynamics/WeldJoint.hpp +116 -0
- include/dart/dynamics/ZeroDofJoint.hpp +562 -0
- include/dart/dynamics/all.hpp +69 -0
- include/dart/dynamics/detail/BasicNodeManager.hpp +539 -0
- include/dart/dynamics/detail/BodyNode.hpp +344 -0
- include/dart/dynamics/detail/BodyNodeAspect.hpp +177 -0
- include/dart/dynamics/detail/BodyNodePtr.hpp +351 -0
- include/dart/dynamics/detail/CompositeNode.hpp +93 -0
- include/dart/dynamics/detail/DegreeOfFreedomPtr.hpp +338 -0
- include/dart/dynamics/detail/EndEffectorAspect.hpp +106 -0
- include/dart/dynamics/detail/EntityNode.hpp +81 -0
- include/dart/dynamics/detail/EntityNodeAspect.hpp +101 -0
- include/dart/dynamics/detail/EulerJointAspect.hpp +93 -0
- include/dart/dynamics/detail/FixedFrameAspect.hpp +58 -0
- include/dart/dynamics/detail/FixedJacobianNode.hpp +55 -0
- include/dart/dynamics/detail/GenericJoint.hpp +2471 -0
- include/dart/dynamics/detail/GenericJointAspect.hpp +353 -0
- include/dart/dynamics/detail/HeightmapShape-impl.hpp +243 -0
- include/dart/dynamics/detail/InverseKinematics.hpp +83 -0
- include/dart/dynamics/detail/InverseKinematicsPtr.hpp +341 -0
- include/dart/dynamics/detail/JointAspect.hpp +161 -0
- include/dart/dynamics/detail/JointPtr.hpp +293 -0
- include/dart/dynamics/detail/MarkerAspect.hpp +68 -0
- include/dart/dynamics/detail/MetaSkeleton-impl.hpp +151 -0
- include/dart/dynamics/detail/Node.hpp +532 -0
- include/dart/dynamics/detail/NodeManagerJoiner.hpp +184 -0
- include/dart/dynamics/detail/NodePtr.hpp +259 -0
- include/dart/dynamics/detail/PlanarJointAspect.hpp +136 -0
- include/dart/dynamics/detail/PrismaticJointAspect.hpp +85 -0
- include/dart/dynamics/detail/RevoluteJointAspect.hpp +86 -0
- include/dart/dynamics/detail/ScrewJointAspect.hpp +90 -0
- include/dart/dynamics/detail/ShapeFrameAspect.hpp +169 -0
- include/dart/dynamics/detail/ShapeNode.hpp +51 -0
- include/dart/dynamics/detail/Skeleton.hpp +92 -0
- include/dart/dynamics/detail/SkeletonAspect.hpp +181 -0
- include/dart/dynamics/detail/SoftBodyNodeAspect.hpp +132 -0
- include/dart/dynamics/detail/SpecializedNodeManager.hpp +324 -0
- include/dart/dynamics/detail/TemplatedJacobianNode.hpp +294 -0
- include/dart/dynamics/detail/TranslationalJoint2DAspect.hpp +140 -0
- include/dart/dynamics/detail/UniversalJointAspect.hpp +86 -0
- include/dart/dynamics/dynamics.hpp +14 -0
- include/dart/dynamics/ikfast.h +345 -0
- include/dart/external/convhull_3d/convhull_3d.h +1878 -0
- include/dart/external/convhull_3d/safe_convhull_3d.h +53 -0
- include/dart/external/odelcpsolver/common.h +418 -0
- include/dart/external/odelcpsolver/error.h +62 -0
- include/dart/external/odelcpsolver/lcp.h +75 -0
- include/dart/external/odelcpsolver/matrix.h +277 -0
- include/dart/external/odelcpsolver/misc.h +82 -0
- include/dart/external/odelcpsolver/odeconfig.h +110 -0
- include/dart/gui/osg/DefaultEventHandler.hpp +237 -0
- include/dart/gui/osg/DragAndDrop.hpp +360 -0
- include/dart/gui/osg/GridVisual.hpp +218 -0
- include/dart/gui/osg/ImGuiHandler.hpp +113 -0
- include/dart/gui/osg/ImGuiViewer.hpp +83 -0
- include/dart/gui/osg/ImGuiWidget.hpp +91 -0
- include/dart/gui/osg/IncludeImGui.hpp +75 -0
- include/dart/gui/osg/InteractiveFrame.hpp +170 -0
- include/dart/gui/osg/MouseEventHandler.hpp +76 -0
- include/dart/gui/osg/RealTimeWorldNode.hpp +126 -0
- include/dart/gui/osg/ShapeFrameNode.hpp +117 -0
- include/dart/gui/osg/SupportPolygonVisual.hpp +202 -0
- include/dart/gui/osg/TrackballManipulator.hpp +97 -0
- include/dart/gui/osg/Utils.hpp +120 -0
- include/dart/gui/osg/Viewer.hpp +427 -0
- include/dart/gui/osg/WorldNode.hpp +211 -0
- include/dart/gui/osg/all.hpp +19 -0
- include/dart/gui/osg/detail/CameraModeCallback.hpp +82 -0
- include/dart/gui/osg/detail/Utils-impl.hpp +160 -0
- include/dart/gui/osg/osg.hpp +14 -0
- include/dart/gui/osg/render/BoxShapeNode.hpp +74 -0
- include/dart/gui/osg/render/CapsuleShapeNode.hpp +75 -0
- include/dart/gui/osg/render/ConeShapeNode.hpp +74 -0
- include/dart/gui/osg/render/CylinderShapeNode.hpp +75 -0
- include/dart/gui/osg/render/EllipsoidShapeNode.hpp +76 -0
- include/dart/gui/osg/render/HeightmapShapeNode.hpp +485 -0
- include/dart/gui/osg/render/LineSegmentShapeNode.hpp +75 -0
- include/dart/gui/osg/render/MeshShapeNode.hpp +86 -0
- include/dart/gui/osg/render/MultiSphereShapeNode.hpp +76 -0
- include/dart/gui/osg/render/PlaneShapeNode.hpp +75 -0
- include/dart/gui/osg/render/PointCloudShapeNode.hpp +85 -0
- include/dart/gui/osg/render/PyramidShapeNode.hpp +75 -0
- include/dart/gui/osg/render/ShapeNode.hpp +126 -0
- include/dart/gui/osg/render/SoftMeshShapeNode.hpp +75 -0
- include/dart/gui/osg/render/SphereShapeNode.hpp +76 -0
- include/dart/gui/osg/render/VoxelGridShapeNode.hpp +83 -0
- include/dart/gui/osg/render/WarningShapeNode.hpp +64 -0
- include/dart/gui/osg/render/all.hpp +19 -0
- include/dart/gui/osg/render/render.hpp +14 -0
- include/dart/integration/EulerIntegrator.hpp +64 -0
- include/dart/integration/Integrator.hpp +104 -0
- include/dart/integration/RK4Integrator.hpp +68 -0
- include/dart/integration/SemiImplicitEulerIntegrator.hpp +64 -0
- include/dart/integration/all.hpp +6 -0
- include/dart/integration/integration.hpp +14 -0
- include/dart/lcpsolver/Lemke.hpp +54 -0
- include/dart/lcpsolver/ODELCPSolver.hpp +88 -0
- include/dart/lcpsolver/all.hpp +4 -0
- include/dart/lcpsolver/lcpsolver.hpp +14 -0
- include/dart/math/ConfigurationSpace.hpp +144 -0
- include/dart/math/Constants.hpp +79 -0
- include/dart/math/Geometry.hpp +659 -0
- include/dart/math/Helpers.hpp +481 -0
- include/dart/math/Icosphere.hpp +106 -0
- include/dart/math/MathTypes.hpp +100 -0
- include/dart/math/Mesh.hpp +108 -0
- include/dart/math/Random.hpp +225 -0
- include/dart/math/TriMesh.hpp +121 -0
- include/dart/math/all.hpp +11 -0
- include/dart/math/detail/ConfigurationSpace.hpp +235 -0
- include/dart/math/detail/Geometry-impl.hpp +126 -0
- include/dart/math/detail/Icosphere-impl.hpp +214 -0
- include/dart/math/detail/Mesh-impl.hpp +151 -0
- include/dart/math/detail/Random-impl.hpp +353 -0
- include/dart/math/detail/TriMesh-impl.hpp +202 -0
- include/dart/math/math.hpp +14 -0
- include/dart/optimizer/Function.hpp +203 -0
- include/dart/optimizer/GenericMultiObjectiveProblem.hpp +174 -0
- include/dart/optimizer/GradientDescentSolver.hpp +240 -0
- include/dart/optimizer/MultiObjectiveProblem.hpp +168 -0
- include/dart/optimizer/MultiObjectiveSolver.hpp +168 -0
- include/dart/optimizer/Population.hpp +108 -0
- include/dart/optimizer/Problem.hpp +191 -0
- include/dart/optimizer/Solver.hpp +182 -0
- include/dart/optimizer/all.hpp +10 -0
- include/dart/optimizer/ipopt/BackwardCompatibility.hpp +43 -0
- include/dart/optimizer/ipopt/IpoptSolver.hpp +223 -0
- include/dart/optimizer/ipopt/all.hpp +4 -0
- include/dart/optimizer/ipopt/ipopt.hpp +14 -0
- include/dart/optimizer/nlopt/NloptSolver.hpp +212 -0
- include/dart/optimizer/nlopt/all.hpp +3 -0
- include/dart/optimizer/nlopt/nlopt.hpp +14 -0
- include/dart/optimizer/optimizer.hpp +14 -0
- include/dart/simulation/Recording.hpp +118 -0
- include/dart/simulation/SmartPointer.hpp +46 -0
- include/dart/simulation/World.hpp +405 -0
- include/dart/simulation/all.hpp +5 -0
- include/dart/simulation/detail/World-impl.hpp +129 -0
- include/dart/simulation/simulation.hpp +14 -0
- include/dart/utils/C3D.hpp +107 -0
- include/dart/utils/CompositeResourceRetriever.hpp +97 -0
- include/dart/utils/DartResourceRetriever.hpp +104 -0
- include/dart/utils/FileInfoC3D.hpp +91 -0
- include/dart/utils/FileInfoDof.hpp +109 -0
- include/dart/utils/FileInfoWorld.hpp +75 -0
- include/dart/utils/PackageResourceRetriever.hpp +118 -0
- include/dart/utils/SkelParser.hpp +70 -0
- include/dart/utils/VskParser.hpp +108 -0
- include/dart/utils/XmlHelpers.hpp +243 -0
- include/dart/utils/all.hpp +14 -0
- include/dart/utils/detail/XmlHelpers-impl.hpp +213 -0
- include/dart/utils/mjcf/MjcfParser.hpp +80 -0
- include/dart/utils/mjcf/all.hpp +3 -0
- include/dart/utils/mjcf/mjcf.hpp +14 -0
- include/dart/utils/sdf/SdfParser.hpp +98 -0
- include/dart/utils/sdf/all.hpp +3 -0
- include/dart/utils/sdf/sdf.hpp +14 -0
- include/dart/utils/urdf/BackwardCompatibility.hpp +52 -0
- include/dart/utils/urdf/DartLoader.hpp +277 -0
- include/dart/utils/urdf/IncludeUrdf.hpp +47 -0
- include/dart/utils/urdf/URDFTypes.hpp +42 -0
- include/dart/utils/urdf/all.hpp +5 -0
- include/dart/utils/urdf/urdf.hpp +14 -0
- include/dart/utils/urdf/urdf_world_parser.hpp +83 -0
- include/dart/utils/utils.hpp +14 -0
- lib64/libdart-collision-bullet.a +0 -0
- lib64/libdart-collision-ode.a +0 -0
- lib64/libdart-external-odelcpsolver.a +0 -0
- lib64/libdart-gui-osg.a +0 -0
- lib64/libdart-optimizer-ipopt.a +0 -0
- lib64/libdart-optimizer-nlopt.a +0 -0
- lib64/libdart-utils-urdf.a +0 -0
- lib64/libdart-utils.a +0 -0
- lib64/libdart.a +0 -0
- lib64/pkgconfig/dart.pc +12 -0
- share/dart/cmake/DARTConfig.cmake +194 -0
- share/dart/cmake/DARTConfigVersion.cmake +65 -0
- share/dart/cmake/DARTFindBullet.cmake +96 -0
- share/dart/cmake/DARTFindEigen3.cmake +9 -0
- share/dart/cmake/DARTFindIPOPT.cmake +20 -0
- share/dart/cmake/DARTFindNLOPT.cmake +17 -0
- share/dart/cmake/DARTFindODE.cmake +23 -0
- share/dart/cmake/DARTFindOpenSceneGraph.cmake +69 -0
- share/dart/cmake/DARTFindassimp.cmake +18 -0
- share/dart/cmake/DARTFindfcl.cmake +23 -0
- share/dart/cmake/DARTFindfmt.cmake +9 -0
- share/dart/cmake/DARTFindimgui.cmake +21 -0
- share/dart/cmake/DARTFindoctomap.cmake +17 -0
- share/dart/cmake/DARTFindspdlog.cmake +9 -0
- share/dart/cmake/DARTFindtinyxml2.cmake +27 -0
- share/dart/cmake/DARTFindurdfdom.cmake +29 -0
- share/dart/cmake/FindIPOPT.cmake +54 -0
- share/dart/cmake/FindNLOPT.cmake +54 -0
- share/dart/cmake/FindODE.cmake +54 -0
- share/dart/cmake/Findassimp.cmake +56 -0
- share/dart/cmake/Findfcl.cmake +67 -0
- share/dart/cmake/Findimgui.cmake +70 -0
- share/dart/cmake/Findtinyxml2.cmake +54 -0
- share/dart/cmake/dart_collision-bulletComponent.cmake +19 -0
- share/dart/cmake/dart_collision-bulletTargets-release.cmake +19 -0
- share/dart/cmake/dart_collision-bulletTargets.cmake +122 -0
- share/dart/cmake/dart_collision-odeComponent.cmake +19 -0
- share/dart/cmake/dart_collision-odeTargets-release.cmake +19 -0
- share/dart/cmake/dart_collision-odeTargets.cmake +122 -0
- share/dart/cmake/dart_dartComponent.cmake +19 -0
- share/dart/cmake/dart_dartTargets-release.cmake +19 -0
- share/dart/cmake/dart_dartTargets.cmake +125 -0
- share/dart/cmake/dart_external-odelcpsolverComponent.cmake +19 -0
- share/dart/cmake/dart_external-odelcpsolverTargets-release.cmake +19 -0
- share/dart/cmake/dart_external-odelcpsolverTargets.cmake +106 -0
- share/dart/cmake/dart_gui-osgComponent.cmake +19 -0
- share/dart/cmake/dart_gui-osgTargets-release.cmake +19 -0
- share/dart/cmake/dart_gui-osgTargets.cmake +122 -0
- share/dart/cmake/dart_optimizer-ipoptComponent.cmake +19 -0
- share/dart/cmake/dart_optimizer-ipoptTargets-release.cmake +19 -0
- share/dart/cmake/dart_optimizer-ipoptTargets.cmake +123 -0
- share/dart/cmake/dart_optimizer-nloptComponent.cmake +19 -0
- share/dart/cmake/dart_optimizer-nloptTargets-release.cmake +19 -0
- share/dart/cmake/dart_optimizer-nloptTargets.cmake +123 -0
- share/dart/cmake/dart_utils-urdfComponent.cmake +19 -0
- share/dart/cmake/dart_utils-urdfTargets-release.cmake +19 -0
- share/dart/cmake/dart_utils-urdfTargets.cmake +122 -0
- share/dart/cmake/dart_utilsComponent.cmake +19 -0
- share/dart/cmake/dart_utilsTargets-release.cmake +19 -0
- share/dart/cmake/dart_utilsTargets.cmake +122 -0
- share/dart/package.xml +42 -0
- share/doc/dart/data/c3d/nick_freeform_001.c3d +0 -0
- share/doc/dart/data/c3d/squat.c3d +0 -0
- share/doc/dart/data/dof/RHand.dof +205 -0
- share/doc/dart/data/dof/fixedHand.dof +205 -0
- share/doc/dart/data/dof/init_Tpose.dof +240 -0
- share/doc/dart/data/dof/same.dof +1003 -0
- share/doc/dart/data/dof/simMotion.dof +1817 -0
- share/doc/dart/data/dof/simMotion1.dof +1355 -0
- share/doc/dart/data/etc/fort.4 +43 -0
- share/doc/dart/data/humanJointLimits/neuralnets/net-larm +0 -0
- share/doc/dart/data/humanJointLimits/neuralnets/net-lleg +0 -0
- share/doc/dart/data/mjcf/openai/LICENSE.md +36 -0
- share/doc/dart/data/mjcf/openai/ant.xml +81 -0
- share/doc/dart/data/mjcf/openai/half_cheetah.xml +96 -0
- share/doc/dart/data/mjcf/openai/hopper.xml +50 -0
- share/doc/dart/data/mjcf/openai/humanoid.xml +121 -0
- share/doc/dart/data/mjcf/openai/humanoidstandup.xml +121 -0
- share/doc/dart/data/mjcf/openai/inverted_double_pendulum.xml +47 -0
- share/doc/dart/data/mjcf/openai/inverted_pendulum.xml +27 -0
- share/doc/dart/data/mjcf/openai/point.xml +31 -0
- share/doc/dart/data/mjcf/openai/pusher.xml +91 -0
- share/doc/dart/data/mjcf/openai/reacher.xml +39 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/pick_and_place.xml +35 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/push.xml +32 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/reach.xml +26 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/robot.xml +123 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/shared.xml +66 -0
- share/doc/dart/data/mjcf/openai/robotics/fetch/slide.xml +32 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/.get +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/base_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/bellows_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/elbow_flex_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/estop_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/forearm_roll_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/gripper_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/head_pan_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/head_tilt_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/l_wheel_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/laser_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/r_wheel_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/shoulder_lift_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/shoulder_pan_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/torso_fixed_link.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/torso_lift_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/upperarm_roll_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/wrist_flex_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/stls/fetch/wrist_roll_link_collision.stl +0 -0
- share/doc/dart/data/mjcf/openai/robotics/textures/block.png +0 -0
- share/doc/dart/data/mjcf/openai/robotics/textures/block_hidden.png +0 -0
- share/doc/dart/data/mjcf/openai/striker.xml +101 -0
- share/doc/dart/data/mjcf/openai/swimmer.xml +39 -0
- share/doc/dart/data/mjcf/openai/thrower.xml +127 -0
- share/doc/dart/data/mjcf/openai/walker2d.xml +62 -0
- share/doc/dart/data/mjcf/test/default.xml +17 -0
- share/doc/dart/data/mjcf/test/include_default.xml +8 -0
- share/doc/dart/data/mjcf/test/include_main.xml +12 -0
- share/doc/dart/data/obj/Body_Hip.obj +22830 -0
- share/doc/dart/data/obj/BoxSmall.obj +23 -0
- share/doc/dart/data/obj/foot.obj +10970 -0
- share/doc/dart/data/other/torus1.path +11991 -0
- share/doc/dart/data/other/torus1.tris +5329 -0
- share/doc/dart/data/other/torus2.path +11991 -0
- share/doc/dart/data/other/torus2.tris +12961 -0
- share/doc/dart/data/screencap/.KEEP +0 -0
- share/doc/dart/data/sdf/atlas/atlas_v3.urdf +914 -0
- share/doc/dart/data/sdf/atlas/atlas_v3_no_head.sdf +1541 -0
- share/doc/dart/data/sdf/atlas/atlas_v3_no_head.urdf +914 -0
- share/doc/dart/data/sdf/atlas/atlas_v3_no_head_soft_feet.sdf +1567 -0
- share/doc/dart/data/sdf/atlas/ground.urdf +28 -0
- share/doc/dart/data/sdf/atlas/head.dae +8607 -0
- share/doc/dart/data/sdf/atlas/head.stl +0 -0
- share/doc/dart/data/sdf/atlas/head_camera.dae +2326 -0
- share/doc/dart/data/sdf/atlas/head_camera.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_clav.dae +1278 -0
- share/doc/dart/data/sdf/atlas/l_clav.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_farm.dae +1204 -0
- share/doc/dart/data/sdf/atlas/l_farm.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_foot.dae +1330 -0
- share/doc/dart/data/sdf/atlas/l_foot.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_hand.dae +964 -0
- share/doc/dart/data/sdf/atlas/l_hand.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_larm.dae +1378 -0
- share/doc/dart/data/sdf/atlas/l_larm.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_lglut.dae +897 -0
- share/doc/dart/data/sdf/atlas/l_lglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_lleg.dae +6660 -0
- share/doc/dart/data/sdf/atlas/l_lleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_scap.dae +1531 -0
- share/doc/dart/data/sdf/atlas/l_scap.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_talus.dae +374 -0
- share/doc/dart/data/sdf/atlas/l_talus.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_uarm.dae +1204 -0
- share/doc/dart/data/sdf/atlas/l_uarm.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_uglut.dae +398 -0
- share/doc/dart/data/sdf/atlas/l_uglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/l_uleg.dae +9087 -0
- share/doc/dart/data/sdf/atlas/l_uleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/ltorso.dae +614 -0
- share/doc/dart/data/sdf/atlas/ltorso.stl +0 -0
- share/doc/dart/data/sdf/atlas/mtorso.dae +266 -0
- share/doc/dart/data/sdf/atlas/mtorso.stl +0 -0
- share/doc/dart/data/sdf/atlas/pelvis.dae +8727 -0
- share/doc/dart/data/sdf/atlas/pelvis.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_clav.dae +1278 -0
- share/doc/dart/data/sdf/atlas/r_clav.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_farm.dae +1204 -0
- share/doc/dart/data/sdf/atlas/r_farm.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_foot.dae +1330 -0
- share/doc/dart/data/sdf/atlas/r_foot.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_hand.dae +904 -0
- share/doc/dart/data/sdf/atlas/r_hand.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_larm.dae +1378 -0
- share/doc/dart/data/sdf/atlas/r_larm.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_lglut.dae +897 -0
- share/doc/dart/data/sdf/atlas/r_lglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_lleg.dae +6661 -0
- share/doc/dart/data/sdf/atlas/r_lleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_scap.dae +1531 -0
- share/doc/dart/data/sdf/atlas/r_scap.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_talus.dae +374 -0
- share/doc/dart/data/sdf/atlas/r_talus.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_uarm.dae +1144 -0
- share/doc/dart/data/sdf/atlas/r_uarm.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_uglut.dae +398 -0
- share/doc/dart/data/sdf/atlas/r_uglut.stl +0 -0
- share/doc/dart/data/sdf/atlas/r_uleg.dae +9087 -0
- share/doc/dart/data/sdf/atlas/r_uleg.stl +0 -0
- share/doc/dart/data/sdf/atlas/utorso.dae +28342 -0
- share/doc/dart/data/sdf/atlas/utorso.stl +0 -0
- share/doc/dart/data/sdf/atlas/utorso_mod.dae +16508 -0
- share/doc/dart/data/sdf/atlas/utorso_mod.stl +0 -0
- share/doc/dart/data/sdf/atlas/utorso_pack.dae +8521 -0
- share/doc/dart/data/sdf/atlas/utorso_pack.stl +0 -0
- share/doc/dart/data/sdf/benchmark.world +2510 -0
- share/doc/dart/data/sdf/double_pendulum.world +168 -0
- share/doc/dart/data/sdf/double_pendulum_with_base.world +263 -0
- share/doc/dart/data/sdf/empty.world +13 -0
- share/doc/dart/data/sdf/ground.world +48 -0
- share/doc/dart/data/sdf/materials/textures/atlas_cage_and_camera_diffuse_flat.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/drc_extremities_diffuse.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/drc_labels_1.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/drc_torso_head_diffuse.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/extremities_diffuse_unplugged.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/right_leg_diffuse_unplugged.jpg +0 -0
- share/doc/dart/data/sdf/materials/textures/torso_diffuse_unplugged.jpg +0 -0
- share/doc/dart/data/sdf/quad.sdf +867 -0
- share/doc/dart/data/sdf/test/force_torque_test.world +173 -0
- share/doc/dart/data/sdf/test/force_torque_test2.world +214 -0
- share/doc/dart/data/sdf/test/issue1193_revolute_test.sdf +70 -0
- share/doc/dart/data/sdf/test/issue1193_revolute_with_offset_test.sdf +70 -0
- share/doc/dart/data/sdf/test/issue1624_cubes.sdf +5037 -0
- share/doc/dart/data/sdf/test/single_bodynode_skeleton.world +55 -0
- share/doc/dart/data/sdf/test/test_issue1583.model +45 -0
- share/doc/dart/data/sdf/test/test_issue1596.model +182 -0
- share/doc/dart/data/sdf/test/test_skeleton_joint.world +278 -0
- share/doc/dart/data/skel/biped.skel +850 -0
- share/doc/dart/data/skel/bullet_collision.skel +174 -0
- share/doc/dart/data/skel/chain.skel +212 -0
- share/doc/dart/data/skel/cube.skel +71 -0
- share/doc/dart/data/skel/cubes.skel +137 -0
- share/doc/dart/data/skel/empty.skel +10 -0
- share/doc/dart/data/skel/freeChain.skel +212 -0
- share/doc/dart/data/skel/fullbody1.skel +1177 -0
- share/doc/dart/data/skel/ground.skel +31 -0
- share/doc/dart/data/skel/joint_limit.skel +123 -0
- share/doc/dart/data/skel/kima/abdomen.dae +18933 -0
- share/doc/dart/data/skel/kima/head.dae +34634 -0
- share/doc/dart/data/skel/kima/kima_human_edited.skel +933 -0
- share/doc/dart/data/skel/kima/kima_human_left_arm.skel +323 -0
- share/doc/dart/data/skel/kima/kima_human_left_leg.skel +327 -0
- share/doc/dart/data/skel/kima/l-clavicle.dae +20111 -0
- share/doc/dart/data/skel/kima/l-foot.dae +28208 -0
- share/doc/dart/data/skel/kima/pelvis.dae +35919 -0
- share/doc/dart/data/skel/kima/r-clavicle.dae +20090 -0
- share/doc/dart/data/skel/kima/thorax.dae +47337 -0
- share/doc/dart/data/skel/mesh_collision.skel +137 -0
- share/doc/dart/data/skel/shapes.skel +378 -0
- share/doc/dart/data/skel/skateboard.skel +222 -0
- share/doc/dart/data/skel/softBodies.skel +284 -0
- share/doc/dart/data/skel/soft_cubes.skel +134 -0
- share/doc/dart/data/skel/soft_open_chain.skel +241 -0
- share/doc/dart/data/skel/sphere.skel +74 -0
- share/doc/dart/data/skel/spheres.skel +118 -0
- share/doc/dart/data/skel/test/SimplePendulum.skel +141 -0
- share/doc/dart/data/skel/test/ball_joints.skel +49 -0
- share/doc/dart/data/skel/test/box_stacking.skel +346 -0
- share/doc/dart/data/skel/test/boxes.skel +52 -0
- share/doc/dart/data/skel/test/chainwhipa.skel +193 -0
- share/doc/dart/data/skel/test/collision_of_prescribed_joints_test.skel +249 -0
- share/doc/dart/data/skel/test/dof_attribute_test.skel +206 -0
- share/doc/dart/data/skel/test/double_pendulum.skel +76 -0
- share/doc/dart/data/skel/test/double_pendulum_ball_joint.skel +76 -0
- share/doc/dart/data/skel/test/double_pendulum_euler_joint.skel +78 -0
- share/doc/dart/data/skel/test/double_pendulum_with_base.skel +1390 -0
- share/doc/dart/data/skel/test/drop.skel +116 -0
- share/doc/dart/data/skel/test/drop_BENCHMARK.skel +10 -0
- share/doc/dart/data/skel/test/drop_unrotated_box.skel +156 -0
- share/doc/dart/data/skel/test/empty.skel +10 -0
- share/doc/dart/data/skel/test/file_info_world_test.skel +1177 -0
- share/doc/dart/data/skel/test/free_joints.skel +49 -0
- share/doc/dart/data/skel/test/gazebo/drop_test.skel +161 -0
- share/doc/dart/data/skel/test/gazebo/force_torque_test.skel +138 -0
- share/doc/dart/data/skel/test/gazebo/force_torque_test2.skel +171 -0
- share/doc/dart/data/skel/test/hybrid_dynamics_test.skel +172 -0
- share/doc/dart/data/skel/test/joint_actuator_type_test.skel +185 -0
- share/doc/dart/data/skel/test/joint_dynamics_elements_test.skel +103 -0
- share/doc/dart/data/skel/test/joint_friction_test.skel +80 -0
- share/doc/dart/data/skel/test/joint_limit_test.skel +80 -0
- share/doc/dart/data/skel/test/planar_joint.skel +167 -0
- share/doc/dart/data/skel/test/serial_chain_BENCHMARK.skel +10 -0
- share/doc/dart/data/skel/test/serial_chain_ball_joint.skel +212 -0
- share/doc/dart/data/skel/test/serial_chain_ball_joint_20.skel +412 -0
- share/doc/dart/data/skel/test/serial_chain_ball_joint_40.skel +812 -0
- share/doc/dart/data/skel/test/serial_chain_eulerxyz_joint.skel +224 -0
- share/doc/dart/data/skel/test/serial_chain_revolute_joint.skel +244 -0
- share/doc/dart/data/skel/test/simple_tree_structure.skel +108 -0
- share/doc/dart/data/skel/test/simple_tree_structure_ball_joint.skel +108 -0
- share/doc/dart/data/skel/test/simple_tree_structure_euler_joint.skel +111 -0
- share/doc/dart/data/skel/test/single_pendulum.skel +55 -0
- share/doc/dart/data/skel/test/single_pendulum_ball_joint.skel +55 -0
- share/doc/dart/data/skel/test/single_pendulum_euler_joint.skel +56 -0
- share/doc/dart/data/skel/test/spheres.skel +118 -0
- share/doc/dart/data/skel/test/test_adaptive_deformable.skel +88 -0
- share/doc/dart/data/skel/test/test_articulated_bodies.skel +112 -0
- share/doc/dart/data/skel/test/test_articulated_bodies_10bodies.skel +401 -0
- share/doc/dart/data/skel/test/test_double_pendulum.skel +105 -0
- share/doc/dart/data/skel/test/test_drop_box.skel +87 -0
- share/doc/dart/data/skel/test/test_drop_box_offset.skel +87 -0
- share/doc/dart/data/skel/test/test_drop_low_stiffness.skel +86 -0
- share/doc/dart/data/skel/test/test_drop_sphere.skel +86 -0
- share/doc/dart/data/skel/test/test_shapes.skel +324 -0
- share/doc/dart/data/skel/test/test_single_body.skel +55 -0
- share/doc/dart/data/skel/test/test_single_pendulum.skel +55 -0
- share/doc/dart/data/skel/test/translational_joints.skel +49 -0
- share/doc/dart/data/skel/test/tree_structure.skel +428 -0
- share/doc/dart/data/skel/test/tree_structure_ball_joint.skel +441 -0
- share/doc/dart/data/skel/test/tree_structure_euler_joint.skel +441 -0
- share/doc/dart/data/skel/two_cubes.skel +118 -0
- share/doc/dart/data/skel/vehicle.skel +322 -0
- share/doc/dart/data/test/hello_world.txt +1 -0
- share/doc/dart/data/urdf/KR5/KR5 sixx R650.urdf +397 -0
- share/doc/dart/data/urdf/KR5/ground.urdf +28 -0
- share/doc/dart/data/urdf/KR5/meshes/base_link.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/bicep.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/elbow.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/forearm.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/palm.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/shoulder.STL +0 -0
- share/doc/dart/data/urdf/KR5/meshes/wrist.STL +0 -0
- share/doc/dart/data/urdf/drchubo/CMakeLists.txt +5 -0
- share/doc/dart/data/urdf/drchubo/drchubo.urdf +1508 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LAP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LAR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LEP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LF1.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LF2.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LF3.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LHP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LHR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LHY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LKP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LSP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LSR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LSY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LWP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LWR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_LWY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_NK1_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_NK2.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_NKY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RAP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RAR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_REP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RF1.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RF2.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RF3.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RHP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RHR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RHY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RKP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RSP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RSR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RSY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RWP_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RWR_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_RWY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_TSY_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/meshes/convhull_Torso_merged.stl +0 -0
- share/doc/dart/data/urdf/drchubo/package.xml +11 -0
- share/doc/dart/data/urdf/test/invalid.urdf +1 -0
- share/doc/dart/data/urdf/test/invalid_mesh.stl +1 -0
- share/doc/dart/data/urdf/test/invalid_mesh.urdf +10 -0
- share/doc/dart/data/urdf/test/issue838.urdf +86 -0
- share/doc/dart/data/urdf/test/joint_properties.urdf +60 -0
- share/doc/dart/data/urdf/test/missing_mesh.urdf +10 -0
- share/doc/dart/data/urdf/test/missing_package.urdf +10 -0
- share/doc/dart/data/urdf/test/primitive_geometry.urdf +12 -0
- share/doc/dart/data/urdf/test/testWorld.urdf +9 -0
- share/doc/dart/data/urdf/wam/meshes/images/base_gray_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/forearm_256x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/lpu_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/shoulder_256x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/upperarm_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/images/wrist_yaw_128x.jpg +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam1.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam1.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam1_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam2.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam2.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam2_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam3.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam3.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam3_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam4.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam4.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam4_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam5.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam5.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam5_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam6.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam6.dae +187 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam6_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam7.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam7.dae +137 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam7_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam_base.STL +0 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam_base.dae +103 -0
- share/doc/dart/data/urdf/wam/meshes/wam/wam_base_collision.STL +0 -0
- share/doc/dart/data/urdf/wam/wam.urdf +230 -0
- share/doc/dart/data/vsk/Nick01.vsk +398 -0
- share/doc/dart/data/vsk/SehoonVSK3.vsk +398 -0
- share/doc/dart/data/vsk/Yuting.vsk +398 -0
- share/doc/dart/data/vsk/test/empty.vsk +3 -0
- share/doc/dart/examples/CMakeLists.txt +44 -0
- share/doc/dart/examples/README.md +33 -0
- share/doc/dart/examples/add_delete_skels/CMakeLists.txt +19 -0
- share/doc/dart/examples/add_delete_skels/main.cpp +165 -0
- share/doc/dart/examples/atlas_puppet/CMakeLists.txt +19 -0
- share/doc/dart/examples/atlas_puppet/README.md +20 -0
- share/doc/dart/examples/atlas_puppet/main.cpp +930 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconEventHandler.cpp +71 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconEventHandler.hpp +56 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWidget.cpp +187 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWidget.hpp +85 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWorldNode.cpp +134 -0
- share/doc/dart/examples/atlas_simbicon/AtlasSimbiconWorldNode.hpp +75 -0
- share/doc/dart/examples/atlas_simbicon/CMakeLists.txt +19 -0
- share/doc/dart/examples/atlas_simbicon/Controller.cpp +996 -0
- share/doc/dart/examples/atlas_simbicon/Controller.hpp +203 -0
- share/doc/dart/examples/atlas_simbicon/README.md +20 -0
- share/doc/dart/examples/atlas_simbicon/State.cpp +674 -0
- share/doc/dart/examples/atlas_simbicon/State.hpp +336 -0
- share/doc/dart/examples/atlas_simbicon/StateMachine.cpp +222 -0
- share/doc/dart/examples/atlas_simbicon/StateMachine.hpp +134 -0
- share/doc/dart/examples/atlas_simbicon/TerminalCondition.cpp +111 -0
- share/doc/dart/examples/atlas_simbicon/TerminalCondition.hpp +102 -0
- share/doc/dart/examples/atlas_simbicon/main.cpp +102 -0
- share/doc/dart/examples/biped_stand/CMakeLists.txt +19 -0
- share/doc/dart/examples/biped_stand/README.md +20 -0
- share/doc/dart/examples/biped_stand/main.cpp +287 -0
- share/doc/dart/examples/box_stacking/CMakeLists.txt +19 -0
- share/doc/dart/examples/box_stacking/README.md +20 -0
- share/doc/dart/examples/box_stacking/main.cpp +417 -0
- share/doc/dart/examples/boxes/CMakeLists.txt +19 -0
- share/doc/dart/examples/boxes/README.md +20 -0
- share/doc/dart/examples/boxes/main.cpp +157 -0
- share/doc/dart/examples/drag_and_drop/CMakeLists.txt +19 -0
- share/doc/dart/examples/drag_and_drop/README.md +20 -0
- share/doc/dart/examples/drag_and_drop/main.cpp +101 -0
- share/doc/dart/examples/empty/CMakeLists.txt +19 -0
- share/doc/dart/examples/empty/README.md +20 -0
- share/doc/dart/examples/empty/main.cpp +164 -0
- share/doc/dart/examples/fetch/CMakeLists.txt +19 -0
- share/doc/dart/examples/fetch/README.md +20 -0
- share/doc/dart/examples/fetch/main.cpp +246 -0
- share/doc/dart/examples/hardcoded_design/CMakeLists.txt +19 -0
- share/doc/dart/examples/hardcoded_design/HardcodedEventHandler.cpp +71 -0
- share/doc/dart/examples/hardcoded_design/HardcodedEventHandler.hpp +56 -0
- share/doc/dart/examples/hardcoded_design/README.md +27 -0
- share/doc/dart/examples/hardcoded_design/main.cpp +186 -0
- share/doc/dart/examples/heightmap/CMakeLists.txt +19 -0
- share/doc/dart/examples/heightmap/README.md +20 -0
- share/doc/dart/examples/heightmap/main.cpp +460 -0
- share/doc/dart/examples/hello_world/CMakeLists.txt +19 -0
- share/doc/dart/examples/hello_world/README.md +20 -0
- share/doc/dart/examples/hello_world/main.cpp +114 -0
- share/doc/dart/examples/hubo_puppet/CMakeLists.txt +19 -0
- share/doc/dart/examples/hubo_puppet/README.md +20 -0
- share/doc/dart/examples/hubo_puppet/main.cpp +1464 -0
- share/doc/dart/examples/human_joint_limits/CMakeLists.txt +49 -0
- share/doc/dart/examples/human_joint_limits/HumanArmJointLimitConstraint.cpp +411 -0
- share/doc/dart/examples/human_joint_limits/HumanArmJointLimitConstraint.hpp +182 -0
- share/doc/dart/examples/human_joint_limits/HumanLegJointLimitConstraint.cpp +432 -0
- share/doc/dart/examples/human_joint_limits/HumanLegJointLimitConstraint.hpp +179 -0
- share/doc/dart/examples/human_joint_limits/main.cpp +157 -0
- share/doc/dart/examples/hybrid_dynamics/CMakeLists.txt +19 -0
- share/doc/dart/examples/hybrid_dynamics/README.md +17 -0
- share/doc/dart/examples/hybrid_dynamics/main.cpp +187 -0
- share/doc/dart/examples/imgui/CMakeLists.txt +19 -0
- share/doc/dart/examples/imgui/README.md +20 -0
- share/doc/dart/examples/imgui/main.cpp +289 -0
- share/doc/dart/examples/joint_constraints/CMakeLists.txt +19 -0
- share/doc/dart/examples/joint_constraints/Controller.cpp +110 -0
- share/doc/dart/examples/joint_constraints/Controller.hpp +105 -0
- share/doc/dart/examples/joint_constraints/README.md +22 -0
- share/doc/dart/examples/joint_constraints/main.cpp +242 -0
- share/doc/dart/examples/mixed_chain/CMakeLists.txt +19 -0
- share/doc/dart/examples/mixed_chain/README.md +35 -0
- share/doc/dart/examples/mixed_chain/main.cpp +188 -0
- share/doc/dart/examples/operational_space_control/CMakeLists.txt +19 -0
- share/doc/dart/examples/operational_space_control/README.md +20 -0
- share/doc/dart/examples/operational_space_control/main.cpp +338 -0
- share/doc/dart/examples/point_cloud/CMakeLists.txt +19 -0
- share/doc/dart/examples/point_cloud/README.md +20 -0
- share/doc/dart/examples/point_cloud/main.cpp +740 -0
- share/doc/dart/examples/rerun/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_chain/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_chain/README.md +19 -0
- share/doc/dart/examples/rigid_chain/main.cpp +110 -0
- share/doc/dart/examples/rigid_cubes/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_cubes/README.md +91 -0
- share/doc/dart/examples/rigid_cubes/main.cpp +201 -0
- share/doc/dart/examples/rigid_loop/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_loop/README.md +34 -0
- share/doc/dart/examples/rigid_loop/main.cpp +127 -0
- share/doc/dart/examples/rigid_shapes/CMakeLists.txt +19 -0
- share/doc/dart/examples/rigid_shapes/README.md +19 -0
- share/doc/dart/examples/rigid_shapes/main.cpp +250 -0
- share/doc/dart/examples/simple_frames/CMakeLists.txt +19 -0
- share/doc/dart/examples/simple_frames/README.md +27 -0
- share/doc/dart/examples/simple_frames/main.cpp +124 -0
- share/doc/dart/examples/simulation_event_handler/CMakeLists.txt +19 -0
- share/doc/dart/examples/simulation_event_handler/README.md +189 -0
- share/doc/dart/examples/simulation_event_handler/SimulationEventHandler.cpp +572 -0
- share/doc/dart/examples/simulation_event_handler/SimulationEventHandler.hpp +211 -0
- share/doc/dart/examples/simulation_event_handler/main.cpp +277 -0
- share/doc/dart/examples/soft_bodies/CMakeLists.txt +19 -0
- share/doc/dart/examples/soft_bodies/README.md +20 -0
- share/doc/dart/examples/soft_bodies/main.cpp +219 -0
- share/doc/dart/examples/speed_test/CMakeLists.txt +19 -0
- share/doc/dart/examples/speed_test/README.md +20 -0
- share/doc/dart/examples/speed_test/main.cpp +250 -0
- share/doc/dart/examples/tinkertoy/CMakeLists.txt +19 -0
- share/doc/dart/examples/tinkertoy/README.md +20 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWidget.cpp +208 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWidget.hpp +70 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWorldNode.cpp +35 -0
- share/doc/dart/examples/tinkertoy/TinkertoyWorldNode.hpp +470 -0
- share/doc/dart/examples/tinkertoy/main.cpp +186 -0
- share/doc/dart/examples/vehicle/CMakeLists.txt +19 -0
- share/doc/dart/examples/vehicle/README.md +22 -0
- share/doc/dart/examples/vehicle/main.cpp +195 -0
- share/doc/dart/examples/wam_ikfast/CMakeLists.txt +22 -0
- share/doc/dart/examples/wam_ikfast/Helpers.cpp +148 -0
- share/doc/dart/examples/wam_ikfast/Helpers.hpp +46 -0
- share/doc/dart/examples/wam_ikfast/InputHandler.cpp +110 -0
- share/doc/dart/examples/wam_ikfast/InputHandler.hpp +73 -0
- share/doc/dart/examples/wam_ikfast/README.md +20 -0
- share/doc/dart/examples/wam_ikfast/WamWorld.cpp +46 -0
- share/doc/dart/examples/wam_ikfast/WamWorld.hpp +53 -0
- share/doc/dart/examples/wam_ikfast/ikfast/CMakeLists.txt +11 -0
- share/doc/dart/examples/wam_ikfast/ikfast/ikfast71.Transform6D.4_6_9_10_11_12_f8.cpp +14930 -0
- share/doc/dart/examples/wam_ikfast/osgWamIkFast.cpp +96 -0
- share/doc/dart/tutorials/CMakeLists.txt +12 -0
- share/doc/dart/tutorials/README.md +45 -0
- share/doc/dart/tutorials/tutorial_biped/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_biped/README +18 -0
- share/doc/dart/tutorials/tutorial_biped/main.cpp +374 -0
- share/doc/dart/tutorials/tutorial_biped_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_biped_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_biped_finished/main.cpp +532 -0
- share/doc/dart/tutorials/tutorial_collisions/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_collisions/README +18 -0
- share/doc/dart/tutorials/tutorial_collisions/main.cpp +506 -0
- share/doc/dart/tutorials/tutorial_collisions_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_collisions_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_collisions_finished/main.cpp +679 -0
- share/doc/dart/tutorials/tutorial_dominoes/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_dominoes/README +18 -0
- share/doc/dart/tutorials/tutorial_dominoes/main.cpp +394 -0
- share/doc/dart/tutorials/tutorial_dominoes_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_dominoes_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_dominoes_finished/main.cpp +559 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum/README +18 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum/main.cpp +443 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum_finished/CMakeLists.txt +19 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum_finished/README +18 -0
- share/doc/dart/tutorials/tutorial_multi_pendulum_finished/main.cpp +512 -0
|
@@ -0,0 +1,930 @@
|
|
|
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/all.hpp>
|
|
36
|
+
#include <dart/utils/urdf/all.hpp>
|
|
37
|
+
|
|
38
|
+
#include <dart/dart.hpp>
|
|
39
|
+
|
|
40
|
+
using namespace dart::common;
|
|
41
|
+
using namespace dart::dynamics;
|
|
42
|
+
using namespace dart::simulation;
|
|
43
|
+
using namespace dart::utils;
|
|
44
|
+
using namespace dart::math;
|
|
45
|
+
|
|
46
|
+
const double display_elevation = 0.05;
|
|
47
|
+
|
|
48
|
+
class RelaxedPosture : public dart::optimizer::Function
|
|
49
|
+
{
|
|
50
|
+
public:
|
|
51
|
+
RelaxedPosture(
|
|
52
|
+
const Eigen::VectorXd& idealPosture,
|
|
53
|
+
const Eigen::VectorXd& lower,
|
|
54
|
+
const Eigen::VectorXd& upper,
|
|
55
|
+
const Eigen::VectorXd& weights,
|
|
56
|
+
bool enforceIdeal = false)
|
|
57
|
+
: enforceIdealPosture(enforceIdeal),
|
|
58
|
+
mIdeal(idealPosture),
|
|
59
|
+
mLower(lower),
|
|
60
|
+
mUpper(upper),
|
|
61
|
+
mWeights(weights)
|
|
62
|
+
{
|
|
63
|
+
int dofs = mIdeal.size();
|
|
64
|
+
if (mLower.size() != dofs || mWeights.size() != dofs
|
|
65
|
+
|| mUpper.size() != dofs) {
|
|
66
|
+
dterr << "[RelaxedPose::RelaxedPose] Dimension mismatch:\n"
|
|
67
|
+
<< " ideal: " << mIdeal.size() << "\n"
|
|
68
|
+
<< " lower: " << mLower.size() << "\n"
|
|
69
|
+
<< " upper: " << mUpper.size() << "\n"
|
|
70
|
+
<< " weights: " << mWeights.size() << "\n";
|
|
71
|
+
}
|
|
72
|
+
mResultVector.setZero(dofs);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
double eval(const Eigen::VectorXd& _x) override
|
|
76
|
+
{
|
|
77
|
+
computeResultVector(_x);
|
|
78
|
+
return 0.5 * mResultVector.dot(mResultVector);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
void evalGradient(
|
|
82
|
+
const Eigen::VectorXd& _x, Eigen::Map<Eigen::VectorXd> _grad) override
|
|
83
|
+
{
|
|
84
|
+
computeResultVector(_x);
|
|
85
|
+
|
|
86
|
+
_grad.setZero();
|
|
87
|
+
int smaller = std::min(mResultVector.size(), _grad.size());
|
|
88
|
+
for (int i = 0; i < smaller; ++i)
|
|
89
|
+
_grad[i] = mResultVector[i];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
void computeResultVector(const Eigen::VectorXd& _x)
|
|
93
|
+
{
|
|
94
|
+
mResultVector.setZero();
|
|
95
|
+
|
|
96
|
+
if (enforceIdealPosture) {
|
|
97
|
+
// Try to get the robot into the best possible posture
|
|
98
|
+
for (int i = 0; i < _x.size(); ++i) {
|
|
99
|
+
if (mIdeal.size() <= i)
|
|
100
|
+
break;
|
|
101
|
+
|
|
102
|
+
mResultVector[i] = mWeights[i] * (_x[i] - mIdeal[i]);
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
// Only adjust the posture if it is really bad
|
|
106
|
+
for (int i = 0; i < _x.size(); ++i) {
|
|
107
|
+
if (mIdeal.size() <= i)
|
|
108
|
+
break;
|
|
109
|
+
|
|
110
|
+
if (_x[i] < mLower[i])
|
|
111
|
+
mResultVector[i] = mWeights[i] * (_x[i] - mLower[i]);
|
|
112
|
+
else if (mUpper[i] < _x[i])
|
|
113
|
+
mResultVector[i] = mWeights[i] * (_x[i] - mUpper[i]);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
bool enforceIdealPosture;
|
|
119
|
+
|
|
120
|
+
protected:
|
|
121
|
+
Eigen::VectorXd mResultVector;
|
|
122
|
+
|
|
123
|
+
Eigen::VectorXd mIdeal;
|
|
124
|
+
|
|
125
|
+
Eigen::VectorXd mLower;
|
|
126
|
+
|
|
127
|
+
Eigen::VectorXd mUpper;
|
|
128
|
+
|
|
129
|
+
Eigen::VectorXd mWeights;
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
class TeleoperationWorld : public dart::gui::osg::WorldNode
|
|
133
|
+
{
|
|
134
|
+
public:
|
|
135
|
+
enum MoveEnum_t
|
|
136
|
+
{
|
|
137
|
+
MOVE_Q = 0,
|
|
138
|
+
MOVE_W,
|
|
139
|
+
MOVE_E,
|
|
140
|
+
MOVE_A,
|
|
141
|
+
MOVE_S,
|
|
142
|
+
MOVE_D,
|
|
143
|
+
MOVE_F,
|
|
144
|
+
MOVE_Z,
|
|
145
|
+
|
|
146
|
+
NUM_MOVE
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
TeleoperationWorld(WorldPtr _world, SkeletonPtr _robot)
|
|
150
|
+
: dart::gui::osg::WorldNode(_world),
|
|
151
|
+
mAtlas(_robot),
|
|
152
|
+
iter(0),
|
|
153
|
+
l_foot(_robot->getEndEffector("l_foot")),
|
|
154
|
+
r_foot(_robot->getEndEffector("r_foot"))
|
|
155
|
+
{
|
|
156
|
+
mMoveComponents.resize(NUM_MOVE, false);
|
|
157
|
+
mAnyMovement = false;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
void setMovement(const std::vector<bool>& moveComponents)
|
|
161
|
+
{
|
|
162
|
+
mMoveComponents = moveComponents;
|
|
163
|
+
|
|
164
|
+
mAnyMovement = false;
|
|
165
|
+
|
|
166
|
+
for (bool move : mMoveComponents) {
|
|
167
|
+
if (move) {
|
|
168
|
+
mAnyMovement = true;
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
void customPreRefresh() override
|
|
175
|
+
{
|
|
176
|
+
if (mAnyMovement) {
|
|
177
|
+
Eigen::Isometry3d old_tf = mAtlas->getBodyNode(0)->getWorldTransform();
|
|
178
|
+
Eigen::Isometry3d new_tf = Eigen::Isometry3d::Identity();
|
|
179
|
+
Eigen::Vector3d forward = old_tf.linear().col(0);
|
|
180
|
+
forward[2] = 0.0;
|
|
181
|
+
if (forward.norm() > 1e-10)
|
|
182
|
+
forward.normalize();
|
|
183
|
+
else
|
|
184
|
+
forward.setZero();
|
|
185
|
+
|
|
186
|
+
Eigen::Vector3d left = old_tf.linear().col(1);
|
|
187
|
+
left[2] = 0.0;
|
|
188
|
+
if (left.norm() > 1e-10)
|
|
189
|
+
left.normalize();
|
|
190
|
+
else
|
|
191
|
+
left.setZero();
|
|
192
|
+
|
|
193
|
+
const Eigen::Vector3d& up = Eigen::Vector3d::UnitZ();
|
|
194
|
+
|
|
195
|
+
const double linearStep = 0.01;
|
|
196
|
+
const double elevationStep = 0.2 * linearStep;
|
|
197
|
+
const double rotationalStep = 2.0 * constantsd::pi() / 180.0;
|
|
198
|
+
|
|
199
|
+
if (mMoveComponents[MOVE_W])
|
|
200
|
+
new_tf.translate(linearStep * forward);
|
|
201
|
+
|
|
202
|
+
if (mMoveComponents[MOVE_S])
|
|
203
|
+
new_tf.translate(-linearStep * forward);
|
|
204
|
+
|
|
205
|
+
if (mMoveComponents[MOVE_A])
|
|
206
|
+
new_tf.translate(linearStep * left);
|
|
207
|
+
|
|
208
|
+
if (mMoveComponents[MOVE_D])
|
|
209
|
+
new_tf.translate(-linearStep * left);
|
|
210
|
+
|
|
211
|
+
if (mMoveComponents[MOVE_F])
|
|
212
|
+
new_tf.translate(elevationStep * up);
|
|
213
|
+
|
|
214
|
+
if (mMoveComponents[MOVE_Z])
|
|
215
|
+
new_tf.translate(-elevationStep * up);
|
|
216
|
+
|
|
217
|
+
if (mMoveComponents[MOVE_Q])
|
|
218
|
+
new_tf.rotate(Eigen::AngleAxisd(rotationalStep, up));
|
|
219
|
+
|
|
220
|
+
if (mMoveComponents[MOVE_E])
|
|
221
|
+
new_tf.rotate(Eigen::AngleAxisd(-rotationalStep, up));
|
|
222
|
+
|
|
223
|
+
new_tf.pretranslate(old_tf.translation());
|
|
224
|
+
new_tf.rotate(old_tf.rotation());
|
|
225
|
+
|
|
226
|
+
mAtlas->getJoint(0)->setPositions(FreeJoint::convertToPositions(new_tf));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
bool solved = mAtlas->getIK(true)->solveAndApply(true);
|
|
230
|
+
|
|
231
|
+
if (!solved)
|
|
232
|
+
++iter;
|
|
233
|
+
else
|
|
234
|
+
iter = 0;
|
|
235
|
+
|
|
236
|
+
if (iter == 1000) {
|
|
237
|
+
std::cout << "Failing!" << std::endl;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
protected:
|
|
242
|
+
SkeletonPtr mAtlas;
|
|
243
|
+
std::size_t iter;
|
|
244
|
+
|
|
245
|
+
EndEffectorPtr l_foot;
|
|
246
|
+
EndEffectorPtr r_foot;
|
|
247
|
+
|
|
248
|
+
Eigen::VectorXd grad;
|
|
249
|
+
|
|
250
|
+
std::vector<bool> mMoveComponents;
|
|
251
|
+
|
|
252
|
+
bool mAnyMovement;
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
class InputHandler : public ::osgGA::GUIEventHandler
|
|
256
|
+
{
|
|
257
|
+
public:
|
|
258
|
+
InputHandler(
|
|
259
|
+
dart::gui::osg::Viewer* viewer,
|
|
260
|
+
TeleoperationWorld* teleop,
|
|
261
|
+
const SkeletonPtr& atlas,
|
|
262
|
+
const WorldPtr& world)
|
|
263
|
+
: mViewer(viewer), mTeleop(teleop), mAtlas(atlas), mWorld(world)
|
|
264
|
+
{
|
|
265
|
+
initialize();
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
void initialize()
|
|
269
|
+
{
|
|
270
|
+
mRestConfig = mAtlas->getPositions();
|
|
271
|
+
|
|
272
|
+
mLegs.reserve(12);
|
|
273
|
+
for (std::size_t i = 0; i < mAtlas->getNumDofs(); ++i) {
|
|
274
|
+
if (mAtlas->getDof(i)->getName().substr(1, 5) == "_leg_")
|
|
275
|
+
mLegs.push_back(mAtlas->getDof(i)->getIndexInSkeleton());
|
|
276
|
+
}
|
|
277
|
+
// We should also adjust the pelvis when detangling the legs
|
|
278
|
+
mLegs.push_back(mAtlas->getDof("rootJoint_rot_x")->getIndexInSkeleton());
|
|
279
|
+
mLegs.push_back(mAtlas->getDof("rootJoint_rot_y")->getIndexInSkeleton());
|
|
280
|
+
mLegs.push_back(mAtlas->getDof("rootJoint_pos_z")->getIndexInSkeleton());
|
|
281
|
+
|
|
282
|
+
mAtlas->eachEndEffector([&](EndEffector* ee) {
|
|
283
|
+
if (const InverseKinematicsPtr ik = ee->getIK()) {
|
|
284
|
+
mDefaultBounds.push_back(ik->getErrorMethod().getBounds());
|
|
285
|
+
mDefaultTargetTf.push_back(ik->getTarget()->getRelativeTransform());
|
|
286
|
+
mConstraintActive.push_back(false);
|
|
287
|
+
mEndEffectorIndex.push_back(ee->getIndexInSkeleton());
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
mPosture = std::dynamic_pointer_cast<RelaxedPosture>(
|
|
292
|
+
mAtlas->getIK(true)->getObjective());
|
|
293
|
+
|
|
294
|
+
mBalance = std::dynamic_pointer_cast<dart::constraint::BalanceConstraint>(
|
|
295
|
+
mAtlas->getIK(true)->getProblem()->getEqConstraint(1));
|
|
296
|
+
|
|
297
|
+
mOptimizationKey = 'r';
|
|
298
|
+
|
|
299
|
+
mMoveComponents.resize(TeleoperationWorld::NUM_MOVE, false);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
virtual bool handle(
|
|
303
|
+
const ::osgGA::GUIEventAdapter& ea, ::osgGA::GUIActionAdapter&) override
|
|
304
|
+
{
|
|
305
|
+
if (nullptr == mAtlas) {
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
if (::osgGA::GUIEventAdapter::KEYDOWN == ea.getEventType()) {
|
|
310
|
+
if (ea.getKey() == 'p') {
|
|
311
|
+
for (std::size_t i = 0; i < mAtlas->getNumDofs(); ++i)
|
|
312
|
+
std::cout << mAtlas->getDof(i)->getName() << ": "
|
|
313
|
+
<< mAtlas->getDof(i)->getPosition() << std::endl;
|
|
314
|
+
std::cout << " -- -- -- -- -- " << std::endl;
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
if (ea.getKey() == 't') {
|
|
319
|
+
// Reset all the positions except for x, y, and yaw
|
|
320
|
+
for (std::size_t i = 0; i < mAtlas->getNumDofs(); ++i) {
|
|
321
|
+
if (i < 2 || 4 < i)
|
|
322
|
+
mAtlas->getDof(i)->setPosition(mRestConfig[i]);
|
|
323
|
+
}
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
if ('1' <= ea.getKey() && ea.getKey() <= '9') {
|
|
328
|
+
std::size_t index = ea.getKey() - '1';
|
|
329
|
+
if (index < mConstraintActive.size()) {
|
|
330
|
+
EndEffector* ee = mAtlas->getEndEffector(mEndEffectorIndex[index]);
|
|
331
|
+
const InverseKinematicsPtr& ik = ee->getIK();
|
|
332
|
+
if (ik && mConstraintActive[index]) {
|
|
333
|
+
mConstraintActive[index] = false;
|
|
334
|
+
|
|
335
|
+
ik->getErrorMethod().setBounds(mDefaultBounds[index]);
|
|
336
|
+
ik->getTarget()->setRelativeTransform(mDefaultTargetTf[index]);
|
|
337
|
+
mWorld->removeSimpleFrame(ik->getTarget());
|
|
338
|
+
} else if (ik) {
|
|
339
|
+
mConstraintActive[index] = true;
|
|
340
|
+
|
|
341
|
+
// Use the standard default bounds instead of our custom default
|
|
342
|
+
// bounds
|
|
343
|
+
ik->getErrorMethod().setBounds();
|
|
344
|
+
ik->getTarget()->setTransform(ee->getTransform());
|
|
345
|
+
mWorld->addSimpleFrame(ik->getTarget());
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return true;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
if ('x' == ea.getKey()) {
|
|
352
|
+
EndEffector* ee = mAtlas->getEndEffector("l_foot");
|
|
353
|
+
ee->getSupport()->setActive(!ee->getSupport()->isActive());
|
|
354
|
+
return true;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
if ('c' == ea.getKey()) {
|
|
358
|
+
EndEffector* ee = mAtlas->getEndEffector("r_foot");
|
|
359
|
+
ee->getSupport()->setActive(!ee->getSupport()->isActive());
|
|
360
|
+
return true;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
switch (ea.getKey()) {
|
|
364
|
+
case 'w':
|
|
365
|
+
mMoveComponents[TeleoperationWorld::MOVE_W] = true;
|
|
366
|
+
break;
|
|
367
|
+
case 'a':
|
|
368
|
+
mMoveComponents[TeleoperationWorld::MOVE_A] = true;
|
|
369
|
+
break;
|
|
370
|
+
case 's':
|
|
371
|
+
mMoveComponents[TeleoperationWorld::MOVE_S] = true;
|
|
372
|
+
break;
|
|
373
|
+
case 'd':
|
|
374
|
+
mMoveComponents[TeleoperationWorld::MOVE_D] = true;
|
|
375
|
+
break;
|
|
376
|
+
case 'q':
|
|
377
|
+
mMoveComponents[TeleoperationWorld::MOVE_Q] = true;
|
|
378
|
+
break;
|
|
379
|
+
case 'e':
|
|
380
|
+
mMoveComponents[TeleoperationWorld::MOVE_E] = true;
|
|
381
|
+
break;
|
|
382
|
+
case 'f':
|
|
383
|
+
mMoveComponents[TeleoperationWorld::MOVE_F] = true;
|
|
384
|
+
break;
|
|
385
|
+
case 'z':
|
|
386
|
+
mMoveComponents[TeleoperationWorld::MOVE_Z] = true;
|
|
387
|
+
break;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
switch (ea.getKey()) {
|
|
391
|
+
case 'w':
|
|
392
|
+
case 'a':
|
|
393
|
+
case 's':
|
|
394
|
+
case 'd':
|
|
395
|
+
case 'q':
|
|
396
|
+
case 'e':
|
|
397
|
+
case 'f':
|
|
398
|
+
case 'z': {
|
|
399
|
+
mTeleop->setMovement(mMoveComponents);
|
|
400
|
+
return true;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
if (mOptimizationKey == ea.getKey()) {
|
|
405
|
+
if (mPosture)
|
|
406
|
+
mPosture->enforceIdealPosture = true;
|
|
407
|
+
|
|
408
|
+
if (mBalance)
|
|
409
|
+
mBalance->setErrorMethod(
|
|
410
|
+
dart::constraint::BalanceConstraint::OPTIMIZE_BALANCE);
|
|
411
|
+
|
|
412
|
+
return true;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
if (::osgGA::GUIEventAdapter::KEYUP == ea.getEventType()) {
|
|
417
|
+
if (ea.getKey() == mOptimizationKey) {
|
|
418
|
+
if (mPosture)
|
|
419
|
+
mPosture->enforceIdealPosture = false;
|
|
420
|
+
|
|
421
|
+
if (mBalance)
|
|
422
|
+
mBalance->setErrorMethod(
|
|
423
|
+
dart::constraint::BalanceConstraint::FROM_CENTROID);
|
|
424
|
+
|
|
425
|
+
return true;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
switch (ea.getKey()) {
|
|
429
|
+
case 'w':
|
|
430
|
+
mMoveComponents[TeleoperationWorld::MOVE_W] = false;
|
|
431
|
+
break;
|
|
432
|
+
case 'a':
|
|
433
|
+
mMoveComponents[TeleoperationWorld::MOVE_A] = false;
|
|
434
|
+
break;
|
|
435
|
+
case 's':
|
|
436
|
+
mMoveComponents[TeleoperationWorld::MOVE_S] = false;
|
|
437
|
+
break;
|
|
438
|
+
case 'd':
|
|
439
|
+
mMoveComponents[TeleoperationWorld::MOVE_D] = false;
|
|
440
|
+
break;
|
|
441
|
+
case 'q':
|
|
442
|
+
mMoveComponents[TeleoperationWorld::MOVE_Q] = false;
|
|
443
|
+
break;
|
|
444
|
+
case 'e':
|
|
445
|
+
mMoveComponents[TeleoperationWorld::MOVE_E] = false;
|
|
446
|
+
break;
|
|
447
|
+
case 'f':
|
|
448
|
+
mMoveComponents[TeleoperationWorld::MOVE_F] = false;
|
|
449
|
+
break;
|
|
450
|
+
case 'z':
|
|
451
|
+
mMoveComponents[TeleoperationWorld::MOVE_Z] = false;
|
|
452
|
+
break;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
switch (ea.getKey()) {
|
|
456
|
+
case 'w':
|
|
457
|
+
case 'a':
|
|
458
|
+
case 's':
|
|
459
|
+
case 'd':
|
|
460
|
+
case 'q':
|
|
461
|
+
case 'e':
|
|
462
|
+
case 'f':
|
|
463
|
+
case 'z': {
|
|
464
|
+
mTeleop->setMovement(mMoveComponents);
|
|
465
|
+
return true;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
return false;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
protected:
|
|
474
|
+
dart::gui::osg::Viewer* mViewer;
|
|
475
|
+
|
|
476
|
+
TeleoperationWorld* mTeleop;
|
|
477
|
+
|
|
478
|
+
SkeletonPtr mAtlas;
|
|
479
|
+
|
|
480
|
+
WorldPtr mWorld;
|
|
481
|
+
|
|
482
|
+
Eigen::VectorXd mRestConfig;
|
|
483
|
+
|
|
484
|
+
std::vector<std::size_t> mLegs;
|
|
485
|
+
|
|
486
|
+
std::vector<bool> mConstraintActive;
|
|
487
|
+
|
|
488
|
+
std::vector<std::size_t> mEndEffectorIndex;
|
|
489
|
+
|
|
490
|
+
std::vector<std::pair<Eigen::Vector6d, Eigen::Vector6d>> mDefaultBounds;
|
|
491
|
+
|
|
492
|
+
dart::common::aligned_vector<Eigen::Isometry3d> mDefaultTargetTf;
|
|
493
|
+
|
|
494
|
+
std::shared_ptr<RelaxedPosture> mPosture;
|
|
495
|
+
|
|
496
|
+
std::shared_ptr<dart::constraint::BalanceConstraint> mBalance;
|
|
497
|
+
|
|
498
|
+
char mOptimizationKey;
|
|
499
|
+
|
|
500
|
+
std::vector<bool> mMoveComponents;
|
|
501
|
+
};
|
|
502
|
+
|
|
503
|
+
SkeletonPtr createGround()
|
|
504
|
+
{
|
|
505
|
+
// Create a Skeleton to represent the ground
|
|
506
|
+
SkeletonPtr ground = Skeleton::create("ground");
|
|
507
|
+
Eigen::Isometry3d tf(Eigen::Isometry3d::Identity());
|
|
508
|
+
double thickness = 0.01;
|
|
509
|
+
tf.translation() = Eigen::Vector3d(0, 0, -thickness / 2.0);
|
|
510
|
+
WeldJoint::Properties joint;
|
|
511
|
+
joint.mT_ParentBodyToJoint = tf;
|
|
512
|
+
ground->createJointAndBodyNodePair<WeldJoint>(nullptr, joint);
|
|
513
|
+
ShapePtr groundShape
|
|
514
|
+
= std::make_shared<BoxShape>(Eigen::Vector3d(10, 10, thickness));
|
|
515
|
+
|
|
516
|
+
auto shapeNode = ground->getBodyNode(0)
|
|
517
|
+
->createShapeNodeWith<
|
|
518
|
+
VisualAspect,
|
|
519
|
+
CollisionAspect,
|
|
520
|
+
DynamicsAspect>(groundShape);
|
|
521
|
+
shapeNode->getVisualAspect()->setColor(dart::Color::Blue(0.2));
|
|
522
|
+
|
|
523
|
+
return ground;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
SkeletonPtr createAtlas()
|
|
527
|
+
{
|
|
528
|
+
// Parse in the atlas model
|
|
529
|
+
DartLoader urdf;
|
|
530
|
+
SkeletonPtr atlas
|
|
531
|
+
= urdf.parseSkeleton("dart://sample/sdf/atlas/atlas_v3_no_head.urdf");
|
|
532
|
+
|
|
533
|
+
// Add a box to the root node to make it easier to click and drag
|
|
534
|
+
double scale = 0.25;
|
|
535
|
+
ShapePtr boxShape
|
|
536
|
+
= std::make_shared<BoxShape>(scale * Eigen::Vector3d(1.0, 1.0, 0.5));
|
|
537
|
+
|
|
538
|
+
Eigen::Isometry3d tf(Eigen::Isometry3d::Identity());
|
|
539
|
+
tf.translation() = Eigen::Vector3d(0.1 * Eigen::Vector3d(0.0, 0.0, 1.0));
|
|
540
|
+
|
|
541
|
+
auto shapeNode
|
|
542
|
+
= atlas->getBodyNode(0)->createShapeNodeWith<VisualAspect>(boxShape);
|
|
543
|
+
shapeNode->getVisualAspect()->setColor(dart::Color::Black());
|
|
544
|
+
shapeNode->setRelativeTransform(tf);
|
|
545
|
+
|
|
546
|
+
return atlas;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
void setupStartConfiguration(const SkeletonPtr& atlas)
|
|
550
|
+
{
|
|
551
|
+
// Squat with the right leg
|
|
552
|
+
atlas->getDof("r_leg_hpy")->setPosition(-45.0 * constantsd::pi() / 180.0);
|
|
553
|
+
atlas->getDof("r_leg_kny")->setPosition(90.0 * constantsd::pi() / 180.0);
|
|
554
|
+
atlas->getDof("r_leg_aky")->setPosition(-45.0 * constantsd::pi() / 180.0);
|
|
555
|
+
|
|
556
|
+
// Squat with the left left
|
|
557
|
+
atlas->getDof("l_leg_hpy")->setPosition(-45.0 * constantsd::pi() / 180.0);
|
|
558
|
+
atlas->getDof("l_leg_kny")->setPosition(90.0 * constantsd::pi() / 180.0);
|
|
559
|
+
atlas->getDof("l_leg_aky")->setPosition(-45.0 * constantsd::pi() / 180.0);
|
|
560
|
+
|
|
561
|
+
// Get the right arm into a comfortable position
|
|
562
|
+
atlas->getDof("r_arm_shx")->setPosition(65.0 * constantsd::pi() / 180.0);
|
|
563
|
+
atlas->getDof("r_arm_ely")->setPosition(90.0 * constantsd::pi() / 180.0);
|
|
564
|
+
atlas->getDof("r_arm_elx")->setPosition(-90.0 * constantsd::pi() / 180.0);
|
|
565
|
+
atlas->getDof("r_arm_wry")->setPosition(65.0 * constantsd::pi() / 180.0);
|
|
566
|
+
|
|
567
|
+
// Get the left arm into a comfortable position
|
|
568
|
+
atlas->getDof("l_arm_shx")->setPosition(-65.0 * constantsd::pi() / 180.0);
|
|
569
|
+
atlas->getDof("l_arm_ely")->setPosition(90.0 * constantsd::pi() / 180.0);
|
|
570
|
+
atlas->getDof("l_arm_elx")->setPosition(90.0 * constantsd::pi() / 180.0);
|
|
571
|
+
atlas->getDof("l_arm_wry")->setPosition(65.0 * constantsd::pi() / 180.0);
|
|
572
|
+
|
|
573
|
+
// Prevent the knees from bending backwards
|
|
574
|
+
atlas->getDof("r_leg_kny")
|
|
575
|
+
->setPositionLowerLimit(10 * constantsd::pi() / 180.0);
|
|
576
|
+
atlas->getDof("l_leg_kny")
|
|
577
|
+
->setPositionLowerLimit(10 * constantsd::pi() / 180.0);
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
void setupEndEffectors(const SkeletonPtr& atlas)
|
|
581
|
+
{
|
|
582
|
+
// Apply very small weights to the gradient of the root joint in order to
|
|
583
|
+
// encourage the arms to use arm joints instead of only moving around the root
|
|
584
|
+
// joint
|
|
585
|
+
Eigen::VectorXd rootjoint_weights = Eigen::VectorXd::Ones(6);
|
|
586
|
+
rootjoint_weights = 0.01 * rootjoint_weights;
|
|
587
|
+
|
|
588
|
+
// Setting the bounds to be infinite allows the end effector to be implicitly
|
|
589
|
+
// unconstrained
|
|
590
|
+
Eigen::Vector3d linearBounds
|
|
591
|
+
= Eigen::Vector3d::Constant(std::numeric_limits<double>::infinity());
|
|
592
|
+
|
|
593
|
+
Eigen::Vector3d angularBounds
|
|
594
|
+
= Eigen::Vector3d::Constant(std::numeric_limits<double>::infinity());
|
|
595
|
+
|
|
596
|
+
// -- Set up the left hand --
|
|
597
|
+
|
|
598
|
+
// Create a relative transform for the EndEffector frame. This is the
|
|
599
|
+
// transform that the left hand will have relative to the BodyNode that it is
|
|
600
|
+
// attached to
|
|
601
|
+
Eigen::Isometry3d tf_hand(Eigen::Isometry3d::Identity());
|
|
602
|
+
tf_hand.translation() = Eigen::Vector3d(0.0009, 0.1254, 0.012);
|
|
603
|
+
tf_hand.rotate(Eigen::AngleAxisd(
|
|
604
|
+
90.0 * constantsd::pi() / 180.0, Eigen::Vector3d::UnitZ()));
|
|
605
|
+
|
|
606
|
+
// Create the left hand's end effector and set its relative transform
|
|
607
|
+
EndEffector* l_hand
|
|
608
|
+
= atlas->getBodyNode("l_hand")->createEndEffector("l_hand");
|
|
609
|
+
l_hand->setDefaultRelativeTransform(tf_hand, true);
|
|
610
|
+
|
|
611
|
+
// Create an interactive frame to use as the target for the left hand
|
|
612
|
+
dart::gui::osg::InteractiveFramePtr lh_target(
|
|
613
|
+
new dart::gui::osg::InteractiveFrame(Frame::World(), "lh_target"));
|
|
614
|
+
|
|
615
|
+
// Set the target of the left hand to the interactive frame. We pass true into
|
|
616
|
+
// the function to tell it that it should create the IK module if it does not
|
|
617
|
+
// already exist. If we don't do that, then calling getIK() could return a
|
|
618
|
+
// nullptr if the IK module was never created.
|
|
619
|
+
l_hand->getIK(true)->setTarget(lh_target);
|
|
620
|
+
|
|
621
|
+
// Tell the left hand to use the whole body for its IK
|
|
622
|
+
l_hand->getIK()->useWholeBody();
|
|
623
|
+
|
|
624
|
+
// Set the weights for the gradient
|
|
625
|
+
l_hand->getIK()->getGradientMethod().setComponentWeights(rootjoint_weights);
|
|
626
|
+
|
|
627
|
+
// Set the bounds for the IK to be infinite so that the hands start out
|
|
628
|
+
// unconstrained
|
|
629
|
+
l_hand->getIK()->getErrorMethod().setLinearBounds(
|
|
630
|
+
-linearBounds, linearBounds);
|
|
631
|
+
|
|
632
|
+
l_hand->getIK()->getErrorMethod().setAngularBounds(
|
|
633
|
+
-angularBounds, angularBounds);
|
|
634
|
+
|
|
635
|
+
// -- Set up the right hand --
|
|
636
|
+
|
|
637
|
+
// The orientation of the right hand frame is different than the left, so we
|
|
638
|
+
// need to adjust the signs of the relative transform
|
|
639
|
+
tf_hand.translation()[0] = -tf_hand.translation()[0];
|
|
640
|
+
tf_hand.translation()[1] = -tf_hand.translation()[1];
|
|
641
|
+
tf_hand.linear() = tf_hand.linear().inverse().eval();
|
|
642
|
+
|
|
643
|
+
// Create the right hand's end effector and set its relative transform
|
|
644
|
+
EndEffector* r_hand
|
|
645
|
+
= atlas->getBodyNode("r_hand")->createEndEffector("r_hand");
|
|
646
|
+
r_hand->setDefaultRelativeTransform(tf_hand, true);
|
|
647
|
+
|
|
648
|
+
// Create an interactive frame to use as the target for the right hand
|
|
649
|
+
dart::gui::osg::InteractiveFramePtr rh_target(
|
|
650
|
+
new dart::gui::osg::InteractiveFrame(Frame::World(), "rh_target"));
|
|
651
|
+
|
|
652
|
+
// Create the right hand's IK and set its target
|
|
653
|
+
r_hand->getIK(true)->setTarget(rh_target);
|
|
654
|
+
|
|
655
|
+
// Tell the right hand to use the whole body for its IK
|
|
656
|
+
r_hand->getIK()->useWholeBody();
|
|
657
|
+
|
|
658
|
+
// Set the weights for the gradient
|
|
659
|
+
r_hand->getIK()->getGradientMethod().setComponentWeights(rootjoint_weights);
|
|
660
|
+
|
|
661
|
+
// Set the bounds for the IK to be infinite so that the hands start out
|
|
662
|
+
// unconstrained
|
|
663
|
+
r_hand->getIK()->getErrorMethod().setLinearBounds(
|
|
664
|
+
-linearBounds, linearBounds);
|
|
665
|
+
|
|
666
|
+
r_hand->getIK()->getErrorMethod().setAngularBounds(
|
|
667
|
+
-angularBounds, angularBounds);
|
|
668
|
+
|
|
669
|
+
// Define the support geometry for the feet. These points will be used to
|
|
670
|
+
// compute the convex hull of the robot's support polygon
|
|
671
|
+
dart::math::SupportGeometry support;
|
|
672
|
+
const double sup_pos_x = 0.10 - 0.186;
|
|
673
|
+
const double sup_neg_x = -0.03 - 0.186;
|
|
674
|
+
const double sup_pos_y = 0.03;
|
|
675
|
+
const double sup_neg_y = -0.03;
|
|
676
|
+
support.push_back(Eigen::Vector3d(sup_neg_x, sup_neg_y, 0.0));
|
|
677
|
+
support.push_back(Eigen::Vector3d(sup_pos_x, sup_neg_y, 0.0));
|
|
678
|
+
support.push_back(Eigen::Vector3d(sup_pos_x, sup_pos_y, 0.0));
|
|
679
|
+
support.push_back(Eigen::Vector3d(sup_neg_x, sup_pos_y, 0.0));
|
|
680
|
+
|
|
681
|
+
// Create a relative transform that goes from the center of the feet to the
|
|
682
|
+
// bottom of the feet
|
|
683
|
+
Eigen::Isometry3d tf_foot(Eigen::Isometry3d::Identity());
|
|
684
|
+
tf_foot.translation() = Eigen::Vector3d(0.186, 0.0, -0.08);
|
|
685
|
+
|
|
686
|
+
// Constrain the feet to snap to the ground
|
|
687
|
+
linearBounds[2] = 1e-8;
|
|
688
|
+
|
|
689
|
+
// Constrain the feet to lie flat on the ground
|
|
690
|
+
angularBounds[0] = 1e-8;
|
|
691
|
+
angularBounds[1] = 1e-8;
|
|
692
|
+
|
|
693
|
+
// Create an end effector for the left foot and set its relative transform
|
|
694
|
+
EndEffector* l_foot
|
|
695
|
+
= atlas->getBodyNode("l_foot")->createEndEffector("l_foot");
|
|
696
|
+
l_foot->setRelativeTransform(tf_foot);
|
|
697
|
+
|
|
698
|
+
// Create an interactive frame to use as the target for the left foot
|
|
699
|
+
dart::gui::osg::InteractiveFramePtr lf_target(
|
|
700
|
+
new dart::gui::osg::InteractiveFrame(Frame::World(), "lf_target"));
|
|
701
|
+
|
|
702
|
+
// Create the left foot's IK and set its target
|
|
703
|
+
l_foot->getIK(true)->setTarget(lf_target);
|
|
704
|
+
|
|
705
|
+
// Set the left foot's IK hierarchy level to 1. This will project its IK goals
|
|
706
|
+
// through the null space of any IK modules that are on level 0. This means
|
|
707
|
+
// that it will try to accomplish its goals while also accommodating the goals
|
|
708
|
+
// of other modules.
|
|
709
|
+
l_foot->getIK()->setHierarchyLevel(1);
|
|
710
|
+
|
|
711
|
+
// Use the bounds defined above
|
|
712
|
+
l_foot->getIK()->getErrorMethod().setLinearBounds(
|
|
713
|
+
-linearBounds, linearBounds);
|
|
714
|
+
l_foot->getIK()->getErrorMethod().setAngularBounds(
|
|
715
|
+
-angularBounds, angularBounds);
|
|
716
|
+
|
|
717
|
+
// Create Support for the foot and give it geometry
|
|
718
|
+
l_foot->getSupport(true)->setGeometry(support);
|
|
719
|
+
|
|
720
|
+
// Turn on support mode so that it can be used as a foot
|
|
721
|
+
l_foot->getSupport()->setActive();
|
|
722
|
+
|
|
723
|
+
// Create an end effector for the right foot and set its relative transform
|
|
724
|
+
EndEffector* r_foot
|
|
725
|
+
= atlas->getBodyNode("r_foot")->createEndEffector("r_foot");
|
|
726
|
+
r_foot->setRelativeTransform(tf_foot);
|
|
727
|
+
|
|
728
|
+
// Create an interactive frame to use as the target for the right foot
|
|
729
|
+
dart::gui::osg::InteractiveFramePtr rf_target(
|
|
730
|
+
new dart::gui::osg::InteractiveFrame(Frame::World(), "rf_target"));
|
|
731
|
+
|
|
732
|
+
// Create the right foot's IK module and set its target
|
|
733
|
+
r_foot->getIK(true)->setTarget(rf_target);
|
|
734
|
+
|
|
735
|
+
// Set the right foot's IK hierarchy level to 1
|
|
736
|
+
r_foot->getIK()->setHierarchyLevel(1);
|
|
737
|
+
|
|
738
|
+
// Use the bounds defined above
|
|
739
|
+
r_foot->getIK()->getErrorMethod().setLinearBounds(
|
|
740
|
+
-linearBounds, linearBounds);
|
|
741
|
+
r_foot->getIK()->getErrorMethod().setAngularBounds(
|
|
742
|
+
-angularBounds, angularBounds);
|
|
743
|
+
|
|
744
|
+
// Create Support for the foot and give it geometry
|
|
745
|
+
r_foot->getSupport(true)->setGeometry(support);
|
|
746
|
+
|
|
747
|
+
// Turn on support mode so that it can be used as a foot
|
|
748
|
+
r_foot->getSupport()->setActive();
|
|
749
|
+
|
|
750
|
+
// Move atlas to the ground so that it starts out squatting with its feet on
|
|
751
|
+
// the ground
|
|
752
|
+
double heightChange = -r_foot->getWorldTransform().translation()[2];
|
|
753
|
+
atlas->getDof(5)->setPosition(heightChange);
|
|
754
|
+
|
|
755
|
+
// Now that the feet are on the ground, we should set their target transforms
|
|
756
|
+
l_foot->getIK()->getTarget()->setTransform(l_foot->getTransform());
|
|
757
|
+
r_foot->getIK()->getTarget()->setTransform(r_foot->getTransform());
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
void setupWholeBodySolver(const SkeletonPtr& atlas)
|
|
761
|
+
{
|
|
762
|
+
// The default
|
|
763
|
+
std::shared_ptr<dart::optimizer::GradientDescentSolver> solver
|
|
764
|
+
= std::dynamic_pointer_cast<dart::optimizer::GradientDescentSolver>(
|
|
765
|
+
atlas->getIK(true)->getSolver());
|
|
766
|
+
solver->setNumMaxIterations(10);
|
|
767
|
+
|
|
768
|
+
std::size_t nDofs = atlas->getNumDofs();
|
|
769
|
+
|
|
770
|
+
double default_weight = 0.01;
|
|
771
|
+
Eigen::VectorXd weights = default_weight * Eigen::VectorXd::Ones(nDofs);
|
|
772
|
+
weights[2] = 0.0;
|
|
773
|
+
weights[3] = 0.0;
|
|
774
|
+
weights[4] = 0.0;
|
|
775
|
+
|
|
776
|
+
weights[6] *= 0.2;
|
|
777
|
+
weights[7] *= 0.2;
|
|
778
|
+
weights[8] *= 0.2;
|
|
779
|
+
|
|
780
|
+
Eigen::VectorXd lower_posture = Eigen::VectorXd::Constant(
|
|
781
|
+
nDofs, -std::numeric_limits<double>::infinity());
|
|
782
|
+
lower_posture[0] = -0.35;
|
|
783
|
+
lower_posture[1] = -0.35;
|
|
784
|
+
lower_posture[5] = 0.600;
|
|
785
|
+
|
|
786
|
+
lower_posture[6] = -0.1;
|
|
787
|
+
lower_posture[7] = -0.1;
|
|
788
|
+
lower_posture[8] = -0.1;
|
|
789
|
+
|
|
790
|
+
Eigen::VectorXd upper_posture = Eigen::VectorXd::Constant(
|
|
791
|
+
nDofs, std::numeric_limits<double>::infinity());
|
|
792
|
+
upper_posture[0] = 0.35;
|
|
793
|
+
upper_posture[1] = 0.35;
|
|
794
|
+
upper_posture[5] = 0.885;
|
|
795
|
+
|
|
796
|
+
upper_posture[6] = 0.1;
|
|
797
|
+
upper_posture[7] = 0.1;
|
|
798
|
+
upper_posture[8] = 0.1;
|
|
799
|
+
|
|
800
|
+
std::shared_ptr<RelaxedPosture> objective = std::make_shared<RelaxedPosture>(
|
|
801
|
+
atlas->getPositions(), lower_posture, upper_posture, weights);
|
|
802
|
+
atlas->getIK()->setObjective(objective);
|
|
803
|
+
|
|
804
|
+
std::shared_ptr<dart::constraint::BalanceConstraint> balance
|
|
805
|
+
= std::make_shared<dart::constraint::BalanceConstraint>(atlas->getIK());
|
|
806
|
+
atlas->getIK()->getProblem()->addEqConstraint(balance);
|
|
807
|
+
|
|
808
|
+
// // Shift the center of mass towards the support polygon center while
|
|
809
|
+
// trying
|
|
810
|
+
// // to keep the support polygon where it is
|
|
811
|
+
// balance->setErrorMethod(dart::constraint::BalanceConstraint::FROM_CENTROID);
|
|
812
|
+
// balance->setBalanceMethod(dart::constraint::BalanceConstraint::SHIFT_COM);
|
|
813
|
+
|
|
814
|
+
// // Keep shifting the center of mass towards the center of the support
|
|
815
|
+
// // polygon, even if it is already inside. This is useful for trying to
|
|
816
|
+
// // optimize a stance
|
|
817
|
+
// balance->setErrorMethod(dart::constraint::BalanceConstraint::OPTIMIZE_BALANCE);
|
|
818
|
+
// balance->setBalanceMethod(dart::constraint::BalanceConstraint::SHIFT_COM);
|
|
819
|
+
|
|
820
|
+
// // Try to leave the center of mass where it is while moving the support
|
|
821
|
+
// // polygon to be under the current center of mass location
|
|
822
|
+
balance->setErrorMethod(dart::constraint::BalanceConstraint::FROM_CENTROID);
|
|
823
|
+
balance->setBalanceMethod(dart::constraint::BalanceConstraint::SHIFT_SUPPORT);
|
|
824
|
+
|
|
825
|
+
// // Try to leave the center of mass where it is while moving the support
|
|
826
|
+
// // point that is closest to the center of mass
|
|
827
|
+
// balance->setErrorMethod(dart::constraint::BalanceConstraint::FROM_EDGE);
|
|
828
|
+
// balance->setBalanceMethod(dart::constraint::BalanceConstraint::SHIFT_SUPPORT);
|
|
829
|
+
|
|
830
|
+
// Note that using the FROM_EDGE error method is liable to leave the center of
|
|
831
|
+
// mass visualization red even when the constraint was successfully solved.
|
|
832
|
+
// This is because the constraint solver has a tiny bit of tolerance that
|
|
833
|
+
// allows the Problem to be considered solved when the center of mass is
|
|
834
|
+
// microscopically outside of the support polygon. This is an inherent risk of
|
|
835
|
+
// using FROM_EDGE instead of FROM_CENTROID.
|
|
836
|
+
|
|
837
|
+
// Feel free to experiment with the different balancing methods. You will find
|
|
838
|
+
// that some work much better for user interaction than others.
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
void enableDragAndDrops(
|
|
842
|
+
dart::gui::osg::Viewer& viewer, const SkeletonPtr& atlas)
|
|
843
|
+
{
|
|
844
|
+
// Turn on drag-and-drop for the whole Skeleton
|
|
845
|
+
for (std::size_t i = 0; i < atlas->getNumBodyNodes(); ++i)
|
|
846
|
+
viewer.enableDragAndDrop(atlas->getBodyNode(i), false, false);
|
|
847
|
+
|
|
848
|
+
atlas->eachEndEffector([&](EndEffector* ee) {
|
|
849
|
+
if (!ee->getIK())
|
|
850
|
+
return;
|
|
851
|
+
|
|
852
|
+
// Check whether the target is an interactive frame, and add it if it is
|
|
853
|
+
if (const auto& frame
|
|
854
|
+
= std::dynamic_pointer_cast<dart::gui::osg::InteractiveFrame>(
|
|
855
|
+
ee->getIK()->getTarget()))
|
|
856
|
+
viewer.enableDragAndDrop(frame.get());
|
|
857
|
+
});
|
|
858
|
+
}
|
|
859
|
+
|
|
860
|
+
int main()
|
|
861
|
+
{
|
|
862
|
+
// Create and configure the physics world
|
|
863
|
+
WorldPtr world = World::create();
|
|
864
|
+
world->setGravity(Eigen::Vector3d(0.0, -9.81, 0.0));
|
|
865
|
+
|
|
866
|
+
// Create and add skeletons to the world
|
|
867
|
+
SkeletonPtr atlas = createAtlas();
|
|
868
|
+
SkeletonPtr ground = createGround();
|
|
869
|
+
world->addSkeleton(atlas);
|
|
870
|
+
world->addSkeleton(ground);
|
|
871
|
+
|
|
872
|
+
// Setup robot configuration and control
|
|
873
|
+
setupStartConfiguration(atlas);
|
|
874
|
+
setupEndEffectors(atlas);
|
|
875
|
+
setupWholeBodySolver(atlas);
|
|
876
|
+
|
|
877
|
+
// Create the OSG world node
|
|
878
|
+
::osg::ref_ptr<TeleoperationWorld> worldNode
|
|
879
|
+
= new TeleoperationWorld(world, atlas);
|
|
880
|
+
|
|
881
|
+
// Create the OSG viewer
|
|
882
|
+
dart::gui::osg::Viewer viewer;
|
|
883
|
+
viewer.allowSimulation(false); // Kinematic control only
|
|
884
|
+
viewer.addWorldNode(worldNode);
|
|
885
|
+
|
|
886
|
+
// Setup input handling
|
|
887
|
+
::osg::ref_ptr<InputHandler> inputHandler
|
|
888
|
+
= new InputHandler(&viewer, worldNode, atlas, world);
|
|
889
|
+
viewer.addEventHandler(inputHandler);
|
|
890
|
+
|
|
891
|
+
// Enable interactive manipulation
|
|
892
|
+
enableDragAndDrops(viewer, atlas);
|
|
893
|
+
|
|
894
|
+
// Add visualizations
|
|
895
|
+
viewer.addAttachment(
|
|
896
|
+
new dart::gui::osg::SupportPolygonVisual(atlas, display_elevation));
|
|
897
|
+
|
|
898
|
+
// Configure viewer window
|
|
899
|
+
viewer.setUpViewInWindow(0, 0, 1280, 960);
|
|
900
|
+
viewer.getCameraManipulator()->setHomePosition(
|
|
901
|
+
::osg::Vec3(5.34, 3.00, 2.41),
|
|
902
|
+
::osg::Vec3(0.00, 0.00, 1.00),
|
|
903
|
+
::osg::Vec3(-0.20, -0.08, 0.98));
|
|
904
|
+
viewer.setCameraManipulator(viewer.getCameraManipulator());
|
|
905
|
+
|
|
906
|
+
// Display usage instructions
|
|
907
|
+
std::cout << viewer.getInstructions() << std::endl;
|
|
908
|
+
std::cout << "\n=== Atlas Puppet Control Instructions ===\n"
|
|
909
|
+
<< "Mouse Controls:\n"
|
|
910
|
+
<< " Alt + Click: Translate body (preserve orientation)\n"
|
|
911
|
+
<< " Ctrl + Click: Rotate body (preserve position)\n"
|
|
912
|
+
<< " Shift + Click: Move using parent joint only\n\n"
|
|
913
|
+
<< "Keyboard Controls:\n"
|
|
914
|
+
<< " 1-4: Toggle EndEffector interactive targets\n"
|
|
915
|
+
<< " WASD: Move robot (forward/left/back/right)\n"
|
|
916
|
+
<< " Q/E: Rotate robot (counter-clockwise/clockwise)\n"
|
|
917
|
+
<< " F/Z: Adjust elevation (up/down)\n"
|
|
918
|
+
<< " X/C: Toggle left/right foot support\n"
|
|
919
|
+
<< " R: Optimize robot posture\n"
|
|
920
|
+
<< " T: Reset to relaxed posture\n\n"
|
|
921
|
+
<< "Notes:\n"
|
|
922
|
+
<< "- Uses iterative Jacobian methods (can be sensitive)\n"
|
|
923
|
+
<< "- Use R/T keys for recovery from tangled configurations\n"
|
|
924
|
+
<< "- Green polygon: support area, Blue/red ball: center of mass\n"
|
|
925
|
+
<< "- Kinematic control only (no physics simulation)\n"
|
|
926
|
+
<< std::endl;
|
|
927
|
+
|
|
928
|
+
// Start the OSG viewer main loop
|
|
929
|
+
return viewer.run();
|
|
930
|
+
}
|