roboticstoolbox-python 1.3.0__cp312-cp312-win_amd64.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 +104 -0
- roboticstoolbox/backends/Connector.py +107 -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 +253 -0
- roboticstoolbox/backends/PyPlot/PyPlot.py +769 -0
- roboticstoolbox/backends/PyPlot/PyPlot2.py +526 -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 +26 -0
- roboticstoolbox/bin/__init__.py +0 -0
- roboticstoolbox/bin/rtbtool.py +307 -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 +1587 -0
- roboticstoolbox/blocks/mobile.py +500 -0
- roboticstoolbox/blocks/quad_model.py +132 -0
- roboticstoolbox/blocks/spatial.py +245 -0
- roboticstoolbox/blocks/uav.py +949 -0
- roboticstoolbox/core/Eigen/Cholesky +45 -0
- roboticstoolbox/core/Eigen/CholmodSupport +48 -0
- roboticstoolbox/core/Eigen/Core +384 -0
- roboticstoolbox/core/Eigen/Dense +7 -0
- roboticstoolbox/core/Eigen/Eigen +2 -0
- roboticstoolbox/core/Eigen/Eigenvalues +60 -0
- roboticstoolbox/core/Eigen/Geometry +59 -0
- roboticstoolbox/core/Eigen/Householder +29 -0
- roboticstoolbox/core/Eigen/IterativeLinearSolvers +48 -0
- roboticstoolbox/core/Eigen/Jacobi +32 -0
- roboticstoolbox/core/Eigen/KLUSupport +41 -0
- roboticstoolbox/core/Eigen/LU +47 -0
- roboticstoolbox/core/Eigen/MetisSupport +35 -0
- roboticstoolbox/core/Eigen/OrderingMethods +70 -0
- roboticstoolbox/core/Eigen/PaStiXSupport +49 -0
- roboticstoolbox/core/Eigen/PardisoSupport +35 -0
- roboticstoolbox/core/Eigen/QR +50 -0
- roboticstoolbox/core/Eigen/QtAlignedMalloc +39 -0
- roboticstoolbox/core/Eigen/SPQRSupport +34 -0
- roboticstoolbox/core/Eigen/SVD +50 -0
- roboticstoolbox/core/Eigen/Sparse +34 -0
- roboticstoolbox/core/Eigen/SparseCholesky +37 -0
- roboticstoolbox/core/Eigen/SparseCore +69 -0
- roboticstoolbox/core/Eigen/SparseLU +50 -0
- roboticstoolbox/core/Eigen/SparseQR +36 -0
- roboticstoolbox/core/Eigen/StdDeque +27 -0
- roboticstoolbox/core/Eigen/StdList +26 -0
- roboticstoolbox/core/Eigen/StdVector +27 -0
- roboticstoolbox/core/Eigen/SuperLUSupport +64 -0
- roboticstoolbox/core/Eigen/UmfPackSupport +40 -0
- roboticstoolbox/core/Eigen/src/Cholesky/LDLT.h +688 -0
- roboticstoolbox/core/Eigen/src/Cholesky/LLT.h +558 -0
- roboticstoolbox/core/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
- roboticstoolbox/core/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
- roboticstoolbox/core/Eigen/src/Core/ArithmeticSequence.h +413 -0
- roboticstoolbox/core/Eigen/src/Core/Array.h +417 -0
- roboticstoolbox/core/Eigen/src/Core/ArrayBase.h +226 -0
- roboticstoolbox/core/Eigen/src/Core/ArrayWrapper.h +209 -0
- roboticstoolbox/core/Eigen/src/Core/Assign.h +90 -0
- roboticstoolbox/core/Eigen/src/Core/AssignEvaluator.h +1010 -0
- roboticstoolbox/core/Eigen/src/Core/Assign_MKL.h +178 -0
- roboticstoolbox/core/Eigen/src/Core/BandMatrix.h +353 -0
- roboticstoolbox/core/Eigen/src/Core/Block.h +448 -0
- roboticstoolbox/core/Eigen/src/Core/BooleanRedux.h +162 -0
- roboticstoolbox/core/Eigen/src/Core/CommaInitializer.h +164 -0
- roboticstoolbox/core/Eigen/src/Core/ConditionEstimator.h +175 -0
- roboticstoolbox/core/Eigen/src/Core/CoreEvaluators.h +1741 -0
- roboticstoolbox/core/Eigen/src/Core/CoreIterators.h +132 -0
- roboticstoolbox/core/Eigen/src/Core/CwiseBinaryOp.h +183 -0
- roboticstoolbox/core/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
- roboticstoolbox/core/Eigen/src/Core/CwiseTernaryOp.h +197 -0
- roboticstoolbox/core/Eigen/src/Core/CwiseUnaryOp.h +103 -0
- roboticstoolbox/core/Eigen/src/Core/CwiseUnaryView.h +132 -0
- roboticstoolbox/core/Eigen/src/Core/DenseBase.h +701 -0
- roboticstoolbox/core/Eigen/src/Core/DenseCoeffsBase.h +685 -0
- roboticstoolbox/core/Eigen/src/Core/DenseStorage.h +652 -0
- roboticstoolbox/core/Eigen/src/Core/Diagonal.h +258 -0
- roboticstoolbox/core/Eigen/src/Core/DiagonalMatrix.h +391 -0
- roboticstoolbox/core/Eigen/src/Core/DiagonalProduct.h +28 -0
- roboticstoolbox/core/Eigen/src/Core/Dot.h +318 -0
- roboticstoolbox/core/Eigen/src/Core/EigenBase.h +160 -0
- roboticstoolbox/core/Eigen/src/Core/ForceAlignedAccess.h +150 -0
- roboticstoolbox/core/Eigen/src/Core/Fuzzy.h +155 -0
- roboticstoolbox/core/Eigen/src/Core/GeneralProduct.h +465 -0
- roboticstoolbox/core/Eigen/src/Core/GenericPacketMath.h +1040 -0
- roboticstoolbox/core/Eigen/src/Core/GlobalFunctions.h +194 -0
- roboticstoolbox/core/Eigen/src/Core/IO.h +258 -0
- roboticstoolbox/core/Eigen/src/Core/IndexedView.h +237 -0
- roboticstoolbox/core/Eigen/src/Core/Inverse.h +117 -0
- roboticstoolbox/core/Eigen/src/Core/Map.h +171 -0
- roboticstoolbox/core/Eigen/src/Core/MapBase.h +310 -0
- roboticstoolbox/core/Eigen/src/Core/MathFunctions.h +2057 -0
- roboticstoolbox/core/Eigen/src/Core/MathFunctionsImpl.h +200 -0
- roboticstoolbox/core/Eigen/src/Core/Matrix.h +565 -0
- roboticstoolbox/core/Eigen/src/Core/MatrixBase.h +547 -0
- roboticstoolbox/core/Eigen/src/Core/NestByValue.h +85 -0
- roboticstoolbox/core/Eigen/src/Core/NoAlias.h +109 -0
- roboticstoolbox/core/Eigen/src/Core/NumTraits.h +335 -0
- roboticstoolbox/core/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- roboticstoolbox/core/Eigen/src/Core/PermutationMatrix.h +605 -0
- roboticstoolbox/core/Eigen/src/Core/PlainObjectBase.h +1128 -0
- roboticstoolbox/core/Eigen/src/Core/Product.h +191 -0
- roboticstoolbox/core/Eigen/src/Core/ProductEvaluators.h +1179 -0
- roboticstoolbox/core/Eigen/src/Core/Random.h +218 -0
- roboticstoolbox/core/Eigen/src/Core/Redux.h +515 -0
- roboticstoolbox/core/Eigen/src/Core/Ref.h +381 -0
- roboticstoolbox/core/Eigen/src/Core/Replicate.h +142 -0
- roboticstoolbox/core/Eigen/src/Core/Reshaped.h +454 -0
- roboticstoolbox/core/Eigen/src/Core/ReturnByValue.h +119 -0
- roboticstoolbox/core/Eigen/src/Core/Reverse.h +217 -0
- roboticstoolbox/core/Eigen/src/Core/Select.h +164 -0
- roboticstoolbox/core/Eigen/src/Core/SelfAdjointView.h +365 -0
- roboticstoolbox/core/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
- roboticstoolbox/core/Eigen/src/Core/Solve.h +188 -0
- roboticstoolbox/core/Eigen/src/Core/SolveTriangular.h +235 -0
- roboticstoolbox/core/Eigen/src/Core/SolverBase.h +168 -0
- roboticstoolbox/core/Eigen/src/Core/StableNorm.h +251 -0
- roboticstoolbox/core/Eigen/src/Core/StlIterators.h +463 -0
- roboticstoolbox/core/Eigen/src/Core/Stride.h +116 -0
- roboticstoolbox/core/Eigen/src/Core/Swap.h +68 -0
- roboticstoolbox/core/Eigen/src/Core/Transpose.h +464 -0
- roboticstoolbox/core/Eigen/src/Core/Transpositions.h +386 -0
- roboticstoolbox/core/Eigen/src/Core/TriangularMatrix.h +1001 -0
- roboticstoolbox/core/Eigen/src/Core/VectorBlock.h +96 -0
- roboticstoolbox/core/Eigen/src/Core/VectorwiseOp.h +784 -0
- roboticstoolbox/core/Eigen/src/Core/Visitor.h +381 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX/Complex.h +372 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
- roboticstoolbox/core/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/Half.h +942 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/Settings.h +49 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- roboticstoolbox/core/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
- roboticstoolbox/core/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- roboticstoolbox/core/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- roboticstoolbox/core/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- roboticstoolbox/core/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- roboticstoolbox/core/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- roboticstoolbox/core/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- roboticstoolbox/core/Eigen/src/Core/arch/NEON/Complex.h +584 -0
- roboticstoolbox/core/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- roboticstoolbox/core/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
- roboticstoolbox/core/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
- roboticstoolbox/core/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SSE/Complex.h +351 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- roboticstoolbox/core/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
- roboticstoolbox/core/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
- roboticstoolbox/core/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
- roboticstoolbox/core/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
- roboticstoolbox/core/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
- roboticstoolbox/core/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
- roboticstoolbox/core/Eigen/src/Core/functors/StlFunctors.h +166 -0
- roboticstoolbox/core/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
- roboticstoolbox/core/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
- roboticstoolbox/core/Eigen/src/Core/products/Parallelizer.h +180 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
- roboticstoolbox/core/Eigen/src/Core/util/BlasUtil.h +583 -0
- roboticstoolbox/core/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- roboticstoolbox/core/Eigen/src/Core/util/Constants.h +563 -0
- roboticstoolbox/core/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
- roboticstoolbox/core/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
- roboticstoolbox/core/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- roboticstoolbox/core/Eigen/src/Core/util/IntegralConstant.h +272 -0
- roboticstoolbox/core/Eigen/src/Core/util/MKL_support.h +137 -0
- roboticstoolbox/core/Eigen/src/Core/util/Macros.h +1464 -0
- roboticstoolbox/core/Eigen/src/Core/util/Memory.h +1163 -0
- roboticstoolbox/core/Eigen/src/Core/util/Meta.h +812 -0
- roboticstoolbox/core/Eigen/src/Core/util/NonMPL2.h +3 -0
- roboticstoolbox/core/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
- roboticstoolbox/core/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- roboticstoolbox/core/Eigen/src/Core/util/StaticAssert.h +221 -0
- roboticstoolbox/core/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- roboticstoolbox/core/Eigen/src/Core/util/XprHelper.h +856 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/RealQZ.h +657 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/RealSchur.h +558 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
- roboticstoolbox/core/Eigen/src/Geometry/AlignedBox.h +486 -0
- roboticstoolbox/core/Eigen/src/Geometry/AngleAxis.h +247 -0
- roboticstoolbox/core/Eigen/src/Geometry/EulerAngles.h +114 -0
- roboticstoolbox/core/Eigen/src/Geometry/Homogeneous.h +501 -0
- roboticstoolbox/core/Eigen/src/Geometry/Hyperplane.h +282 -0
- roboticstoolbox/core/Eigen/src/Geometry/OrthoMethods.h +235 -0
- roboticstoolbox/core/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- roboticstoolbox/core/Eigen/src/Geometry/Quaternion.h +870 -0
- roboticstoolbox/core/Eigen/src/Geometry/Rotation2D.h +199 -0
- roboticstoolbox/core/Eigen/src/Geometry/RotationBase.h +206 -0
- roboticstoolbox/core/Eigen/src/Geometry/Scaling.h +188 -0
- roboticstoolbox/core/Eigen/src/Geometry/Transform.h +1563 -0
- roboticstoolbox/core/Eigen/src/Geometry/Translation.h +202 -0
- roboticstoolbox/core/Eigen/src/Geometry/Umeyama.h +166 -0
- roboticstoolbox/core/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- roboticstoolbox/core/Eigen/src/Householder/BlockHouseholder.h +110 -0
- roboticstoolbox/core/Eigen/src/Householder/Householder.h +176 -0
- roboticstoolbox/core/Eigen/src/Householder/HouseholderSequence.h +545 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
- roboticstoolbox/core/Eigen/src/Jacobi/Jacobi.h +483 -0
- roboticstoolbox/core/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- roboticstoolbox/core/Eigen/src/LU/Determinant.h +117 -0
- roboticstoolbox/core/Eigen/src/LU/FullPivLU.h +877 -0
- roboticstoolbox/core/Eigen/src/LU/InverseImpl.h +432 -0
- roboticstoolbox/core/Eigen/src/LU/PartialPivLU.h +624 -0
- roboticstoolbox/core/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
- roboticstoolbox/core/Eigen/src/LU/arch/InverseSize4.h +351 -0
- roboticstoolbox/core/Eigen/src/MetisSupport/MetisSupport.h +137 -0
- roboticstoolbox/core/Eigen/src/OrderingMethods/Amd.h +435 -0
- roboticstoolbox/core/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
- roboticstoolbox/core/Eigen/src/OrderingMethods/Ordering.h +153 -0
- roboticstoolbox/core/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
- roboticstoolbox/core/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
- roboticstoolbox/core/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- roboticstoolbox/core/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
- roboticstoolbox/core/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
- roboticstoolbox/core/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
- roboticstoolbox/core/Eigen/src/QR/HouseholderQR.h +434 -0
- roboticstoolbox/core/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
- roboticstoolbox/core/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
- roboticstoolbox/core/Eigen/src/SVD/BDCSVD.h +1366 -0
- roboticstoolbox/core/Eigen/src/SVD/JacobiSVD.h +812 -0
- roboticstoolbox/core/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
- roboticstoolbox/core/Eigen/src/SVD/SVDBase.h +376 -0
- roboticstoolbox/core/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
- roboticstoolbox/core/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
- roboticstoolbox/core/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
- roboticstoolbox/core/Eigen/src/SparseCore/AmbiVector.h +378 -0
- roboticstoolbox/core/Eigen/src/SparseCore/CompressedStorage.h +274 -0
- roboticstoolbox/core/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
- roboticstoolbox/core/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseAssign.h +270 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseBlock.h +571 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseColEtree.h +206 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseDot.h +98 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseMap.h +305 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparsePermutation.h +178 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseProduct.h +181 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseRedux.h +49 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseRef.h +397 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseTranspose.h +92 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseUtil.h +186 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseVector.h +478 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseView.h +254 -0
- roboticstoolbox/core/Eigen/src/SparseCore/TriangularSolver.h +315 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU.h +923 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
- roboticstoolbox/core/Eigen/src/SparseQR/SparseQR.h +758 -0
- roboticstoolbox/core/Eigen/src/StlSupport/StdDeque.h +116 -0
- roboticstoolbox/core/Eigen/src/StlSupport/StdList.h +106 -0
- roboticstoolbox/core/Eigen/src/StlSupport/StdVector.h +131 -0
- roboticstoolbox/core/Eigen/src/StlSupport/details.h +84 -0
- roboticstoolbox/core/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
- roboticstoolbox/core/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
- roboticstoolbox/core/Eigen/src/misc/Image.h +82 -0
- roboticstoolbox/core/Eigen/src/misc/Kernel.h +79 -0
- roboticstoolbox/core/Eigen/src/misc/RealSvd2x2.h +55 -0
- roboticstoolbox/core/Eigen/src/misc/blas.h +440 -0
- roboticstoolbox/core/Eigen/src/misc/lapack.h +152 -0
- roboticstoolbox/core/Eigen/src/misc/lapacke.h +16292 -0
- roboticstoolbox/core/Eigen/src/misc/lapacke_mangling.h +17 -0
- roboticstoolbox/core/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
- roboticstoolbox/core/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
- roboticstoolbox/core/Eigen/src/plugins/BlockMethods.h +1442 -0
- roboticstoolbox/core/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
- roboticstoolbox/core/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
- roboticstoolbox/core/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- roboticstoolbox/core/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
- roboticstoolbox/core/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
- roboticstoolbox/core/Eigen/src/plugins/ReshapedMethods.h +149 -0
- roboticstoolbox/core/fknm.cpp +1557 -0
- roboticstoolbox/core/fknm.h +55 -0
- roboticstoolbox/core/frne.c +351 -0
- roboticstoolbox/core/frne.h +96 -0
- roboticstoolbox/core/ik.cpp +301 -0
- roboticstoolbox/core/ik.h +59 -0
- roboticstoolbox/core/linalg.cpp +316 -0
- roboticstoolbox/core/linalg.h +64 -0
- roboticstoolbox/core/methods.cpp +372 -0
- roboticstoolbox/core/methods.h +32 -0
- roboticstoolbox/core/ne.c +493 -0
- roboticstoolbox/core/structs.cpp +24 -0
- roboticstoolbox/core/structs.h +62 -0
- roboticstoolbox/core/vmath.c +163 -0
- roboticstoolbox/core/vmath.h +32 -0
- roboticstoolbox/fknm.cp312-win_amd64.pyd +0 -0
- roboticstoolbox/frne.cp312-win_amd64.pyd +0 -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 +193 -0
- roboticstoolbox/mobile/drivers.py +390 -0
- roboticstoolbox/mobile/landmarkmap.py +181 -0
- roboticstoolbox/mobile/sensors.py +771 -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 +83 -0
- roboticstoolbox/models/DH/Hyper3d.py +85 -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 +85 -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 +178 -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 +109 -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 +69 -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 +54 -0
- roboticstoolbox/models/URDF/Fetch.py +70 -0
- roboticstoolbox/models/URDF/FetchCamera.py +71 -0
- roboticstoolbox/models/URDF/Frankie.py +75 -0
- roboticstoolbox/models/URDF/FrankieOmni.py +94 -0
- roboticstoolbox/models/URDF/KinovaGen3.py +71 -0
- roboticstoolbox/models/URDF/LBR.py +59 -0
- roboticstoolbox/models/URDF/Mico.py +68 -0
- roboticstoolbox/models/URDF/PR2.py +64 -0
- roboticstoolbox/models/URDF/Panda.py +67 -0
- roboticstoolbox/models/URDF/Puma560.py +97 -0
- roboticstoolbox/models/URDF/UR10.py +53 -0
- roboticstoolbox/models/URDF/UR3.py +53 -0
- roboticstoolbox/models/URDF/UR5.py +74 -0
- roboticstoolbox/models/URDF/Valkyrie.py +84 -0
- roboticstoolbox/models/URDF/YuMi.py +109 -0
- roboticstoolbox/models/URDF/__init__.py +53 -0
- roboticstoolbox/models/URDF/px100.py +56 -0
- roboticstoolbox/models/URDF/px150.py +56 -0
- roboticstoolbox/models/URDF/rx150.py +56 -0
- roboticstoolbox/models/URDF/rx200.py +56 -0
- roboticstoolbox/models/URDF/vx300.py +56 -0
- roboticstoolbox/models/URDF/vx300s.py +56 -0
- roboticstoolbox/models/URDF/wx200.py +56 -0
- roboticstoolbox/models/URDF/wx250.py +56 -0
- roboticstoolbox/models/URDF/wx250s.py +56 -0
- roboticstoolbox/models/__init__.py +7 -0
- roboticstoolbox/models/list.py +119 -0
- roboticstoolbox/robot/BaseRobot.py +3133 -0
- roboticstoolbox/robot/DHFactor.py +522 -0
- roboticstoolbox/robot/DHLink.py +981 -0
- roboticstoolbox/robot/DHRobot.py +2520 -0
- roboticstoolbox/robot/Dynamics.py +1620 -0
- roboticstoolbox/robot/ELink.py +23 -0
- roboticstoolbox/robot/ERobot.py +25 -0
- roboticstoolbox/robot/ET.py +1097 -0
- roboticstoolbox/robot/ETS.py +3542 -0
- roboticstoolbox/robot/Gripper.py +282 -0
- roboticstoolbox/robot/IK.py +1522 -0
- roboticstoolbox/robot/Link.py +1698 -0
- roboticstoolbox/robot/PoERobot.py +348 -0
- roboticstoolbox/robot/Robot.py +2100 -0
- roboticstoolbox/robot/RobotKinematics.py +1725 -0
- roboticstoolbox/robot/RobotProto.py +92 -0
- roboticstoolbox/robot/__init__.py +54 -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 +106 -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 +1976 -0
- roboticstoolbox/tools/urdf/utils.py +50 -0
- roboticstoolbox/tools/xacro/__init__.py +1148 -0
- roboticstoolbox/tools/xacro/cli.py +128 -0
- roboticstoolbox/tools/xacro/color.py +66 -0
- roboticstoolbox/tools/xacro/tests/CMakeLists.txt +4 -0
- roboticstoolbox/tools/xacro/tests/broken.xacro +1 -0
- roboticstoolbox/tools/xacro/tests/emoji.xacro +5 -0
- roboticstoolbox/tools/xacro/tests/include1.xacro +4 -0
- roboticstoolbox/tools/xacro/tests/include1.xml +1 -0
- roboticstoolbox/tools/xacro/tests/include2.xacro +4 -0
- roboticstoolbox/tools/xacro/tests/include2.xml +1 -0
- roboticstoolbox/tools/xacro/tests/robots/README +4 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/base_v0/base.gazebo.xacro +59 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/base_v0/base.transmission.xacro +24 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/base_v0/base.urdf.xacro +264 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/common.xacro +71 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/forearm_v0/forearm.gazebo.xacro +36 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/forearm_v0/forearm.transmission.xacro +20 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/forearm_v0/forearm.urdf.xacro +130 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/gazebo/gazebo.urdf.xacro +24 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/gripper_v0/gripper.gazebo.xacro +288 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/gripper_v0/gripper.transmission.xacro +50 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/gripper_v0/gripper.urdf.xacro +374 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/head_v0/head.gazebo.xacro +16 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/head_v0/head.transmission.xacro +34 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/head_v0/head.urdf.xacro +147 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/materials.urdf.xacro +52 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/pr2.urdf.xacro +157 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/pr2_1.11.4.xml +3781 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/double_stereo_camera.gazebo.xacro +16 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/double_stereo_camera.urdf.xacro +61 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/head_sensor_package.gazebo.xacro +20 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/head_sensor_package.urdf.xacro +63 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/hokuyo_lx30_laser.gazebo.xacro +39 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/hokuyo_lx30_laser.urdf.xacro +27 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_camera.gazebo.xacro +87 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_camera.urdf.xacro +55 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_prosilica_camera.gazebo.xacro +193 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_prosilica_camera.urdf.xacro +181 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/microstrain_3dmgx2_imu.gazebo.xacro +20 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/microstrain_3dmgx2_imu.urdf.xacro +25 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/projector_wg6802418.gazebo.xacro +31 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/projector_wg6802418.urdf.xacro +42 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/prosilica_gc2450_camera.gazebo.xacro +43 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/prosilica_gc2450_camera.urdf.xacro +49 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/stereo_camera.gazebo.xacro +23 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/stereo_camera.urdf.xacro +71 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/wge100_camera.gazebo.xacro +46 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/wge100_camera.urdf.xacro +47 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/shoulder_v0/shoulder.gazebo.xacro +40 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/shoulder_v0/shoulder.transmission.xacro +35 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/shoulder_v0/shoulder.urdf.xacro +167 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/tilting_laser_v0/tilting_laser.gazebo.xacro +11 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/tilting_laser_v0/tilting_laser.transmission.xacro +14 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/tilting_laser_v0/tilting_laser.urdf.xacro +60 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/torso_v0/torso.gazebo.xacro +37 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/torso_v0/torso.transmission.xacro +22 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/torso_v0/torso.urdf.xacro +122 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/upper_arm_v0/upper_arm.gazebo.xacro +39 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/upper_arm_v0/upper_arm.transmission.xacro +28 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/upper_arm_v0/upper_arm.urdf.xacro +173 -0
- roboticstoolbox/tools/xacro/tests/settings.yaml +9 -0
- roboticstoolbox/tools/xacro/tests/subdir/foo.xacro +3 -0
- roboticstoolbox/tools/xacro/tests/subdir/include-recursive.xacro +5 -0
- roboticstoolbox/tools/xacro/tests/subdir/include1.xml +1 -0
- roboticstoolbox/tools/xacro/tests/test_xacro.py +1418 -0
- roboticstoolbox/tools/xacro/xmlutils.py +152 -0
- roboticstoolbox_python-1.3.0.dist-info/METADATA +552 -0
- roboticstoolbox_python-1.3.0.dist-info/RECORD +673 -0
- roboticstoolbox_python-1.3.0.dist-info/WHEEL +5 -0
- roboticstoolbox_python-1.3.0.dist-info/entry_points.txt +6 -0
- roboticstoolbox_python-1.3.0.dist-info/licenses/LICENSE +21 -0
- spatialgeometry/__init__.py +32 -0
- spatialgeometry/geom/CollisionShape.py +419 -0
- spatialgeometry/geom/SceneGroup.py +26 -0
- spatialgeometry/geom/SceneNode.py +315 -0
- spatialgeometry/geom/Shape.py +420 -0
- spatialgeometry/geom/__init__.py +26 -0
- spatialgeometry/scene.py +107 -0
- spatialgeometry/tools/__init__.py +0 -0
- spatialgeometry/tools/stdout_supress.py +302 -0
|
@@ -0,0 +1,981 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""
|
|
3
|
+
@author: Jesse Haviland
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# import numpy as np
|
|
7
|
+
# from spatialmath import SE3
|
|
8
|
+
import roboticstoolbox as rp
|
|
9
|
+
from roboticstoolbox.robot.Link import Link, _listen_dyn
|
|
10
|
+
from roboticstoolbox.robot.ETS import ETS
|
|
11
|
+
from roboticstoolbox.robot.ET import ET
|
|
12
|
+
from spatialmath import SE3
|
|
13
|
+
from typing import List, Union
|
|
14
|
+
from functools import wraps
|
|
15
|
+
from numpy import ndarray, cos, sin, array
|
|
16
|
+
from copy import deepcopy
|
|
17
|
+
|
|
18
|
+
# _eps = np.finfo(np.float64).eps
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
ArrayLike = Union[list, ndarray, tuple, set]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _check_rne(func):
|
|
25
|
+
"""
|
|
26
|
+
@_check_rne decorator
|
|
27
|
+
|
|
28
|
+
Decorator applied to any method to calls to C RNE code. Works in
|
|
29
|
+
conjunction with::
|
|
30
|
+
|
|
31
|
+
@_listen_dyn
|
|
32
|
+
def dyn_param_setter(self, value):
|
|
33
|
+
|
|
34
|
+
which marks the dynamic parameters as having changed using the robot's
|
|
35
|
+
``.dynchanged()`` method.
|
|
36
|
+
|
|
37
|
+
If this is the case, then the parameters are re-serialized prior to
|
|
38
|
+
invoking inverse dynamics.
|
|
39
|
+
|
|
40
|
+
:seealso: :func:`Link._listen_dyn`
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
@wraps(func)
|
|
44
|
+
def wrapper_check_rne(*args, **kwargs):
|
|
45
|
+
if args[0]._rne_ob is None or args[0]._dynchanged:
|
|
46
|
+
args[0].delete_rne()
|
|
47
|
+
args[0]._init_rne()
|
|
48
|
+
args[0]._rne_changed = False
|
|
49
|
+
return func(*args, **kwargs)
|
|
50
|
+
|
|
51
|
+
return wrapper_check_rne
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# --------------------------------------------------------------#
|
|
55
|
+
|
|
56
|
+
try: # pragma: no cover
|
|
57
|
+
# print('Using SymPy')
|
|
58
|
+
import sympy as sym
|
|
59
|
+
|
|
60
|
+
def _issymbol(x): # type: ignore
|
|
61
|
+
return isinstance(x, sym.Expr)
|
|
62
|
+
|
|
63
|
+
except ImportError:
|
|
64
|
+
|
|
65
|
+
def _issymbol(x): # pylint: disable=unused-argument
|
|
66
|
+
return False
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _cos(theta) -> float:
|
|
70
|
+
if _issymbol(theta):
|
|
71
|
+
return sym.cos(theta) # type: ignore
|
|
72
|
+
else:
|
|
73
|
+
return cos(theta)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _sin(theta) -> float:
|
|
77
|
+
if _issymbol(theta):
|
|
78
|
+
return sym.sin(theta) # type: ignore
|
|
79
|
+
else:
|
|
80
|
+
return sin(theta)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
# --------------------------------------------------------------#
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class DHLink(Link):
|
|
87
|
+
"""
|
|
88
|
+
A link superclass for all robots defined using Denavit-Hartenberg notation.
|
|
89
|
+
A Link object holds all information related to a robot joint and link such
|
|
90
|
+
as kinematics parameters, rigid-body inertial parameters, motor and
|
|
91
|
+
transmission parameters.
|
|
92
|
+
|
|
93
|
+
:param theta: kinematic: joint angle
|
|
94
|
+
:type theta: float
|
|
95
|
+
:param d: kinematic - link offset
|
|
96
|
+
:type d: float
|
|
97
|
+
:param alpha: kinematic - link twist
|
|
98
|
+
:type alpha: float
|
|
99
|
+
:param a: kinematic - link length
|
|
100
|
+
:type a: float
|
|
101
|
+
:param sigma: kinematic - 0 if revolute, 1 if prismatic
|
|
102
|
+
:type sigma: int
|
|
103
|
+
:param mdh: kinematic - 0 if standard D&H, else 1
|
|
104
|
+
:type mdh: int
|
|
105
|
+
:param offset: kinematic - joint variable offset
|
|
106
|
+
:type offset: float
|
|
107
|
+
|
|
108
|
+
:param qlim: joint variable limits [min, max]
|
|
109
|
+
:type qlim: ndarray(2,)
|
|
110
|
+
:param flip: joint moves in opposite direction
|
|
111
|
+
:type flip: bool
|
|
112
|
+
|
|
113
|
+
:param m: dynamic - link mass
|
|
114
|
+
:type m: float
|
|
115
|
+
:param r: dynamic - position of COM with respect to link frame
|
|
116
|
+
:type r: ndarray(3,)
|
|
117
|
+
:param I: dynamic - inertia of link with respect to COM
|
|
118
|
+
:type I: ndarray
|
|
119
|
+
:param Jm: dynamic - motor inertia
|
|
120
|
+
:type Jm: float
|
|
121
|
+
:param B: dynamic - motor viscous friction: B=B⁺=B⁻, [B⁺, B⁻]
|
|
122
|
+
:type B: float, or ndarray(2,)
|
|
123
|
+
:param Tc: dynamic - motor Coulomb friction [Tc⁺, Tc⁻]
|
|
124
|
+
:type Tc: ndarray(2,)
|
|
125
|
+
:param G: dynamic - gear ratio
|
|
126
|
+
:type G: float
|
|
127
|
+
|
|
128
|
+
:references:
|
|
129
|
+
- Robotics, Vision & Control, P. Corke, Springer 2023, Chap 7.
|
|
130
|
+
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
def __init__(
|
|
134
|
+
self,
|
|
135
|
+
d=0.0,
|
|
136
|
+
alpha=0.0,
|
|
137
|
+
theta=0.0,
|
|
138
|
+
a=0.0,
|
|
139
|
+
sigma=0,
|
|
140
|
+
mdh=False,
|
|
141
|
+
offset=0,
|
|
142
|
+
flip=False,
|
|
143
|
+
qlim: Union[ArrayLike, None] = None,
|
|
144
|
+
**kwargs,
|
|
145
|
+
):
|
|
146
|
+
super().__init__(**kwargs)
|
|
147
|
+
|
|
148
|
+
ets = self._to_ets(sigma, theta, d, alpha, a, offset, flip, mdh)
|
|
149
|
+
self._ets = ets
|
|
150
|
+
|
|
151
|
+
# Set the variable et
|
|
152
|
+
for et in ets:
|
|
153
|
+
if et.isjoint:
|
|
154
|
+
self._v = et
|
|
155
|
+
break
|
|
156
|
+
|
|
157
|
+
# Set the qlim if provided now we have an ETS
|
|
158
|
+
if qlim is not None and self.v:
|
|
159
|
+
self.v.qlim = qlim
|
|
160
|
+
|
|
161
|
+
# DH Kinematic parameters
|
|
162
|
+
self.sigma = sigma
|
|
163
|
+
self.theta = theta
|
|
164
|
+
self.d = d
|
|
165
|
+
self.alpha = alpha
|
|
166
|
+
self.a = a
|
|
167
|
+
self.mdh = mdh
|
|
168
|
+
self.offset = offset
|
|
169
|
+
self.id = None
|
|
170
|
+
self.mesh = None
|
|
171
|
+
self.number = None
|
|
172
|
+
|
|
173
|
+
def _to_ets(self, sigma, theta, d, alpha, a, offset, flip: bool, mdh):
|
|
174
|
+
ets = ETS()
|
|
175
|
+
|
|
176
|
+
isrevolute = False if sigma else True
|
|
177
|
+
|
|
178
|
+
# MDH format: a alpha theta d
|
|
179
|
+
if mdh:
|
|
180
|
+
if a != 0:
|
|
181
|
+
ets *= ET.tx(a)
|
|
182
|
+
if alpha != 0:
|
|
183
|
+
ets *= ET.Rx(alpha)
|
|
184
|
+
|
|
185
|
+
if isrevolute:
|
|
186
|
+
if offset != 0:
|
|
187
|
+
ets *= ET.Rz(offset)
|
|
188
|
+
|
|
189
|
+
# Swapped d and theta: will make no difference to the transform
|
|
190
|
+
# But makes ets end with variable which is needed
|
|
191
|
+
if d != 0:
|
|
192
|
+
ets *= ET.tz(d)
|
|
193
|
+
|
|
194
|
+
ets *= ET.Rz(flip=flip) # joint
|
|
195
|
+
else:
|
|
196
|
+
if theta != 0:
|
|
197
|
+
ets *= ET.Rz(theta)
|
|
198
|
+
|
|
199
|
+
if offset != 0:
|
|
200
|
+
ets *= ET.tz(offset)
|
|
201
|
+
|
|
202
|
+
ets *= ET.tz(flip=flip) # joint
|
|
203
|
+
else:
|
|
204
|
+
# DH format: theta d a alpha
|
|
205
|
+
if isrevolute:
|
|
206
|
+
if offset != 0:
|
|
207
|
+
ets *= ET.Rz(offset)
|
|
208
|
+
ets *= ET.Rz(flip=flip)
|
|
209
|
+
|
|
210
|
+
if d != 0:
|
|
211
|
+
ets *= ET.tz(d)
|
|
212
|
+
else:
|
|
213
|
+
if theta != 0:
|
|
214
|
+
ets *= ET.Rz(theta)
|
|
215
|
+
|
|
216
|
+
if offset != 0:
|
|
217
|
+
ets *= ET.tz(offset)
|
|
218
|
+
ets *= ET.tz(flip=flip)
|
|
219
|
+
|
|
220
|
+
if a != 0:
|
|
221
|
+
ets *= ET.tx(a)
|
|
222
|
+
if alpha != 0:
|
|
223
|
+
ets *= ET.Rx(alpha)
|
|
224
|
+
|
|
225
|
+
return ets
|
|
226
|
+
|
|
227
|
+
@property
|
|
228
|
+
def isjoint(self) -> bool:
|
|
229
|
+
"""
|
|
230
|
+
Test if link has joint
|
|
231
|
+
:return: test if link has a joint
|
|
232
|
+
:rtype: bool
|
|
233
|
+
The ETS for each ELink comprises a constant part (possible the
|
|
234
|
+
identity) followed by an optional joint variable transform.
|
|
235
|
+
This property returns the whether the
|
|
236
|
+
.. runblock:: pycon
|
|
237
|
+
>>> from roboticstoolbox import models
|
|
238
|
+
>>> robot = models.URDF.Panda()
|
|
239
|
+
>>> robot[1].isjoint # link with joint
|
|
240
|
+
>>> robot[8].isjoint # static link
|
|
241
|
+
"""
|
|
242
|
+
return True
|
|
243
|
+
|
|
244
|
+
# @classmethod
|
|
245
|
+
# def StandardDH(cls, links: List["StandardDH"]) -> List["DHLink"]:
|
|
246
|
+
# """
|
|
247
|
+
# Takes a list of standard DH links and converts to a list
|
|
248
|
+
# of modified DH parameters
|
|
249
|
+
|
|
250
|
+
# """
|
|
251
|
+
|
|
252
|
+
# new_links = []
|
|
253
|
+
# ets = ETS()
|
|
254
|
+
|
|
255
|
+
# # Make an ets of the whole Robot
|
|
256
|
+
# for link in links:
|
|
257
|
+
# ets += link.ets
|
|
258
|
+
|
|
259
|
+
# # Split ETS with variables at the end
|
|
260
|
+
# segs = ets.split()
|
|
261
|
+
|
|
262
|
+
# # Construct MDH Links
|
|
263
|
+
# for (seg, link) in zip(segs, links):
|
|
264
|
+
# flip = True if seg[-1].isflip else False
|
|
265
|
+
# isrevolute = True if seg[-1].axis[0] == "R" else False
|
|
266
|
+
|
|
267
|
+
# a = 0.0
|
|
268
|
+
# alpha = 0.0
|
|
269
|
+
# theta = 0.0
|
|
270
|
+
# d = 0.0
|
|
271
|
+
# offset = 0.0
|
|
272
|
+
|
|
273
|
+
# # Find MDH Parameters
|
|
274
|
+
# for et in seg:
|
|
275
|
+
# if et.axis == "tx":
|
|
276
|
+
# a = et.eta
|
|
277
|
+
# elif et.axis == "Rx":
|
|
278
|
+
# alpha = et.eta
|
|
279
|
+
# elif et.axis == "Rz" and not et.isjoint:
|
|
280
|
+
# offset = et.eta
|
|
281
|
+
# elif et.axis == "Rz" and not isrevolute:
|
|
282
|
+
# theta = et.eta
|
|
283
|
+
# elif et.axis == "tz" and isrevolute:
|
|
284
|
+
# d = et.eta
|
|
285
|
+
|
|
286
|
+
# # Make the link
|
|
287
|
+
# if isrevolute:
|
|
288
|
+
# new_link = RevoluteMDH(
|
|
289
|
+
# d=d,
|
|
290
|
+
# a=a,
|
|
291
|
+
# alpha=alpha,
|
|
292
|
+
# offset=offset,
|
|
293
|
+
# qlim=link.qlim,
|
|
294
|
+
# flip=flip,
|
|
295
|
+
# name=link.name,
|
|
296
|
+
# m=link.m,
|
|
297
|
+
# r=link.r,
|
|
298
|
+
# I=link.I,
|
|
299
|
+
# Jm=link.Jm,
|
|
300
|
+
# B=link.B,
|
|
301
|
+
# Tc=link.Tc,
|
|
302
|
+
# G=link.G,
|
|
303
|
+
# geometry=link.geometry,
|
|
304
|
+
# collision=link.collision,
|
|
305
|
+
# )
|
|
306
|
+
# else:
|
|
307
|
+
# new_link = PrismaticMDH(
|
|
308
|
+
# theta=theta,
|
|
309
|
+
# a=a,
|
|
310
|
+
# alpha=alpha,
|
|
311
|
+
# offset=offset,
|
|
312
|
+
# qlim=link.qlim,
|
|
313
|
+
# flip=flip,
|
|
314
|
+
# name=link.name,
|
|
315
|
+
# m=link.m,
|
|
316
|
+
# r=link.r,
|
|
317
|
+
# I=link.I,
|
|
318
|
+
# Jm=link.Jm,
|
|
319
|
+
# B=link.B,
|
|
320
|
+
# Tc=link.Tc,
|
|
321
|
+
# G=link.G,
|
|
322
|
+
# geometry=link.geometry,
|
|
323
|
+
# collision=link.collision,
|
|
324
|
+
# )
|
|
325
|
+
|
|
326
|
+
# new_links.append(new_link)
|
|
327
|
+
|
|
328
|
+
# return new_links
|
|
329
|
+
|
|
330
|
+
def __add__(self, L):
|
|
331
|
+
if isinstance(L, DHLink):
|
|
332
|
+
return rp.DHRobot([self, L])
|
|
333
|
+
|
|
334
|
+
elif isinstance(L, rp.DHRobot):
|
|
335
|
+
nlinks = [self]
|
|
336
|
+
|
|
337
|
+
# TODO - Should I do a deep copy here a physically copy the Links
|
|
338
|
+
# and not just the references?
|
|
339
|
+
# Copy Link references to new list
|
|
340
|
+
for i in range(L.n):
|
|
341
|
+
nlinks.append(L.links[i])
|
|
342
|
+
|
|
343
|
+
return rp.DHRobot(
|
|
344
|
+
nlinks,
|
|
345
|
+
name=L.name,
|
|
346
|
+
manufacturer=L.manufacturer,
|
|
347
|
+
base=L.base,
|
|
348
|
+
tool=L.tool,
|
|
349
|
+
gravity=L.gravity,
|
|
350
|
+
)
|
|
351
|
+
|
|
352
|
+
else:
|
|
353
|
+
raise TypeError("Cannot add a Link with a non Link object")
|
|
354
|
+
|
|
355
|
+
def __str__(self):
|
|
356
|
+
|
|
357
|
+
s = ""
|
|
358
|
+
|
|
359
|
+
if self.offset == 0:
|
|
360
|
+
offset = ""
|
|
361
|
+
else:
|
|
362
|
+
offset = f" + {self.offset}"
|
|
363
|
+
if self.id is None:
|
|
364
|
+
qvar = "q"
|
|
365
|
+
else:
|
|
366
|
+
qvar = f"q{self.id}"
|
|
367
|
+
cls = self.__class__.__name__
|
|
368
|
+
if self.isrevolute:
|
|
369
|
+
s = f"{cls}: θ={qvar}{offset}, d={self.d}, a={self.a}, ⍺={self.alpha}"
|
|
370
|
+
elif self.isprismatic:
|
|
371
|
+
s = (
|
|
372
|
+
f"{cls}: θ={self.theta}, d={qvar}{offset}, "
|
|
373
|
+
f" a={self.a}, "
|
|
374
|
+
f"⍺={self.alpha}"
|
|
375
|
+
)
|
|
376
|
+
return s
|
|
377
|
+
|
|
378
|
+
def __repr__(self):
|
|
379
|
+
name = self.__class__.__name__
|
|
380
|
+
args = []
|
|
381
|
+
if self.isrevolute:
|
|
382
|
+
self._format_param(args, "d")
|
|
383
|
+
else:
|
|
384
|
+
self._format_param(args, "theta", "θ")
|
|
385
|
+
self._format_param(args, "a")
|
|
386
|
+
self._format_param(args, "alpha", "⍺")
|
|
387
|
+
args.extend(super()._params())
|
|
388
|
+
return name + "(" + ", ".join(args) + ")"
|
|
389
|
+
|
|
390
|
+
def __deepcopy__(self, memo):
|
|
391
|
+
kwargs = {
|
|
392
|
+
"name": deepcopy(self.name),
|
|
393
|
+
"joint_name": deepcopy(self._joint_name),
|
|
394
|
+
"m": deepcopy(self.m),
|
|
395
|
+
"r": deepcopy(self.r),
|
|
396
|
+
"I": deepcopy(self.I),
|
|
397
|
+
"Jm": deepcopy(self.Jm),
|
|
398
|
+
"B": deepcopy(self.B),
|
|
399
|
+
"Tc": deepcopy(self.Tc),
|
|
400
|
+
"G": deepcopy(self.G),
|
|
401
|
+
"qlim": deepcopy(self.qlim),
|
|
402
|
+
"geometry": [shape.copy() for shape in self._geometry],
|
|
403
|
+
"collision": [shape.copy() for shape in self._collision],
|
|
404
|
+
"d": deepcopy(self.d),
|
|
405
|
+
"alpha": deepcopy(self.alpha),
|
|
406
|
+
"theta": deepcopy(self.theta),
|
|
407
|
+
"a": deepcopy(self.a),
|
|
408
|
+
"sigma": deepcopy(self.sigma),
|
|
409
|
+
"mdh": deepcopy(self.mdh),
|
|
410
|
+
"offset": deepcopy(self.offset),
|
|
411
|
+
"flip": deepcopy(self.isflip),
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
cls = self.__class__
|
|
415
|
+
|
|
416
|
+
if "Revolute" in str(cls):
|
|
417
|
+
del kwargs["theta"]
|
|
418
|
+
del kwargs["sigma"]
|
|
419
|
+
del kwargs["mdh"]
|
|
420
|
+
elif "Prismatic" in str(cls):
|
|
421
|
+
del kwargs["d"]
|
|
422
|
+
del kwargs["sigma"]
|
|
423
|
+
del kwargs["mdh"]
|
|
424
|
+
|
|
425
|
+
result = cls(**kwargs)
|
|
426
|
+
result._robot = self.robot
|
|
427
|
+
result.sigma = self.sigma
|
|
428
|
+
result.number = self.number
|
|
429
|
+
|
|
430
|
+
memo[id(self)] = result
|
|
431
|
+
return result
|
|
432
|
+
|
|
433
|
+
# -------------------------------------------------------------------------- #
|
|
434
|
+
|
|
435
|
+
@property
|
|
436
|
+
def theta(self):
|
|
437
|
+
"""
|
|
438
|
+
Get/set joint angle
|
|
439
|
+
|
|
440
|
+
- ``link.theta`` is the joint angle
|
|
441
|
+
:return: joint angle
|
|
442
|
+
:rtype: float
|
|
443
|
+
- ``link.theta = ...`` checks and sets the joint angle
|
|
444
|
+
|
|
445
|
+
"""
|
|
446
|
+
return self._theta
|
|
447
|
+
|
|
448
|
+
@theta.setter
|
|
449
|
+
@_listen_dyn
|
|
450
|
+
def theta(self, theta_new):
|
|
451
|
+
if not self.sigma and theta_new != 0.0:
|
|
452
|
+
raise ValueError("theta is not valid for revolute joints")
|
|
453
|
+
else:
|
|
454
|
+
self._theta = theta_new
|
|
455
|
+
|
|
456
|
+
# -------------------------------------------------------------------------- #
|
|
457
|
+
|
|
458
|
+
@property
|
|
459
|
+
def d(self):
|
|
460
|
+
"""
|
|
461
|
+
Get/set link offset
|
|
462
|
+
|
|
463
|
+
- ``link.d`` is the link offset
|
|
464
|
+
:return: link offset
|
|
465
|
+
:rtype: float
|
|
466
|
+
- ``link.d = ...`` checks and sets the link offset
|
|
467
|
+
|
|
468
|
+
"""
|
|
469
|
+
return self._d
|
|
470
|
+
|
|
471
|
+
@d.setter
|
|
472
|
+
@_listen_dyn
|
|
473
|
+
def d(self, d_new):
|
|
474
|
+
if self.sigma and d_new != 0.0:
|
|
475
|
+
raise ValueError("f is not valid for prismatic joints")
|
|
476
|
+
else:
|
|
477
|
+
self._d = d_new
|
|
478
|
+
|
|
479
|
+
# -------------------------------------------------------------------------- #
|
|
480
|
+
|
|
481
|
+
@property
|
|
482
|
+
def a(self):
|
|
483
|
+
"""
|
|
484
|
+
Get/set link length
|
|
485
|
+
|
|
486
|
+
- ``link.a`` is the link length
|
|
487
|
+
:return: link length
|
|
488
|
+
:rtype: float
|
|
489
|
+
- ``link.a = ...`` checks and sets the link length
|
|
490
|
+
|
|
491
|
+
"""
|
|
492
|
+
return self._a
|
|
493
|
+
|
|
494
|
+
@a.setter
|
|
495
|
+
@_listen_dyn
|
|
496
|
+
def a(self, a_new):
|
|
497
|
+
self._a = a_new
|
|
498
|
+
|
|
499
|
+
# -------------------------------------------------------------------------- #
|
|
500
|
+
|
|
501
|
+
@property
|
|
502
|
+
def alpha(self):
|
|
503
|
+
"""
|
|
504
|
+
Get/set link twist
|
|
505
|
+
|
|
506
|
+
- ``link.d`` is the link twist
|
|
507
|
+
:return: link twist
|
|
508
|
+
:rtype: float
|
|
509
|
+
- ``link.d = ...`` checks and sets the link twist
|
|
510
|
+
|
|
511
|
+
"""
|
|
512
|
+
return self._alpha
|
|
513
|
+
|
|
514
|
+
@alpha.setter
|
|
515
|
+
@_listen_dyn
|
|
516
|
+
def alpha(self, alpha_new):
|
|
517
|
+
self._alpha = alpha_new
|
|
518
|
+
|
|
519
|
+
# -------------------------------------------------------------------------- #
|
|
520
|
+
|
|
521
|
+
@property
|
|
522
|
+
def sigma(self):
|
|
523
|
+
"""
|
|
524
|
+
Get/set joint type
|
|
525
|
+
|
|
526
|
+
- ``link.sigma`` is the joint type
|
|
527
|
+
:return: joint type
|
|
528
|
+
:rtype: int
|
|
529
|
+
- ``link.sigma = ...`` checks and sets the joint type
|
|
530
|
+
|
|
531
|
+
The joint type is 0 for a revolute joint, and 1 for a prismatic joint.
|
|
532
|
+
|
|
533
|
+
:seealso: :func:`isrevolute`, :func:`isprismatic`
|
|
534
|
+
"""
|
|
535
|
+
return self._sigma
|
|
536
|
+
|
|
537
|
+
@sigma.setter
|
|
538
|
+
@_listen_dyn
|
|
539
|
+
def sigma(self, sigma_new):
|
|
540
|
+
self._sigma = sigma_new
|
|
541
|
+
|
|
542
|
+
# -------------------------------------------------------------------------- #
|
|
543
|
+
|
|
544
|
+
@property
|
|
545
|
+
def mdh(self):
|
|
546
|
+
"""
|
|
547
|
+
Get/set kinematic convention
|
|
548
|
+
|
|
549
|
+
- ``link.mdh`` is the kinematic convention
|
|
550
|
+
:return: kinematic convention
|
|
551
|
+
:rtype: bool
|
|
552
|
+
- ``link.mdh = ...`` checks and sets the kinematic convention
|
|
553
|
+
|
|
554
|
+
The kinematic convention is True for modified Denavit-Hartenberg
|
|
555
|
+
notation (eg. Craig's textbook) and False for Denavit-Hartenberg
|
|
556
|
+
notation (eg. Siciliano, Spong, Paul textbooks).
|
|
557
|
+
"""
|
|
558
|
+
return self._mdh
|
|
559
|
+
|
|
560
|
+
@mdh.setter
|
|
561
|
+
@_listen_dyn
|
|
562
|
+
def mdh(self, mdh_new):
|
|
563
|
+
self._mdh = int(mdh_new)
|
|
564
|
+
|
|
565
|
+
# -------------------------------------------------------------------------- #
|
|
566
|
+
|
|
567
|
+
@property
|
|
568
|
+
def offset(self):
|
|
569
|
+
"""
|
|
570
|
+
Get/set joint variable offset
|
|
571
|
+
|
|
572
|
+
- ``link.offset`` is the joint variable offset
|
|
573
|
+
|
|
574
|
+
:return: joint variable offset
|
|
575
|
+
:rtype: float
|
|
576
|
+
|
|
577
|
+
- ``link.offset = ...`` checks and sets the joint variable offset
|
|
578
|
+
|
|
579
|
+
The offset is added to the joint angle before forward kinematics, and
|
|
580
|
+
subtracted after inverse kinematics. It is used to define the joint
|
|
581
|
+
configuration for zero joint coordinates.
|
|
582
|
+
|
|
583
|
+
"""
|
|
584
|
+
return self._offset
|
|
585
|
+
|
|
586
|
+
@offset.setter
|
|
587
|
+
def offset(self, offset_new):
|
|
588
|
+
self._offset = offset_new
|
|
589
|
+
|
|
590
|
+
# -------------------------------------------------------------------------- #
|
|
591
|
+
|
|
592
|
+
def A(self, q: float) -> SE3:
|
|
593
|
+
r"""
|
|
594
|
+
Link transform matrix
|
|
595
|
+
|
|
596
|
+
:param q: Joint coordinate
|
|
597
|
+
:type q: float
|
|
598
|
+
:return T: SE(3) link homogeneous transformation
|
|
599
|
+
:rtype T: SE3 instance
|
|
600
|
+
|
|
601
|
+
``A(q)`` is an ``SE3`` instance representing the SE(3) homogeneous
|
|
602
|
+
transformation matrix corresponding to the link's joint variable ``q``
|
|
603
|
+
which is either the Denavit-Hartenberg parameter :math:`\theta_j`
|
|
604
|
+
(revolute) or :math:`d_j` (prismatic).
|
|
605
|
+
|
|
606
|
+
This is the relative pose of the current link frame with respect to the
|
|
607
|
+
previous link frame.
|
|
608
|
+
|
|
609
|
+
For details of the computation see the documentation for the
|
|
610
|
+
subclasses, click on the right side of the class boxes below.
|
|
611
|
+
|
|
612
|
+
.. inheritance-diagram:: roboticstoolbox.RevoluteDH
|
|
613
|
+
roboticstoolbox.PrismaticDH roboticstoolbox.RevoluteMDH
|
|
614
|
+
roboticstoolbox.PrismaticMDH
|
|
615
|
+
:top-classes: roboticstoolbox.robot.DHLink.DHLink
|
|
616
|
+
:parts: 2
|
|
617
|
+
|
|
618
|
+
.. note::
|
|
619
|
+
|
|
620
|
+
- For a revolute joint the ``theta`` parameter of the link is
|
|
621
|
+
ignored, and ``q`` used instead.
|
|
622
|
+
- For a prismatic joint the ``d`` parameter of the link is ignored,
|
|
623
|
+
and ``q`` used instead.
|
|
624
|
+
- The joint ``offset`` parameter is added to ``q`` before
|
|
625
|
+
computation of the transformation matrix.
|
|
626
|
+
- The computation is different for standard and modified
|
|
627
|
+
Denavit-Hartenberg parameters.
|
|
628
|
+
|
|
629
|
+
:seealso: :class:`RevoluteDH`, :class:`PrismaticDH`,
|
|
630
|
+
:class:`RevoluteMDH`, :class:`PrismaticMDH`
|
|
631
|
+
"""
|
|
632
|
+
|
|
633
|
+
sa = _sin(self.alpha)
|
|
634
|
+
ca = _cos(self.alpha)
|
|
635
|
+
|
|
636
|
+
if self.ets[-1].isflip:
|
|
637
|
+
q = -q + self.offset
|
|
638
|
+
else:
|
|
639
|
+
q = q + self.offset
|
|
640
|
+
|
|
641
|
+
if self.sigma == 0:
|
|
642
|
+
# revolute
|
|
643
|
+
st = _sin(q)
|
|
644
|
+
ct = _cos(q)
|
|
645
|
+
d = self.d
|
|
646
|
+
else:
|
|
647
|
+
# prismatic
|
|
648
|
+
st = _sin(self.theta)
|
|
649
|
+
ct = _cos(self.theta)
|
|
650
|
+
d = q
|
|
651
|
+
|
|
652
|
+
if self.mdh == 0:
|
|
653
|
+
# standard DH
|
|
654
|
+
T = array(
|
|
655
|
+
[
|
|
656
|
+
[ct, -st * ca, st * sa, self.a * ct],
|
|
657
|
+
[st, ct * ca, -ct * sa, self.a * st],
|
|
658
|
+
[0, sa, ca, d],
|
|
659
|
+
[0, 0, 0, 1],
|
|
660
|
+
]
|
|
661
|
+
)
|
|
662
|
+
else:
|
|
663
|
+
# modified DH
|
|
664
|
+
T = array(
|
|
665
|
+
[
|
|
666
|
+
[ct, -st, 0, self.a],
|
|
667
|
+
[st * ca, ct * ca, -sa, -sa * d],
|
|
668
|
+
[st * sa, ct * sa, ca, ca * d],
|
|
669
|
+
[0, 0, 0, 1],
|
|
670
|
+
]
|
|
671
|
+
)
|
|
672
|
+
|
|
673
|
+
return SE3(T, check=False)
|
|
674
|
+
|
|
675
|
+
@property
|
|
676
|
+
def isrevolute(self):
|
|
677
|
+
"""
|
|
678
|
+
Checks if the joint is of revolute type
|
|
679
|
+
|
|
680
|
+
:return: Ture if is revolute
|
|
681
|
+
:rtype: bool
|
|
682
|
+
|
|
683
|
+
:seealso: :func:`sigma`
|
|
684
|
+
"""
|
|
685
|
+
|
|
686
|
+
if not self.sigma:
|
|
687
|
+
return True
|
|
688
|
+
else:
|
|
689
|
+
return False
|
|
690
|
+
|
|
691
|
+
@property
|
|
692
|
+
def isprismatic(self):
|
|
693
|
+
"""
|
|
694
|
+
Checks if the joint is of prismatic type
|
|
695
|
+
|
|
696
|
+
:return: Ture if is prismatic
|
|
697
|
+
:rtype: bool
|
|
698
|
+
|
|
699
|
+
:seealso: :func:`sigma`
|
|
700
|
+
"""
|
|
701
|
+
|
|
702
|
+
if self.sigma:
|
|
703
|
+
return True
|
|
704
|
+
else:
|
|
705
|
+
return False
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
# -------------------------------------------------------------------------- #
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
class RevoluteDH(DHLink):
|
|
712
|
+
r"""
|
|
713
|
+
Class for revolute links using standard DH convention
|
|
714
|
+
:param d: kinematic - link offset
|
|
715
|
+
:type d: float
|
|
716
|
+
:param alpha: kinematic - link twist
|
|
717
|
+
:type alpha: float
|
|
718
|
+
:param a: kinematic - link length
|
|
719
|
+
:type a: float
|
|
720
|
+
:param offset: kinematic - joint variable offset
|
|
721
|
+
:type offset: float
|
|
722
|
+
:param qlim: joint variable limits [min, max]
|
|
723
|
+
:type qlim: float ndarray(1,2)
|
|
724
|
+
:param flip: joint moves in opposite direction
|
|
725
|
+
:type flip: bool
|
|
726
|
+
:param m: dynamic - link mass
|
|
727
|
+
:type m: float
|
|
728
|
+
:param r: dynamic - position of COM with respect to link frame
|
|
729
|
+
:type r: float ndarray(3)
|
|
730
|
+
:param I: dynamic - inertia of link with respect to COM
|
|
731
|
+
:type I: ndarray
|
|
732
|
+
:param Jm: dynamic - motor inertia
|
|
733
|
+
:type Jm: float
|
|
734
|
+
:param B: dynamic - motor viscous friction: B=B⁺=B⁻, [B⁺, B⁻]
|
|
735
|
+
:type B: float, or ndarray(2,)
|
|
736
|
+
:param Tc: dynamic - motor Coulomb friction [Tc⁺, Tc⁻]
|
|
737
|
+
:type Tc: ndarray(2,)
|
|
738
|
+
:param G: dynamic - gear ratio
|
|
739
|
+
:type G: float
|
|
740
|
+
|
|
741
|
+
A subclass of the :class:`DHLink` class for a revolute joint that holds all
|
|
742
|
+
information related to a robot link such as kinematics parameters,
|
|
743
|
+
rigid-body inertial parameters, motor and transmission parameters.
|
|
744
|
+
The link transform is
|
|
745
|
+
:math:`\underbrace{\mathbf{T}_{rz}(q_i)}_{\mbox{variable}} \cdot \mathbf{T}_{tz}(d_i) \cdot \mathbf{T}_{tx}(a_i) \cdot \mathbf{T}_{rx}(\alpha_i)`
|
|
746
|
+
where :math:`q_i` is the joint variable.
|
|
747
|
+
:references:
|
|
748
|
+
- Robotics, Vision & Control in Python, 3e, P. Corke, Springer 2023, Chap 7.
|
|
749
|
+
|
|
750
|
+
:seealso: :func:`PrismaticDH`, :func:`DHLink`, :func:`RevoluteMDH`
|
|
751
|
+
""" # noqa
|
|
752
|
+
|
|
753
|
+
def __init__(
|
|
754
|
+
self, d=0.0, a=0.0, alpha=0.0, offset=0.0, qlim=None, flip=False, **kwargs
|
|
755
|
+
):
|
|
756
|
+
|
|
757
|
+
theta = 0.0
|
|
758
|
+
sigma = 0
|
|
759
|
+
mdh = False
|
|
760
|
+
|
|
761
|
+
super().__init__(
|
|
762
|
+
d=d,
|
|
763
|
+
alpha=alpha,
|
|
764
|
+
theta=theta,
|
|
765
|
+
a=a,
|
|
766
|
+
sigma=sigma,
|
|
767
|
+
mdh=mdh,
|
|
768
|
+
offset=offset,
|
|
769
|
+
qlim=qlim,
|
|
770
|
+
flip=flip,
|
|
771
|
+
**kwargs,
|
|
772
|
+
)
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
class PrismaticDH(DHLink):
|
|
776
|
+
r"""
|
|
777
|
+
Class for prismatic link using standard DH convention
|
|
778
|
+
:param theta: kinematic: joint angle
|
|
779
|
+
:type theta: float
|
|
780
|
+
:param d: kinematic - link offset
|
|
781
|
+
:type d: float
|
|
782
|
+
:param alpha: kinematic - link twist
|
|
783
|
+
:type alpha: float
|
|
784
|
+
:param a: kinematic - link length
|
|
785
|
+
:type a: float
|
|
786
|
+
:param offset: kinematic - joint variable offset
|
|
787
|
+
:type offset: float
|
|
788
|
+
:param qlim: joint variable limits [min, max]
|
|
789
|
+
:type qlim: float ndarray(1,2)
|
|
790
|
+
:param flip: joint moves in opposite direction
|
|
791
|
+
:type flip: bool
|
|
792
|
+
:param m: dynamic - link mass
|
|
793
|
+
:type m: float
|
|
794
|
+
:param r: dynamic - position of COM with respect to link frame
|
|
795
|
+
:type r: float ndarray(3)
|
|
796
|
+
:param I: dynamic - inertia of link with respect to COM
|
|
797
|
+
:type I: ndarray
|
|
798
|
+
:param Jm: dynamic - motor inertia
|
|
799
|
+
:type Jm: float
|
|
800
|
+
:param B: dynamic - motor viscous friction: B=B⁺=B⁻, [B⁺, B⁻]
|
|
801
|
+
:type B: float, or ndarray(2,)
|
|
802
|
+
:param Tc: dynamic - motor Coulomb friction [Tc⁺, Tc⁻]
|
|
803
|
+
:type Tc: ndarray(2,)
|
|
804
|
+
:param G: dynamic - gear ratio
|
|
805
|
+
:type G: float
|
|
806
|
+
A subclass of the DHLink class for a prismatic joint that holds all
|
|
807
|
+
information related to a robot link such as kinematics parameters,
|
|
808
|
+
rigid-body inertial parameters, motor and transmission parameters.
|
|
809
|
+
The link transform is
|
|
810
|
+
:math:`\mathbf{T}_{rz}(\theta_i) \cdot \underbrace{\mathbf{T}_{tz}(q_i)}_{\mbox{variable}} \cdot \mathbf{T}_{tx}(a_i) \cdot \mathbf{T}_{rx}(\alpha_i)`
|
|
811
|
+
where :math:`q_i` is the joint variable.
|
|
812
|
+
:references:
|
|
813
|
+
- Robotics, Vision & Control in Python, 3e, P. Corke, Springer 2023, Chap 7.
|
|
814
|
+
|
|
815
|
+
:seealso: :func:`RevoluteDH`, :func:`DHLink`, :func:`PrismaticMDH`
|
|
816
|
+
""" # noqa
|
|
817
|
+
|
|
818
|
+
def __init__(
|
|
819
|
+
self, theta=0.0, a=0.0, alpha=0.0, offset=0.0, qlim=None, flip=False, **kwargs
|
|
820
|
+
):
|
|
821
|
+
|
|
822
|
+
d = 0.0
|
|
823
|
+
sigma = 1
|
|
824
|
+
mdh = False
|
|
825
|
+
|
|
826
|
+
super().__init__(
|
|
827
|
+
theta=theta,
|
|
828
|
+
d=d,
|
|
829
|
+
a=a,
|
|
830
|
+
alpha=alpha,
|
|
831
|
+
sigma=sigma,
|
|
832
|
+
mdh=mdh,
|
|
833
|
+
offset=offset,
|
|
834
|
+
qlim=qlim,
|
|
835
|
+
flip=flip,
|
|
836
|
+
**kwargs,
|
|
837
|
+
)
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
class RevoluteMDH(DHLink):
|
|
841
|
+
r"""
|
|
842
|
+
Class for revolute links using modified DH convention
|
|
843
|
+
|
|
844
|
+
:param d: kinematic - link offset
|
|
845
|
+
:type d: float
|
|
846
|
+
:param alpha: kinematic - link twist
|
|
847
|
+
:type alpha: float
|
|
848
|
+
:param a: kinematic - link length
|
|
849
|
+
:type a: float
|
|
850
|
+
:param offset: kinematic - joint variable offset
|
|
851
|
+
:type offset: float
|
|
852
|
+
|
|
853
|
+
:param qlim: joint variable limits [min, max]
|
|
854
|
+
:type qlim: float ndarray(1,2)
|
|
855
|
+
:param flip: joint moves in opposite direction
|
|
856
|
+
:type flip: bool
|
|
857
|
+
|
|
858
|
+
:param m: dynamic - link mass
|
|
859
|
+
:type m: float
|
|
860
|
+
:param r: dynamic - position of COM with respect to link frame
|
|
861
|
+
:type r: float ndarray(3)
|
|
862
|
+
:param I: dynamic - inertia of link with respect to COM
|
|
863
|
+
:type I: ndarray
|
|
864
|
+
:param Jm: dynamic - motor inertia
|
|
865
|
+
:type Jm: float
|
|
866
|
+
:param B: dynamic - motor viscous friction: B=B⁺=B⁻, [B⁺, B⁻]
|
|
867
|
+
:type B: float, or ndarray(2,)
|
|
868
|
+
:param Tc: dynamic - motor Coulomb friction [Tc⁺, Tc⁻]
|
|
869
|
+
:type Tc: ndarray(2,)
|
|
870
|
+
:param G: dynamic - gear ratio
|
|
871
|
+
:type G: float
|
|
872
|
+
|
|
873
|
+
A subclass of the DHLink class for a revolute joint that holds all
|
|
874
|
+
information related to a robot link such as kinematics parameters,
|
|
875
|
+
rigid-body inertial parameters, motor and transmission parameters.
|
|
876
|
+
|
|
877
|
+
The link transform is
|
|
878
|
+
|
|
879
|
+
:math:`\mathbf{T}_{tx}(a_{i-1}) \cdot \mathbf{T}_{rx}(\alpha_{i-1}) \cdot \underbrace{\mathbf{T}_{rz}(q_i)}_{\mbox{variable}} \cdot \mathbf{T}_{tz}(d_i)`
|
|
880
|
+
|
|
881
|
+
where :math:`q_i` is the joint variable.
|
|
882
|
+
|
|
883
|
+
:references:
|
|
884
|
+
- Robotics, Vision & Control in Python, 3e, P. Corke, Springer 2023, Chap 7.
|
|
885
|
+
|
|
886
|
+
:seealso: :func:`PrismaticMDH`, :func:`DHLink`, :func:`RevoluteDH`
|
|
887
|
+
""" # noqa
|
|
888
|
+
|
|
889
|
+
def __init__(
|
|
890
|
+
self, d=0.0, a=0.0, alpha=0.0, offset=0.0, qlim=None, flip=False, **kwargs
|
|
891
|
+
):
|
|
892
|
+
|
|
893
|
+
theta = 0.0
|
|
894
|
+
sigma = 0
|
|
895
|
+
mdh = True
|
|
896
|
+
|
|
897
|
+
super().__init__(
|
|
898
|
+
d=d,
|
|
899
|
+
alpha=alpha,
|
|
900
|
+
theta=theta,
|
|
901
|
+
a=a,
|
|
902
|
+
sigma=sigma,
|
|
903
|
+
mdh=mdh,
|
|
904
|
+
offset=offset,
|
|
905
|
+
qlim=qlim,
|
|
906
|
+
flip=flip,
|
|
907
|
+
**kwargs,
|
|
908
|
+
)
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
class PrismaticMDH(DHLink):
|
|
912
|
+
r"""
|
|
913
|
+
Class for prismatic link using modified DH convention
|
|
914
|
+
|
|
915
|
+
:param theta: kinematic: joint angle
|
|
916
|
+
:type theta: float
|
|
917
|
+
:param d: kinematic - link offset
|
|
918
|
+
:type d: float
|
|
919
|
+
:param alpha: kinematic - link twist
|
|
920
|
+
:type alpha: float
|
|
921
|
+
:param a: kinematic - link length
|
|
922
|
+
:type a: float
|
|
923
|
+
:param offset: kinematic - joint variable offset
|
|
924
|
+
:type offset: float
|
|
925
|
+
|
|
926
|
+
:param qlim: joint variable limits [min, max]
|
|
927
|
+
:type qlim: float ndarray(1,2)
|
|
928
|
+
:param flip: joint moves in opposite direction
|
|
929
|
+
:type flip: bool
|
|
930
|
+
|
|
931
|
+
:param m: dynamic - link mass
|
|
932
|
+
:type m: float
|
|
933
|
+
:param r: dynamic - position of COM with respect to link frame
|
|
934
|
+
:type r: float ndarray(3)
|
|
935
|
+
:param I: dynamic - inertia of link with respect to COM
|
|
936
|
+
:type I: ndarray
|
|
937
|
+
:param Jm: dynamic - motor inertia
|
|
938
|
+
:type Jm: float
|
|
939
|
+
:param B: dynamic - motor viscous friction: B=B⁺=B⁻, [B⁺, B⁻]
|
|
940
|
+
:type B: float, or ndarray(2,)
|
|
941
|
+
:param Tc: dynamic - motor Coulomb friction [Tc⁺, Tc⁻]
|
|
942
|
+
:type Tc: ndarray(2,)
|
|
943
|
+
:param G: dynamic - gear ratio
|
|
944
|
+
:type G: float
|
|
945
|
+
|
|
946
|
+
A subclass of the DHLink class for a prismatic joint that holds all
|
|
947
|
+
information related to a robot link such as kinematics parameters,
|
|
948
|
+
rigid-body inertial parameters, motor and transmission parameters.
|
|
949
|
+
|
|
950
|
+
The link transform is
|
|
951
|
+
|
|
952
|
+
:math:`\mathbf{T}_{tx}(a_{i-1}) \cdot \mathbf{T}_{rx}(\alpha_{i-1}) \cdot \mathbf{T}_{rz}(\theta_i) \cdot \underbrace{\mathbf{T}_{tz}(q_i)}_{\mbox{variable}}`
|
|
953
|
+
|
|
954
|
+
where :math:`q_i` is the joint variable.
|
|
955
|
+
|
|
956
|
+
:references:
|
|
957
|
+
- Robotics, Vision & Control in Python, 3e, P. Corke, Springer 2023, Chap 7.
|
|
958
|
+
|
|
959
|
+
:seealso: :func:`RevoluteMDH`, :func:`DHLink`, :func:`PrismaticDH`
|
|
960
|
+
""" # noqa
|
|
961
|
+
|
|
962
|
+
def __init__(
|
|
963
|
+
self, theta=0.0, a=0.0, alpha=0.0, offset=0.0, qlim=None, flip=False, **kwargs
|
|
964
|
+
):
|
|
965
|
+
|
|
966
|
+
d = 0.0
|
|
967
|
+
sigma = 1
|
|
968
|
+
mdh = True
|
|
969
|
+
|
|
970
|
+
super().__init__(
|
|
971
|
+
theta=theta,
|
|
972
|
+
d=d,
|
|
973
|
+
a=a,
|
|
974
|
+
alpha=alpha,
|
|
975
|
+
sigma=sigma,
|
|
976
|
+
mdh=mdh,
|
|
977
|
+
offset=offset,
|
|
978
|
+
qlim=qlim,
|
|
979
|
+
flip=flip,
|
|
980
|
+
**kwargs,
|
|
981
|
+
)
|