roboticstoolbox-python 1.4.0__py3-none-any.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.
- roboticstoolbox/__init__.py +107 -0
- roboticstoolbox/backends/Connector.py +113 -0
- roboticstoolbox/backends/Dynamixel/README.md +9 -0
- roboticstoolbox/backends/Dynamixel/dynamixel.json +581 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_io.py +450 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/LICENSE +201 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/README.md +28 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/ReleaseNote.md +181 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/__init__.py +27 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_bulk_read.py +163 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_bulk_write.py +109 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_sync_read.py +166 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_sync_write.py +99 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/packet_handler.py +33 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/port_handler.py +155 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/protocol1_packet_handler.py +548 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/protocol2_packet_handler.py +1080 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/robotis_def.py +75 -0
- roboticstoolbox/backends/Dynamixel/dyndata.py +121 -0
- roboticstoolbox/backends/PyPlot/EllipsePlot.py +256 -0
- roboticstoolbox/backends/PyPlot/PyPlot.py +778 -0
- roboticstoolbox/backends/PyPlot/PyPlot2.py +537 -0
- roboticstoolbox/backends/PyPlot/README.md +67 -0
- roboticstoolbox/backends/PyPlot/RobotPlot.py +247 -0
- roboticstoolbox/backends/PyPlot/RobotPlot2.py +123 -0
- roboticstoolbox/backends/PyPlot/__init__.py +4 -0
- roboticstoolbox/backends/ROS/ROS.py +129 -0
- roboticstoolbox/backends/ROS/__init__.py +3 -0
- roboticstoolbox/backends/__init__.py +39 -0
- roboticstoolbox/backends/swift/__init__.py +165 -0
- roboticstoolbox/bin/__init__.py +0 -0
- roboticstoolbox/bin/_bintools.py +61 -0
- roboticstoolbox/bin/rtbtool.py +404 -0
- roboticstoolbox/blocks/Icons/250x250/armplot.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/bicycle.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/camera.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/circlepath.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/coriolis.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/ctraj.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/delta2tr.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/diffsteer.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/fdyn.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/fdynx.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/fkine.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/gravload.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/idyn.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/idynx.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/ikine.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/inertia.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/jacobian.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/jtraj.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/lspb.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/multirotor.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/multirotormixer.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/multirotorplot.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/point2tr.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/tr2delta.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/tr2t.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/unicycle.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/vehicleplot.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/armplot.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/bicycle.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/camera.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/circlepath.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/coriolis.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/delta2tr.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/diffsteer.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/fdyn.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/fdynx.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/fkine.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/gravload.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/idyn.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/idynx.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/ikine.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/inertia.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/jacobian.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/jtraj.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/lspb.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/multirotor.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/multirotormixer.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/multirotorplot.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/point2tr.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/tr2delta.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/tr2t.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/unicycle.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/vehicleplot.png +0 -0
- roboticstoolbox/blocks/Icons/armplot.png +0 -0
- roboticstoolbox/blocks/Icons/bicycle.png +0 -0
- roboticstoolbox/blocks/Icons/camera.png +0 -0
- roboticstoolbox/blocks/Icons/circlepath.png +0 -0
- roboticstoolbox/blocks/Icons/coriolis.png +0 -0
- roboticstoolbox/blocks/Icons/ctraj.png +0 -0
- roboticstoolbox/blocks/Icons/delta2tr.png +0 -0
- roboticstoolbox/blocks/Icons/diffsteer.png +0 -0
- roboticstoolbox/blocks/Icons/fdyn.png +0 -0
- roboticstoolbox/blocks/Icons/fdynx.png +0 -0
- roboticstoolbox/blocks/Icons/fkine.png +0 -0
- roboticstoolbox/blocks/Icons/gravload.png +0 -0
- roboticstoolbox/blocks/Icons/idyn.png +0 -0
- roboticstoolbox/blocks/Icons/idynx.png +0 -0
- roboticstoolbox/blocks/Icons/ikine.png +0 -0
- roboticstoolbox/blocks/Icons/inertia.png +0 -0
- roboticstoolbox/blocks/Icons/jacobian.png +0 -0
- roboticstoolbox/blocks/Icons/jtraj.png +0 -0
- roboticstoolbox/blocks/Icons/lspb.png +0 -0
- roboticstoolbox/blocks/Icons/multirotor.png +0 -0
- roboticstoolbox/blocks/Icons/multirotormixer.png +0 -0
- roboticstoolbox/blocks/Icons/multirotorplot.png +0 -0
- roboticstoolbox/blocks/Icons/point2tr.png +0 -0
- roboticstoolbox/blocks/Icons/tr2delta.png +0 -0
- roboticstoolbox/blocks/Icons/tr2t.png +0 -0
- roboticstoolbox/blocks/Icons/unicycle.png +0 -0
- roboticstoolbox/blocks/Icons/vehicleplot.png +0 -0
- roboticstoolbox/blocks/README.md +43 -0
- roboticstoolbox/blocks/__init__.py +6 -0
- roboticstoolbox/blocks/arm.py +1591 -0
- roboticstoolbox/blocks/mobile.py +522 -0
- roboticstoolbox/blocks/quad_model.py +132 -0
- roboticstoolbox/blocks/spatial.py +245 -0
- roboticstoolbox/blocks/uav.py +949 -0
- roboticstoolbox/demo/__init__.py +0 -0
- roboticstoolbox/demo/eigdemo.py +112 -0
- roboticstoolbox/demo/tripleangledemo.py +239 -0
- roboticstoolbox/demo/twistdemo.py +175 -0
- roboticstoolbox/ets/ET.py +439 -0
- roboticstoolbox/ets/ET2.py +179 -0
- roboticstoolbox/ets/ETS.py +2013 -0
- roboticstoolbox/ets/ETS2.py +449 -0
- roboticstoolbox/ets/_ET.py +668 -0
- roboticstoolbox/ets/_ETS.py +781 -0
- roboticstoolbox/ets/__init__.py +11 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Cholesky +45 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/CholmodSupport +48 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Core +384 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Dense +7 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Eigen +2 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Eigenvalues +60 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Geometry +59 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Householder +29 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/IterativeLinearSolvers +48 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Jacobi +32 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/KLUSupport +41 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/LU +47 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/MetisSupport +35 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/OrderingMethods +70 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/PaStiXSupport +49 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/PardisoSupport +35 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/QR +50 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/QtAlignedMalloc +39 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SPQRSupport +34 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SVD +50 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Sparse +34 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SparseCholesky +37 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SparseCore +69 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SparseLU +50 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SparseQR +36 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/StdDeque +27 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/StdList +26 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/StdVector +27 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SuperLUSupport +64 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/UmfPackSupport +40 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Cholesky/LDLT.h +688 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Cholesky/LLT.h +558 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ArithmeticSequence.h +413 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Array.h +417 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ArrayBase.h +226 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ArrayWrapper.h +209 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Assign.h +90 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/AssignEvaluator.h +1010 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Assign_MKL.h +178 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/BandMatrix.h +353 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Block.h +448 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/BooleanRedux.h +162 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CommaInitializer.h +164 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ConditionEstimator.h +175 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CoreEvaluators.h +1741 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CoreIterators.h +132 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CwiseBinaryOp.h +183 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CwiseTernaryOp.h +197 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CwiseUnaryOp.h +103 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CwiseUnaryView.h +132 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/DenseBase.h +701 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/DenseCoeffsBase.h +685 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/DenseStorage.h +652 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Diagonal.h +258 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/DiagonalMatrix.h +391 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/DiagonalProduct.h +28 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Dot.h +318 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/EigenBase.h +160 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ForceAlignedAccess.h +150 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Fuzzy.h +155 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/GeneralProduct.h +465 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/GenericPacketMath.h +1040 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/GlobalFunctions.h +194 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/IO.h +258 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/IndexedView.h +237 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Inverse.h +117 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Map.h +171 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/MapBase.h +310 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/MathFunctions.h +2057 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/MathFunctionsImpl.h +200 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Matrix.h +565 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/MatrixBase.h +547 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/NestByValue.h +85 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/NoAlias.h +109 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/NumTraits.h +335 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/PermutationMatrix.h +605 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/PlainObjectBase.h +1128 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Product.h +191 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ProductEvaluators.h +1179 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Random.h +218 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Redux.h +515 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Ref.h +381 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Replicate.h +142 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Reshaped.h +454 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ReturnByValue.h +119 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Reverse.h +217 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Select.h +164 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/SelfAdjointView.h +365 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Solve.h +188 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/SolveTriangular.h +235 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/SolverBase.h +168 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/StableNorm.h +251 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/StlIterators.h +463 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Stride.h +116 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Swap.h +68 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Transpose.h +464 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Transpositions.h +386 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/TriangularMatrix.h +1001 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/VectorBlock.h +96 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/VectorwiseOp.h +784 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Visitor.h +381 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX/Complex.h +372 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/Half.h +942 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/Settings.h +49 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/NEON/Complex.h +584 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SSE/Complex.h +351 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/StlFunctors.h +166 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/Parallelizer.h +180 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/BlasUtil.h +583 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/Constants.h +563 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/IntegralConstant.h +272 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/MKL_support.h +137 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/Macros.h +1464 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/Memory.h +1163 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/Meta.h +812 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/NonMPL2.h +3 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/StaticAssert.h +221 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/XprHelper.h +856 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/RealQZ.h +657 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/RealSchur.h +558 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/AlignedBox.h +486 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/AngleAxis.h +247 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/EulerAngles.h +114 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Homogeneous.h +501 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Hyperplane.h +282 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/OrthoMethods.h +235 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Quaternion.h +870 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Rotation2D.h +199 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/RotationBase.h +206 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Scaling.h +188 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Transform.h +1563 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Translation.h +202 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Umeyama.h +166 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Householder/BlockHouseholder.h +110 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Householder/Householder.h +176 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Householder/HouseholderSequence.h +545 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Jacobi/Jacobi.h +483 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/Determinant.h +117 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/FullPivLU.h +877 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/InverseImpl.h +432 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/PartialPivLU.h +624 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/arch/InverseSize4.h +351 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/MetisSupport/MetisSupport.h +137 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/OrderingMethods/Amd.h +435 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/OrderingMethods/Ordering.h +153 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/HouseholderQR.h +434 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SVD/BDCSVD.h +1366 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SVD/JacobiSVD.h +812 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SVD/SVDBase.h +376 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/AmbiVector.h +378 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/CompressedStorage.h +274 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseAssign.h +270 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseBlock.h +571 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseColEtree.h +206 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseDot.h +98 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseMap.h +305 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparsePermutation.h +178 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseProduct.h +181 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseRedux.h +49 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseRef.h +397 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseTranspose.h +92 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseUtil.h +186 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseVector.h +478 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseView.h +254 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/TriangularSolver.h +315 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU.h +923 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseQR/SparseQR.h +758 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/StlSupport/StdDeque.h +116 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/StlSupport/StdList.h +106 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/StlSupport/StdVector.h +131 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/StlSupport/details.h +84 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/Image.h +82 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/Kernel.h +79 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/RealSvd2x2.h +55 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/blas.h +440 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/lapack.h +152 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/lapacke.h +16292 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/lapacke_mangling.h +17 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/BlockMethods.h +1442 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/ReshapedMethods.h +149 -0
- roboticstoolbox/ets/cpp-extensions/README.md +73 -0
- roboticstoolbox/ets/cpp-extensions/fknm_nb.cpp +534 -0
- roboticstoolbox/ets/cpp-extensions/ik.cpp +301 -0
- roboticstoolbox/ets/cpp-extensions/ik.h +59 -0
- roboticstoolbox/ets/cpp-extensions/linalg.cpp +316 -0
- roboticstoolbox/ets/cpp-extensions/linalg.h +64 -0
- roboticstoolbox/ets/cpp-extensions/methods.cpp +372 -0
- roboticstoolbox/ets/cpp-extensions/methods.h +32 -0
- roboticstoolbox/ets/cpp-extensions/structs.cpp +24 -0
- roboticstoolbox/ets/cpp-extensions/structs.h +62 -0
- roboticstoolbox/ets/fknm.py +366 -0
- roboticstoolbox/mobile/Animations.py +485 -0
- roboticstoolbox/mobile/Bug2.py +455 -0
- roboticstoolbox/mobile/CurvaturePolyPlanner.py +179 -0
- roboticstoolbox/mobile/DistanceTransformPlanner.py +395 -0
- roboticstoolbox/mobile/DstarPlanner.py +591 -0
- roboticstoolbox/mobile/DubinsPlanner.py +474 -0
- roboticstoolbox/mobile/EKF.py +1617 -0
- roboticstoolbox/mobile/LatticePlanner.py +419 -0
- roboticstoolbox/mobile/OccGrid.py +613 -0
- roboticstoolbox/mobile/PRMPlanner.py +348 -0
- roboticstoolbox/mobile/ParticleFilter.py +706 -0
- roboticstoolbox/mobile/PlannerBase.py +1009 -0
- roboticstoolbox/mobile/PoseGraph.py +544 -0
- roboticstoolbox/mobile/QuinticPolyPlanner.py +349 -0
- roboticstoolbox/mobile/RRTPlanner.py +359 -0
- roboticstoolbox/mobile/ReedsSheppPlanner.py +545 -0
- roboticstoolbox/mobile/Vehicle.py +1909 -0
- roboticstoolbox/mobile/__init__.py +194 -0
- roboticstoolbox/mobile/drivers.py +397 -0
- roboticstoolbox/mobile/landmarkmap.py +181 -0
- roboticstoolbox/mobile/sensors.py +789 -0
- roboticstoolbox/models/DH/AL5D.py +121 -0
- roboticstoolbox/models/DH/Ball.py +87 -0
- roboticstoolbox/models/DH/Baxter.py +91 -0
- roboticstoolbox/models/DH/Cobra600.py +63 -0
- roboticstoolbox/models/DH/Coil.py +80 -0
- roboticstoolbox/models/DH/Hyper.py +81 -0
- roboticstoolbox/models/DH/Hyper3d.py +83 -0
- roboticstoolbox/models/DH/IRB140.py +159 -0
- roboticstoolbox/models/DH/Jaco.py +102 -0
- roboticstoolbox/models/DH/KR5.py +112 -0
- roboticstoolbox/models/DH/LWR4.py +80 -0
- roboticstoolbox/models/DH/Mico.py +102 -0
- roboticstoolbox/models/DH/Orion5.py +91 -0
- roboticstoolbox/models/DH/P8.py +80 -0
- roboticstoolbox/models/DH/Panda.py +213 -0
- roboticstoolbox/models/DH/Planar2.py +69 -0
- roboticstoolbox/models/DH/Planar3.py +51 -0
- roboticstoolbox/models/DH/Puma560.py +326 -0
- roboticstoolbox/models/DH/README.md +216 -0
- roboticstoolbox/models/DH/Sawyer.py +85 -0
- roboticstoolbox/models/DH/Stanford.py +147 -0
- roboticstoolbox/models/DH/TwoLink.py +153 -0
- roboticstoolbox/models/DH/UR10.py +124 -0
- roboticstoolbox/models/DH/UR3.py +98 -0
- roboticstoolbox/models/DH/UR5.py +98 -0
- roboticstoolbox/models/DH/Uprighttl.py +24 -0
- roboticstoolbox/models/DH/__init__.py +52 -0
- roboticstoolbox/models/ETS/Frankie.py +90 -0
- roboticstoolbox/models/ETS/GenericSeven.py +54 -0
- roboticstoolbox/models/ETS/Omni.py +74 -0
- roboticstoolbox/models/ETS/Panda.py +69 -0
- roboticstoolbox/models/ETS/Planar2.py +49 -0
- roboticstoolbox/models/ETS/Planar_Y.py +65 -0
- roboticstoolbox/models/ETS/Puma560.py +70 -0
- roboticstoolbox/models/ETS/XYPanda.py +84 -0
- roboticstoolbox/models/ETS/__init__.py +20 -0
- roboticstoolbox/models/README.md +9 -0
- roboticstoolbox/models/URDF/AL5D.py +45 -0
- roboticstoolbox/models/URDF/Fetch.py +96 -0
- roboticstoolbox/models/URDF/Frankie.py +67 -0
- roboticstoolbox/models/URDF/FrankieOmni.py +94 -0
- roboticstoolbox/models/URDF/Jaco.py +49 -0
- roboticstoolbox/models/URDF/KinovaGen3.py +63 -0
- roboticstoolbox/models/URDF/LBR.py +57 -0
- roboticstoolbox/models/URDF/PR2.py +66 -0
- roboticstoolbox/models/URDF/Panda.py +60 -0
- roboticstoolbox/models/URDF/Puma560.py +90 -0
- roboticstoolbox/models/URDF/UR10.py +43 -0
- roboticstoolbox/models/URDF/UR3.py +43 -0
- roboticstoolbox/models/URDF/UR5.py +64 -0
- roboticstoolbox/models/URDF/URDFRobot.py +402 -0
- roboticstoolbox/models/URDF/Valkyrie.py +110 -0
- roboticstoolbox/models/URDF/YuMi.py +107 -0
- roboticstoolbox/models/URDF/__init__.py +51 -0
- roboticstoolbox/models/URDF/px100.py +48 -0
- roboticstoolbox/models/URDF/px150.py +48 -0
- roboticstoolbox/models/URDF/rx150.py +48 -0
- roboticstoolbox/models/URDF/rx200.py +48 -0
- roboticstoolbox/models/URDF/vx300.py +48 -0
- roboticstoolbox/models/URDF/vx300s.py +48 -0
- roboticstoolbox/models/URDF/wx200.py +48 -0
- roboticstoolbox/models/URDF/wx250.py +48 -0
- roboticstoolbox/models/URDF/wx250s.py +48 -0
- roboticstoolbox/models/__init__.py +7 -0
- roboticstoolbox/models/catalog.py +226 -0
- roboticstoolbox/robot/BaseRobot.py +2589 -0
- roboticstoolbox/robot/DHFactor.py +522 -0
- roboticstoolbox/robot/DHLink.py +949 -0
- roboticstoolbox/robot/DHRobot.py +2591 -0
- roboticstoolbox/robot/Dynamics.py +1537 -0
- roboticstoolbox/robot/ELink.py +23 -0
- roboticstoolbox/robot/ERobot.py +25 -0
- roboticstoolbox/robot/Gripper.py +242 -0
- roboticstoolbox/robot/IK.py +1378 -0
- roboticstoolbox/robot/Link.py +1557 -0
- roboticstoolbox/robot/PoERobot.py +352 -0
- roboticstoolbox/robot/Robot.py +2157 -0
- roboticstoolbox/robot/RobotKinematics.py +1505 -0
- roboticstoolbox/robot/RobotPlottingMPL.py +355 -0
- roboticstoolbox/robot/RobotProto.py +156 -0
- roboticstoolbox/robot/__init__.py +57 -0
- roboticstoolbox/robot/cpp-extensions/README.md +29 -0
- roboticstoolbox/robot/cpp-extensions/frne.h +96 -0
- roboticstoolbox/robot/cpp-extensions/frne_nb.cpp +237 -0
- roboticstoolbox/robot/cpp-extensions/ne.c +495 -0
- roboticstoolbox/robot/cpp-extensions/vmath.c +163 -0
- roboticstoolbox/robot/cpp-extensions/vmath.h +32 -0
- roboticstoolbox/robot/frne.py +51 -0
- roboticstoolbox/tools/DHFactor.py +375 -0
- roboticstoolbox/tools/Ticker.py +53 -0
- roboticstoolbox/tools/__init__.py +54 -0
- roboticstoolbox/tools/data.py +187 -0
- roboticstoolbox/tools/jsingu.py +51 -0
- roboticstoolbox/tools/null.py +48 -0
- roboticstoolbox/tools/numerical.py +96 -0
- roboticstoolbox/tools/p_servo.py +108 -0
- roboticstoolbox/tools/params.py +11 -0
- roboticstoolbox/tools/plot.py +109 -0
- roboticstoolbox/tools/trajectory.py +1152 -0
- roboticstoolbox/tools/types.py +13 -0
- roboticstoolbox/tools/urdf/__init__.py +45 -0
- roboticstoolbox/tools/urdf/tests/data/ur5.urdf +341 -0
- roboticstoolbox/tools/urdf/tests/test_urdf.py +116 -0
- roboticstoolbox/tools/urdf/urdf.py +1930 -0
- roboticstoolbox/tools/urdf/utils.py +50 -0
- roboticstoolbox_python-1.4.0.dist-info/METADATA +664 -0
- roboticstoolbox_python-1.4.0.dist-info/RECORD +610 -0
- roboticstoolbox_python-1.4.0.dist-info/WHEEL +5 -0
- roboticstoolbox_python-1.4.0.dist-info/entry_points.txt +6 -0
- roboticstoolbox_python-1.4.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
import numpy as np
|
|
4
|
+
from roboticstoolbox.models.URDF.URDFRobot import URDFRobot
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UR3(URDFRobot):
|
|
8
|
+
"""
|
|
9
|
+
Class that imports a UR3 URDF model
|
|
10
|
+
|
|
11
|
+
``UR3()`` is a class which imports a Universal Robotics UR3 robot
|
|
12
|
+
definition from a URDF file. The model describes its kinematic and
|
|
13
|
+
graphical characteristics.
|
|
14
|
+
|
|
15
|
+
.. runblock:: pycon
|
|
16
|
+
|
|
17
|
+
>>> import roboticstoolbox as rtb
|
|
18
|
+
>>> robot = rtb.models.URDF.UR3()
|
|
19
|
+
>>> print(robot)
|
|
20
|
+
|
|
21
|
+
Defined joint configurations are:
|
|
22
|
+
|
|
23
|
+
- qz, zero joint angle configuration, 'L' shaped configuration
|
|
24
|
+
- qr, vertical 'READY' configuration
|
|
25
|
+
|
|
26
|
+
.. codeauthor:: Jesse Haviland
|
|
27
|
+
.. sectionauthor:: Peter Corke
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def __init__(self):
|
|
31
|
+
|
|
32
|
+
super().__init__("ur3", manufacturer="Universal Robotics")
|
|
33
|
+
|
|
34
|
+
self.qr = np.array([np.pi, 0, 0, 0, np.pi / 2, 0])
|
|
35
|
+
self.qz = np.zeros(6)
|
|
36
|
+
|
|
37
|
+
self.addconfiguration("qr", self.qr)
|
|
38
|
+
self.addconfiguration("qz", self.qz)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
if __name__ == "__main__": # pragma nocover
|
|
42
|
+
robot = UR3()
|
|
43
|
+
print(robot)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
import numpy as np
|
|
4
|
+
from roboticstoolbox.models.URDF.URDFRobot import URDFRobot
|
|
5
|
+
from math import pi
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class UR5(URDFRobot):
|
|
9
|
+
"""
|
|
10
|
+
Class that imports a UR5 URDF model
|
|
11
|
+
|
|
12
|
+
``UR3()`` is a class which imports a Universal Robotics UR5 robot
|
|
13
|
+
definition from a URDF file. The model describes its kinematic and
|
|
14
|
+
graphical characteristics.
|
|
15
|
+
|
|
16
|
+
.. runblock:: pycon
|
|
17
|
+
|
|
18
|
+
>>> import roboticstoolbox as rtb
|
|
19
|
+
>>> robot = rtb.models.URDF.UR5()
|
|
20
|
+
>>> print(robot)
|
|
21
|
+
|
|
22
|
+
Defined joint configurations are:
|
|
23
|
+
|
|
24
|
+
- qz, zero joint angle configuration, 'L' shaped configuration
|
|
25
|
+
- qr, vertical 'READY' configuration
|
|
26
|
+
|
|
27
|
+
.. codeauthor:: Jesse Haviland
|
|
28
|
+
.. sectionauthor:: Peter Corke
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
def __init__(self):
|
|
32
|
+
|
|
33
|
+
super().__init__("ur5", manufacturer="Universal Robotics", gripper_link_index=7)
|
|
34
|
+
|
|
35
|
+
# for link in links:
|
|
36
|
+
# print(link)
|
|
37
|
+
|
|
38
|
+
self.qr = np.array([np.pi, 0, 0, 0, np.pi / 2, 0])
|
|
39
|
+
self.qz = np.zeros(6)
|
|
40
|
+
|
|
41
|
+
self.addconfiguration("qr", self.qr)
|
|
42
|
+
self.addconfiguration("qz", self.qz)
|
|
43
|
+
|
|
44
|
+
# sol=robot.ikine_LM(SE3(0.5, -0.2, 0.2)@SE3.OA([1,0,0],[0,0,-1]))
|
|
45
|
+
self.addconfiguration_attr(
|
|
46
|
+
"qn",
|
|
47
|
+
np.array(
|
|
48
|
+
[
|
|
49
|
+
-7.052413e-01,
|
|
50
|
+
3.604328e-01,
|
|
51
|
+
-1.494176e00,
|
|
52
|
+
1.133744e00,
|
|
53
|
+
-7.052413e-01,
|
|
54
|
+
0,
|
|
55
|
+
]
|
|
56
|
+
),
|
|
57
|
+
)
|
|
58
|
+
self.addconfiguration_attr("q1", [0, -pi / 2, pi / 2, 0, pi / 2, 0])
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
if __name__ == "__main__": # pragma nocover
|
|
62
|
+
robot = UR5()
|
|
63
|
+
print(robot)
|
|
64
|
+
print(robot.ets())
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
"""
|
|
2
|
+
URDF/xacro loading infrastructure for robot models.
|
|
3
|
+
|
|
4
|
+
Provides:
|
|
5
|
+
- URDF_file(path) — parse a URDF or xacro file, return (elinks, name)
|
|
6
|
+
- URDF_read(path) — same but returns (elinks, name, None, None) for
|
|
7
|
+
backward-compat with complex models that manipulate
|
|
8
|
+
the link list before calling Robot.__init__
|
|
9
|
+
- URDFRobot — base class for simple URDF-loaded robot models
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
import importlib
|
|
14
|
+
import sys
|
|
15
|
+
import warnings
|
|
16
|
+
from typing import Callable, TextIO
|
|
17
|
+
|
|
18
|
+
import numpy as np
|
|
19
|
+
from spatialmath import SE3
|
|
20
|
+
from spatialmath.base import unitvec_norm, angvec2r, tr2rpy
|
|
21
|
+
|
|
22
|
+
from xacrodoc import XacroDoc, packages
|
|
23
|
+
|
|
24
|
+
from roboticstoolbox.tools.urdf import URDF
|
|
25
|
+
from roboticstoolbox.robot.Link import Link
|
|
26
|
+
from roboticstoolbox.ets.ET import ET
|
|
27
|
+
from roboticstoolbox.ets.ETS import ETS
|
|
28
|
+
from roboticstoolbox.robot.Robot import Robot
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _register_rd_packages(urdf_path: Path) -> None:
|
|
32
|
+
"""Register all package:// names referenced in a URDF with the xacrodoc cache.
|
|
33
|
+
|
|
34
|
+
Scans the URDF text for every ``package://NAME/`` reference, then walks up
|
|
35
|
+
the directory tree from the file to find and register the matching ancestor
|
|
36
|
+
directory for each name. This handles arbitrarily nested cache layouts
|
|
37
|
+
(e.g. ``example-robot-data/robots/panda_description/urdf/panda.urdf``).
|
|
38
|
+
"""
|
|
39
|
+
import re
|
|
40
|
+
|
|
41
|
+
pkg_names = set(re.findall(r"package://([^/]+)/", urdf_path.read_text()))
|
|
42
|
+
for parent in urdf_path.parents:
|
|
43
|
+
if parent.name in pkg_names:
|
|
44
|
+
packages.update_package_cache({parent.name: str(parent)})
|
|
45
|
+
pkg_names.discard(parent.name)
|
|
46
|
+
if not pkg_names:
|
|
47
|
+
break
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
_RD_URL = "https://github.com/robot-descriptions/robot_descriptions.py"
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _rd_link() -> str:
|
|
54
|
+
"""Render "robot_descriptions" as a clickable terminal hyperlink (OSC 8).
|
|
55
|
+
|
|
56
|
+
Terminals that don't understand OSC 8 just display the plain text, so
|
|
57
|
+
this degrades safely everywhere.
|
|
58
|
+
"""
|
|
59
|
+
return f"\033]8;;{_RD_URL}\033\\robot_descriptions\033]8;;\033\\"
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def _find_rd_rename(robot_name: str, tried: list[str]) -> str | None:
|
|
63
|
+
"""Look for another robot_descriptions entry for the same robot under a
|
|
64
|
+
name we didn't try, e.g. an alternate/newer naming convention.
|
|
65
|
+
|
|
66
|
+
Returns the matching name, or None if robot_descriptions has nothing
|
|
67
|
+
registered for ``robot_name`` at all.
|
|
68
|
+
"""
|
|
69
|
+
import robot_descriptions
|
|
70
|
+
|
|
71
|
+
prefix = f"{robot_name}_"
|
|
72
|
+
for key in robot_descriptions.DESCRIPTIONS:
|
|
73
|
+
if key not in tried and key.startswith(prefix):
|
|
74
|
+
return key
|
|
75
|
+
return None
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _load_rd_module(robot_name: str):
|
|
79
|
+
"""Import the robot_descriptions submodule for ``robot_name``, trying the
|
|
80
|
+
current name first and falling back to older/newer naming schemes.
|
|
81
|
+
|
|
82
|
+
robot_descriptions has renamed some entries over time (e.g. ``ur5_description``
|
|
83
|
+
-> ``ur5_official_description``); trying alternates here means callers and
|
|
84
|
+
model classes don't need to track that migration themselves.
|
|
85
|
+
"""
|
|
86
|
+
if "_mj_" in robot_name:
|
|
87
|
+
raise ValueError(
|
|
88
|
+
f"Toolbox uses {_rd_link()} to provide URDF robot models. The "
|
|
89
|
+
f'requested model named "{robot_name}" is a MuJoCo model not a '
|
|
90
|
+
"URDF model."
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
candidates = [f"{robot_name}_description", f"{robot_name}_official_description"]
|
|
94
|
+
last_error: ImportError | None = None
|
|
95
|
+
for candidate in candidates:
|
|
96
|
+
try:
|
|
97
|
+
with warnings.catch_warnings():
|
|
98
|
+
# Deprecation notices name "robot_descriptions" directly, which
|
|
99
|
+
# is an implementation detail users of roboticstoolbox never
|
|
100
|
+
# opted into seeing.
|
|
101
|
+
warnings.simplefilter("ignore", FutureWarning)
|
|
102
|
+
return importlib.import_module(f"robot_descriptions.{candidate}")
|
|
103
|
+
except ImportError as e:
|
|
104
|
+
last_error = e
|
|
105
|
+
continue
|
|
106
|
+
except Exception as e:
|
|
107
|
+
# robot_descriptions clones a git repository (via GitPython,
|
|
108
|
+
# which shells out to a real git binary) the first time a given
|
|
109
|
+
# model is imported. Pyodide/JupyterLite has no subprocess
|
|
110
|
+
# execution and no git binary, so this always fails there --
|
|
111
|
+
# not a bug, an environment limitation. The exact exception type
|
|
112
|
+
# depends on how GitPython fails in that sandbox, so this is
|
|
113
|
+
# deliberately broad, but only ever intercepts on Pyodide.
|
|
114
|
+
if sys.platform == "emscripten":
|
|
115
|
+
raise ValueError(
|
|
116
|
+
f"Toolbox uses {_rd_link()} to provide URDF robot models, "
|
|
117
|
+
"which clones a git repository on first use. That isn't "
|
|
118
|
+
"possible in this browser (Pyodide/JupyterLite) sandbox -- "
|
|
119
|
+
f'this is an expected limitation loading "{robot_name}" '
|
|
120
|
+
"here, not a bug. Try a DH- or ETS-based model instead "
|
|
121
|
+
"(e.g. rtb.models.DH.Panda()), or run this notebook in a "
|
|
122
|
+
"regular Python environment to use robot_descriptions-"
|
|
123
|
+
"backed models."
|
|
124
|
+
) from e
|
|
125
|
+
raise
|
|
126
|
+
|
|
127
|
+
renamed_to = _find_rd_rename(robot_name, candidates)
|
|
128
|
+
if renamed_to is not None:
|
|
129
|
+
raise ValueError(
|
|
130
|
+
f"Toolbox uses {_rd_link()} to provide URDF robot models. The "
|
|
131
|
+
f'requested model named "{robot_name}" is now named "{renamed_to}".'
|
|
132
|
+
) from last_error
|
|
133
|
+
|
|
134
|
+
raise ValueError(
|
|
135
|
+
f"Toolbox uses {_rd_link()} to provide URDF robot models. The "
|
|
136
|
+
f'requested model named "{robot_name}" can not be found.'
|
|
137
|
+
) from last_error
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def _load_urdf_from_RD(robot_name: str) -> "tuple[Path, dict | None]":
|
|
141
|
+
"""Fetch the URDF/xacro path from robot_descriptions and register its packages.
|
|
142
|
+
|
|
143
|
+
robot_descriptions models expose different path attributes depending on their
|
|
144
|
+
source format:
|
|
145
|
+
- URDF_PATH — a precompiled, ready-to-parse URDF file (e.g. panda, pr2, gen2)
|
|
146
|
+
- XACRO_PATH — a xacro source that must be processed by xacrodoc
|
|
147
|
+
(e.g. j2n6s200, ur5, kinova family)
|
|
148
|
+
Both are passed to XacroDoc.from_file(), which handles either format.
|
|
149
|
+
|
|
150
|
+
Some xacro-based models also expose ``XACRO_ARGS`` — substitution
|
|
151
|
+
values required to compile the file at all (e.g. Kinova Gen3's
|
|
152
|
+
``{"dof": "7"}``, which selects the 6dof/7dof arm variant; several UR
|
|
153
|
+
and xArm variants have the same pattern). Returned alongside the path
|
|
154
|
+
so the caller can forward them to xacrodoc as ``subargs`` — without
|
|
155
|
+
them, xacro fails on an unresolved ``$(arg ...)``/property reference.
|
|
156
|
+
"""
|
|
157
|
+
module = _load_rd_module(robot_name)
|
|
158
|
+
|
|
159
|
+
if hasattr(module, "URDF_PATH"):
|
|
160
|
+
urdf_path = Path(module.URDF_PATH)
|
|
161
|
+
elif hasattr(module, "XACRO_PATH"):
|
|
162
|
+
urdf_path = Path(module.XACRO_PATH)
|
|
163
|
+
else:
|
|
164
|
+
raise ValueError(
|
|
165
|
+
f"Robot model '{robot_name}' in robot_descriptions has neither "
|
|
166
|
+
"URDF_PATH nor XACRO_PATH."
|
|
167
|
+
)
|
|
168
|
+
_register_rd_packages(urdf_path)
|
|
169
|
+
return urdf_path, getattr(module, "XACRO_ARGS", None)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def _parse_urdf(urdf_str: str):
|
|
173
|
+
"""Parse a URDF string into (elinks, name)."""
|
|
174
|
+
urdf = URDF.loadstr(urdf_str, None)
|
|
175
|
+
|
|
176
|
+
elinks = []
|
|
177
|
+
elinkdict = {}
|
|
178
|
+
|
|
179
|
+
for link in urdf._links:
|
|
180
|
+
elink = Link(
|
|
181
|
+
name=link.name,
|
|
182
|
+
m=link.inertial.mass,
|
|
183
|
+
r=link.inertial.origin[:3, 3] if link.inertial.origin is not None else None,
|
|
184
|
+
I=link.inertial.inertia,
|
|
185
|
+
)
|
|
186
|
+
elinks.append(elink)
|
|
187
|
+
elinkdict[link.name] = elink
|
|
188
|
+
|
|
189
|
+
try:
|
|
190
|
+
elink.geometry = [v.geometry.ob for v in link.visuals]
|
|
191
|
+
except AttributeError:
|
|
192
|
+
pass
|
|
193
|
+
|
|
194
|
+
if link.collisions:
|
|
195
|
+
shapes = []
|
|
196
|
+
for col in link.collisions:
|
|
197
|
+
try:
|
|
198
|
+
ob = col.geometry.ob
|
|
199
|
+
except AttributeError:
|
|
200
|
+
ob = None
|
|
201
|
+
if ob is not None:
|
|
202
|
+
shapes.append(ob)
|
|
203
|
+
if not shapes:
|
|
204
|
+
raise RuntimeError(
|
|
205
|
+
f"Collision geometry for link '{link.name}' failed to load. "
|
|
206
|
+
"Ensure all package:// URIs are registered in the xacrodoc cache."
|
|
207
|
+
)
|
|
208
|
+
elink.collision = shapes
|
|
209
|
+
|
|
210
|
+
for joint in urdf._joints:
|
|
211
|
+
childlink = elinkdict[joint.child]
|
|
212
|
+
parentlink = elinkdict[joint.parent]
|
|
213
|
+
|
|
214
|
+
childlink._parent = parentlink
|
|
215
|
+
childlink._joint_name = joint.name
|
|
216
|
+
|
|
217
|
+
trans = SE3(joint.origin).t
|
|
218
|
+
rot = joint.rpy
|
|
219
|
+
|
|
220
|
+
if np.count_nonzero(joint.axis) < 2:
|
|
221
|
+
ets = ET.SE3(SE3(trans) * SE3.RPY(rot))
|
|
222
|
+
else:
|
|
223
|
+
v = joint.axis
|
|
224
|
+
u, n = unitvec_norm(v)
|
|
225
|
+
R = angvec2r(n, u)
|
|
226
|
+
R_total = SE3.RPY(joint.rpy) * R
|
|
227
|
+
rpy = tr2rpy(R_total)
|
|
228
|
+
ets = ET.SE3(SE3(trans) * SE3.RPY(rpy))
|
|
229
|
+
joint.axis = [0, 0, 1]
|
|
230
|
+
|
|
231
|
+
var = None
|
|
232
|
+
if joint.joint_type in ("revolute", "continuous"):
|
|
233
|
+
if joint.axis[0] == 1:
|
|
234
|
+
var = ET.Rx()
|
|
235
|
+
elif joint.axis[0] == -1:
|
|
236
|
+
var = ET.Rx(flip=True)
|
|
237
|
+
elif joint.axis[1] == 1:
|
|
238
|
+
var = ET.Ry()
|
|
239
|
+
elif joint.axis[1] == -1:
|
|
240
|
+
var = ET.Ry(flip=True)
|
|
241
|
+
elif joint.axis[2] == 1:
|
|
242
|
+
var = ET.Rz()
|
|
243
|
+
elif joint.axis[2] == -1:
|
|
244
|
+
var = ET.Rz(flip=True)
|
|
245
|
+
elif joint.joint_type == "prismatic":
|
|
246
|
+
if joint.axis[0] == 1:
|
|
247
|
+
var = ET.tx()
|
|
248
|
+
elif joint.axis[0] == -1:
|
|
249
|
+
var = ET.tx(flip=True)
|
|
250
|
+
elif joint.axis[1] == 1:
|
|
251
|
+
var = ET.ty()
|
|
252
|
+
elif joint.axis[1] == -1:
|
|
253
|
+
var = ET.ty(flip=True)
|
|
254
|
+
elif joint.axis[2] == 1:
|
|
255
|
+
var = ET.tz()
|
|
256
|
+
elif joint.axis[2] == -1:
|
|
257
|
+
var = ET.tz(flip=True)
|
|
258
|
+
|
|
259
|
+
if var is not None:
|
|
260
|
+
ets = ets * var
|
|
261
|
+
|
|
262
|
+
if isinstance(ets, ET):
|
|
263
|
+
ets = ETS(ets)
|
|
264
|
+
|
|
265
|
+
childlink.ets = ets
|
|
266
|
+
|
|
267
|
+
try:
|
|
268
|
+
if childlink.isjoint:
|
|
269
|
+
if joint.limit.lower is not None and joint.limit.upper is not None:
|
|
270
|
+
childlink.qlim = [joint.limit.lower, joint.limit.upper]
|
|
271
|
+
childlink.qdlim = joint.limit.velocity
|
|
272
|
+
childlink.tlim = joint.limit.effort
|
|
273
|
+
except AttributeError:
|
|
274
|
+
pass
|
|
275
|
+
|
|
276
|
+
try:
|
|
277
|
+
if joint.dynamics.friction is not None:
|
|
278
|
+
childlink.B = joint.dynamics.friction
|
|
279
|
+
except AttributeError:
|
|
280
|
+
pass
|
|
281
|
+
|
|
282
|
+
for t in urdf.transmissions:
|
|
283
|
+
if t.name == joint.name:
|
|
284
|
+
childlink.G = t.actuators[0].mechanicalReduction
|
|
285
|
+
|
|
286
|
+
return elinks, urdf.name
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
def URDF_file(
|
|
290
|
+
file: "str | Path | TextIO",
|
|
291
|
+
model: "str | None" = None,
|
|
292
|
+
patch: "Callable[[str], str] | None" = None,
|
|
293
|
+
extra_packages: "dict[str, str] | None" = None,
|
|
294
|
+
) -> tuple:
|
|
295
|
+
"""Parse a URDF or xacro file, return (elinks, name).
|
|
296
|
+
|
|
297
|
+
``file`` may be:
|
|
298
|
+
- an absolute or relative path (str or Path) to a .urdf or .xacro file
|
|
299
|
+
- a bare name with no suffix, looked up via robot_descriptions
|
|
300
|
+
- a file-like object whose .read() gives the URDF XML
|
|
301
|
+
|
|
302
|
+
``patch``, if given, is called with the raw file text and must return
|
|
303
|
+
the text to actually process. It runs *before* xacro processing/XML
|
|
304
|
+
parsing, so it can surgically correct known-broken third-party source
|
|
305
|
+
files (e.g. an upstream file with an unexpanded xacro macro that has no
|
|
306
|
+
definition anywhere in its own repo, or malformed XML) without touching
|
|
307
|
+
the upstream repo or the bundled `rtb-data` copy. See ``Valkyrie.py``
|
|
308
|
+
and ``Fetch.py`` for real examples — each documents exactly which
|
|
309
|
+
upstream bug its patch works around.
|
|
310
|
+
|
|
311
|
+
``extra_packages``, if given, maps additional xacro package names to
|
|
312
|
+
paths relative to the bundled ``rtb-data`` xacro root. Use it when an
|
|
313
|
+
upstream file does ``$(find some_package)`` for a package name that
|
|
314
|
+
doesn't match any directory name rtb-data actually ships under — xacro's
|
|
315
|
+
package lookup only auto-discovers directories that are already known by
|
|
316
|
+
name, it doesn't fall back to searching by content. See ``LBR.py`` for a
|
|
317
|
+
real example.
|
|
318
|
+
"""
|
|
319
|
+
import rtbdata
|
|
320
|
+
|
|
321
|
+
xacro_root = Path(rtbdata.__file__).parent / "xacro"
|
|
322
|
+
pkg_map = {d.name: str(d) for d in xacro_root.iterdir() if d.is_dir()}
|
|
323
|
+
packages.update_package_cache(pkg_map)
|
|
324
|
+
|
|
325
|
+
if extra_packages is not None:
|
|
326
|
+
packages.update_package_cache(
|
|
327
|
+
{name: str(xacro_root / path) for name, path in extra_packages.items()}
|
|
328
|
+
)
|
|
329
|
+
|
|
330
|
+
xacro_args = None
|
|
331
|
+
if isinstance(file, str):
|
|
332
|
+
file = Path(file)
|
|
333
|
+
if file.suffix not in (".urdf", ".xacro"):
|
|
334
|
+
file, xacro_args = _load_urdf_from_RD(str(file))
|
|
335
|
+
|
|
336
|
+
resolved_path = None
|
|
337
|
+
if isinstance(file, Path):
|
|
338
|
+
if not file.is_absolute():
|
|
339
|
+
file = xacro_root / file
|
|
340
|
+
resolved_path = file
|
|
341
|
+
if patch is not None:
|
|
342
|
+
# mirrors XacroDoc.from_file()'s own package-discovery step,
|
|
343
|
+
# since we bypass from_file() here to patch the text first
|
|
344
|
+
packages.walk_up_from(file)
|
|
345
|
+
doc = XacroDoc.from_string(
|
|
346
|
+
patch(file.read_text()), rootdir=file.parent, subargs=xacro_args
|
|
347
|
+
)
|
|
348
|
+
else:
|
|
349
|
+
doc = XacroDoc.from_file(file, subargs=xacro_args)
|
|
350
|
+
else:
|
|
351
|
+
text = file.read()
|
|
352
|
+
if patch is not None:
|
|
353
|
+
text = patch(text)
|
|
354
|
+
doc = XacroDoc.from_string(text)
|
|
355
|
+
|
|
356
|
+
elinks, name = _parse_urdf(doc.to_urdf_string())
|
|
357
|
+
return elinks, name, resolved_path
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
def URDF_read(
|
|
361
|
+
urdf_path: "str | Path", patch: "Callable[[str], str] | None" = None
|
|
362
|
+
) -> tuple:
|
|
363
|
+
"""Load a URDF/xacro file, return (elinks, name, filepath).
|
|
364
|
+
|
|
365
|
+
``filepath`` is the resolved filesystem path that was loaded, or None if
|
|
366
|
+
the source was a file-like object. See ``URDF_file`` for ``patch``.
|
|
367
|
+
"""
|
|
368
|
+
return URDF_file(urdf_path, patch=patch)
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
class URDFRobot(Robot):
|
|
372
|
+
"""Base class for robot models loaded from a URDF or xacro file.
|
|
373
|
+
|
|
374
|
+
Subclasses pass the path and manufacturer directly to ``super().__init__()``::
|
|
375
|
+
|
|
376
|
+
class UR5(URDFRobot):
|
|
377
|
+
def __init__(self):
|
|
378
|
+
super().__init__(
|
|
379
|
+
"ur5",
|
|
380
|
+
manufacturer="Universal Robotics",
|
|
381
|
+
gripper_link_index=7,
|
|
382
|
+
)
|
|
383
|
+
self.qz = np.zeros(6)
|
|
384
|
+
...
|
|
385
|
+
"""
|
|
386
|
+
|
|
387
|
+
def __init__(
|
|
388
|
+
self,
|
|
389
|
+
urdf_path: "str | Path",
|
|
390
|
+
manufacturer: str = "",
|
|
391
|
+
gripper_link_index: "int | None" = None,
|
|
392
|
+
patch: "Callable[[str], str] | None" = None,
|
|
393
|
+
extra_packages: "dict[str, str] | None" = None,
|
|
394
|
+
**kwargs,
|
|
395
|
+
):
|
|
396
|
+
elinks, name, filepath = URDF_file(
|
|
397
|
+
urdf_path, patch=patch, extra_packages=extra_packages
|
|
398
|
+
)
|
|
399
|
+
if gripper_link_index is not None:
|
|
400
|
+
kwargs["gripper_links"] = elinks[gripper_link_index]
|
|
401
|
+
super().__init__(elinks, name=name, manufacturer=manufacturer, **kwargs)
|
|
402
|
+
self._urdf_filepath = str(filepath) if filepath is not None else ""
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
from roboticstoolbox.robot.Link import Link
|
|
7
|
+
from roboticstoolbox.robot.Robot import Robot
|
|
8
|
+
from roboticstoolbox.models.URDF.URDFRobot import URDF_read
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _patch_valkyrie_urdf(text: str) -> str:
|
|
12
|
+
"""Work around a broken upstream file served by robot_descriptions.
|
|
13
|
+
|
|
14
|
+
Applies to: robot_descriptions v2.0.0's ``valkyrie_description``, which
|
|
15
|
+
clones ``gkjohnson/nasa-urdf-robots`` at commit ``54cdeb1d`` and exposes
|
|
16
|
+
``val_description/model/robots/valkyrie_sim.urdf`` as a (supposedly)
|
|
17
|
+
plain URDF file.
|
|
18
|
+
|
|
19
|
+
In reality that file still contains one live, unexpanded xacro macro
|
|
20
|
+
call: ``<xacro:v1_pelvis_sensors_usb .../>``. There is no definition of
|
|
21
|
+
this macro anywhere in the entire cloned repo (zero ``.xacro`` files
|
|
22
|
+
exist in it at all) — it's a gap in the upstream repo itself, not
|
|
23
|
+
something robot_descriptions or this loader got wrong. The tag is a
|
|
24
|
+
standalone, self-closing element configuring a simulated pelvis IMU
|
|
25
|
+
sensor plugin (Gazebo-only, e.g. ``middle_sensor_api_tag``); it isn't
|
|
26
|
+
nested inside any ``<link>``/``<joint>``, so it has no bearing on
|
|
27
|
+
kinematics, dynamics, or geometry and is safe to drop entirely.
|
|
28
|
+
|
|
29
|
+
If a future robot_descriptions/nasa-urdf-robots update actually defines
|
|
30
|
+
this macro (or pre-expands it), this patch becomes a no-op (the regex
|
|
31
|
+
simply won't match) — safe to remove once confirmed unnecessary.
|
|
32
|
+
"""
|
|
33
|
+
return re.sub(r"\s*<xacro:v1_pelvis_sensors_usb\b[^>]*/>\n?", "\n", text)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class Valkyrie(Robot):
|
|
37
|
+
"""
|
|
38
|
+
Class that imports a NASA Valkyrie URDF model
|
|
39
|
+
|
|
40
|
+
``Valkyrie()`` is a class which imports a NASA Valkyrie robot definition
|
|
41
|
+
from a URDF file. The model describes its kinematic and graphical
|
|
42
|
+
characteristics.
|
|
43
|
+
|
|
44
|
+
.. runblock:: pycon
|
|
45
|
+
|
|
46
|
+
>>> import roboticstoolbox as rtb
|
|
47
|
+
>>> robot = rtb.models.URDF.Valkyrie()
|
|
48
|
+
>>> print(robot)
|
|
49
|
+
|
|
50
|
+
Defined joint configurations are:
|
|
51
|
+
|
|
52
|
+
- qz, zero joint angle configuration, 'L' shaped configuration
|
|
53
|
+
- qr, vertical 'READY' configuration
|
|
54
|
+
|
|
55
|
+
:reference:
|
|
56
|
+
- https://github.com/gkjohnson/nasa-urdf-robots
|
|
57
|
+
|
|
58
|
+
.. codeauthor:: Peter Corke
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
def __init__(self, variant="A"):
|
|
62
|
+
|
|
63
|
+
if not variant in "ABCD":
|
|
64
|
+
raise ValueError("variant must be in the range A-D")
|
|
65
|
+
|
|
66
|
+
links, name, urdf_filepath = URDF_read("valkyrie", patch=_patch_valkyrie_urdf)
|
|
67
|
+
|
|
68
|
+
# We wish to add an intermediate link between gripper_r_base and
|
|
69
|
+
# @gripper_r_finger_r/l
|
|
70
|
+
# This is because gripper_r_base contains a revolute joint which is
|
|
71
|
+
# a part of the core kinematic chain and not the gripper.
|
|
72
|
+
# So we wish for gripper_r_base to be part of the robot and
|
|
73
|
+
# @gripper_r_finger_r/l to be in the gripper underneath a parent Link
|
|
74
|
+
# gripper_r_base = links[13]
|
|
75
|
+
# gripper_l_base = links[33]
|
|
76
|
+
|
|
77
|
+
# # Find the finger links
|
|
78
|
+
# r_gripper_links = [link for link in links if link.parent == gripper_r_base]
|
|
79
|
+
# l_gripper_links = [link for link in links if link.parent == gripper_l_base]
|
|
80
|
+
|
|
81
|
+
# # New intermediate links
|
|
82
|
+
# r_gripper = Link(name="rightGripper", parent=gripper_r_base)
|
|
83
|
+
# l_gripper = Link(name="leftGripper", parent=gripper_l_base)
|
|
84
|
+
# links.append(r_gripper)
|
|
85
|
+
# links.append(l_gripper)
|
|
86
|
+
|
|
87
|
+
# # Set the finger link parent to be the new gripper base link
|
|
88
|
+
# for g_link in r_gripper_links:
|
|
89
|
+
# g_link._parent = r_gripper
|
|
90
|
+
|
|
91
|
+
# for g_link in l_gripper_links:
|
|
92
|
+
# g_link._parent = l_gripper
|
|
93
|
+
|
|
94
|
+
super().__init__(
|
|
95
|
+
links,
|
|
96
|
+
name=name,
|
|
97
|
+
manufacturer="NASA",
|
|
98
|
+
# gripper_links=[r_gripper, l_gripper],
|
|
99
|
+
)
|
|
100
|
+
self._urdf_filepath = str(urdf_filepath) if urdf_filepath is not None else ""
|
|
101
|
+
|
|
102
|
+
# self.addconfiguration_attr("qz", np.array([0, 0, 0, 0, 0, 0, 0]))
|
|
103
|
+
# self.addconfiguration_attr("qr", np.array([0, -0.3, 0, -2.2, 0, 2.0, np.pi / 4]))
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
if __name__ == "__main__": # pragma nocover
|
|
107
|
+
robot = Valkyrie("B")
|
|
108
|
+
print(robot)
|
|
109
|
+
env = robot.plot(np.zeros((robot.n,)))
|
|
110
|
+
env.hold()
|