roboticstoolbox-python 1.3.0__cp313-cp313-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.cp313-win_amd64.pyd +0 -0
- roboticstoolbox/frne.cp313-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,187 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
import sys
|
|
3
|
+
import importlib
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def _candidate_rtbdata_roots():
|
|
7
|
+
"""
|
|
8
|
+
Yield candidate roots where the ``rtbdata`` tree may exist.
|
|
9
|
+
"""
|
|
10
|
+
roots = []
|
|
11
|
+
|
|
12
|
+
# Primary source: installed/importable rtbdata package.
|
|
13
|
+
rtbdata = importlib.import_module("rtbdata")
|
|
14
|
+
roots.append(Path(rtbdata.__path__[0]))
|
|
15
|
+
|
|
16
|
+
# Dev fallback: local sibling checkout at <repo>/rtb-data/rtbdata.
|
|
17
|
+
repo_root = Path(__file__).resolve().parents[3]
|
|
18
|
+
local_rtbdata = repo_root / "rtb-data" / "rtbdata"
|
|
19
|
+
if local_rtbdata.exists():
|
|
20
|
+
roots.append(local_rtbdata)
|
|
21
|
+
|
|
22
|
+
# Preserve order while removing duplicates.
|
|
23
|
+
seen = set()
|
|
24
|
+
for root in roots:
|
|
25
|
+
root = root.resolve()
|
|
26
|
+
if root not in seen:
|
|
27
|
+
seen.add(root)
|
|
28
|
+
yield root
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def rtb_load_matfile(filename):
|
|
32
|
+
"""
|
|
33
|
+
Load toolbox mat format data file
|
|
34
|
+
|
|
35
|
+
:param filename: relative pathname of datafile
|
|
36
|
+
:type filename: str
|
|
37
|
+
:raises ValueError: File does not exist
|
|
38
|
+
:return: contents of mat data file
|
|
39
|
+
:rtype: dict
|
|
40
|
+
|
|
41
|
+
Reads a MATLAB format *mat* file which can contain multiple variables, in
|
|
42
|
+
a binary or ASCII format. Returns a dict where the keys are the variable
|
|
43
|
+
names and the values are NumPy arrays.
|
|
44
|
+
|
|
45
|
+
.. note::
|
|
46
|
+
- Uses SciPy ``io.loadmat`` to do the work.
|
|
47
|
+
- If the filename has no path component, eg. ``map1.mat`, it will be
|
|
48
|
+
first be looked for in the folder ``roboticstoolbox/data``.
|
|
49
|
+
- MATLAB structs are converted to Python dicts, but extended so that
|
|
50
|
+
elements can be accessed using dot notation.
|
|
51
|
+
|
|
52
|
+
:seealso: :func:`path_to_datafile`
|
|
53
|
+
"""
|
|
54
|
+
from scipy.io import loadmat
|
|
55
|
+
from scipy.io.matlab.mio5_params import mat_struct
|
|
56
|
+
from collections import namedtuple
|
|
57
|
+
|
|
58
|
+
# get results as a dict
|
|
59
|
+
data = rtb_load_data(filename, loadmat, squeeze_me=True, struct_as_record=False)
|
|
60
|
+
|
|
61
|
+
# if elements are a scipy.io.matlab.mio5_params.mat_struct, that is, they
|
|
62
|
+
# were a MATLAB struct, convert them to a namedtuple
|
|
63
|
+
for key, value in data.items():
|
|
64
|
+
if isinstance(value, mat_struct):
|
|
65
|
+
# extend dict with a dot access method
|
|
66
|
+
class dictx(dict):
|
|
67
|
+
def __getattr__(self, key):
|
|
68
|
+
try:
|
|
69
|
+
return self[key]
|
|
70
|
+
except KeyError as k:
|
|
71
|
+
raise AttributeError(k)
|
|
72
|
+
|
|
73
|
+
d = dictx()
|
|
74
|
+
for v in value._fieldnames:
|
|
75
|
+
d[v] = getattr(value, v)
|
|
76
|
+
data[key] = d
|
|
77
|
+
|
|
78
|
+
return data
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def rtb_load_jsonfile(filename):
|
|
82
|
+
"""
|
|
83
|
+
Load toolbox JSON format data file
|
|
84
|
+
|
|
85
|
+
:param filename: relative pathname of datafile
|
|
86
|
+
:type filename: str
|
|
87
|
+
:raises ValueError: File does not exist
|
|
88
|
+
:return: contents of JSON data file
|
|
89
|
+
:rtype: dict
|
|
90
|
+
|
|
91
|
+
Reads a JSON format file which can contain multiple variables and return
|
|
92
|
+
a dict where the keys are the variable
|
|
93
|
+
names and the values are NumPy arrays.
|
|
94
|
+
|
|
95
|
+
.. note::
|
|
96
|
+
- If the filename has no path component, eg. ``map1.mat`, it will be
|
|
97
|
+
first be looked for in the folder ``roboticstoolbox/data``.
|
|
98
|
+
|
|
99
|
+
:seealso: :func:`path_to_datafile`
|
|
100
|
+
"""
|
|
101
|
+
import json
|
|
102
|
+
|
|
103
|
+
return rtb_load_data(filename, lambda f: json.load(open(f, "r")))
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def rtb_load_data(filename, handler, **kwargs):
|
|
107
|
+
"""
|
|
108
|
+
Load toolbox data file
|
|
109
|
+
|
|
110
|
+
:param filename: relative pathname of datafile
|
|
111
|
+
:type filename: str
|
|
112
|
+
:param handler: function to read data
|
|
113
|
+
:type handler: callable
|
|
114
|
+
:raises ValueError: File does not exist
|
|
115
|
+
:return: data object
|
|
116
|
+
|
|
117
|
+
Resolves the relative pathname to an absolute name and then invokes the
|
|
118
|
+
data reading function::
|
|
119
|
+
|
|
120
|
+
handler(abs_file_name, **kwargs)
|
|
121
|
+
|
|
122
|
+
For example::
|
|
123
|
+
|
|
124
|
+
data = rtb_load_data('data/queensland.json', lambda f: json.load(open(f, 'r')))
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
.. note:: If the filename has no path component, eg. ``foo.dat``, it will
|
|
128
|
+
first be looked for in the folder ``roboticstoolbox/data``.
|
|
129
|
+
|
|
130
|
+
:seealso: :func:`path_to_datafile`
|
|
131
|
+
"""
|
|
132
|
+
path = rtb_path_to_datafile(filename, local=False)
|
|
133
|
+
return handler(path, **kwargs)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def rtb_path_to_datafile(*filename, local=True):
|
|
137
|
+
"""
|
|
138
|
+
Get absolute path to datafile
|
|
139
|
+
|
|
140
|
+
:param filename: pathname of datafile
|
|
141
|
+
:type filename: str
|
|
142
|
+
:param local: search for file locally first, default True
|
|
143
|
+
:type local: bool
|
|
144
|
+
:raises FileNotFoundError: File does not exist
|
|
145
|
+
:return: Absolute path
|
|
146
|
+
:rtype: Path
|
|
147
|
+
|
|
148
|
+
The positional arguments are joined, like ``os.path.join``.
|
|
149
|
+
|
|
150
|
+
If ``local`` is True then ``~`` is expanded and if the file exists, the
|
|
151
|
+
path is made absolute, and symlinks resolved.
|
|
152
|
+
|
|
153
|
+
Otherwise, the file is sought within the ``rtbdata`` package and if found,
|
|
154
|
+
return that absolute path.
|
|
155
|
+
|
|
156
|
+
Example::
|
|
157
|
+
|
|
158
|
+
loadmat('data/map1.mat') # read rtbdata/data/map1.mat
|
|
159
|
+
loadmat('foo.dat') # read ./foo.dat
|
|
160
|
+
loadmat('~/foo.dat') # read $HOME/foo.dat
|
|
161
|
+
"""
|
|
162
|
+
|
|
163
|
+
filename = Path(*filename)
|
|
164
|
+
|
|
165
|
+
if local:
|
|
166
|
+
# check if file is in user's local filesystem
|
|
167
|
+
|
|
168
|
+
p = filename.expanduser()
|
|
169
|
+
p = p.resolve()
|
|
170
|
+
if p.exists():
|
|
171
|
+
return p
|
|
172
|
+
|
|
173
|
+
# otherwise, look for it in rtbdata locations
|
|
174
|
+
for root in _candidate_rtbdata_roots():
|
|
175
|
+
path = root / filename
|
|
176
|
+
if path.exists():
|
|
177
|
+
return path.resolve()
|
|
178
|
+
|
|
179
|
+
raise ValueError(f"file {filename} not found locally or in rtbdata")
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
if __name__ == "__main__":
|
|
183
|
+
house = rtb_load_matfile("data/house.mat")
|
|
184
|
+
a = rtb_loadmat("map1.mat")
|
|
185
|
+
print(a)
|
|
186
|
+
a = rtb_loadmat("data/map1.mat")
|
|
187
|
+
print(a)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from scipy.linalg import lu
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# def jsingu(J):
|
|
6
|
+
|
|
7
|
+
# # convert to row-echelon form
|
|
8
|
+
# P, L, U = lu(J)
|
|
9
|
+
# U = np.where(abs(U) < 100 * np.finfo(np.float64).eps, False, True)
|
|
10
|
+
|
|
11
|
+
# for j in range(J.shape[0]):
|
|
12
|
+
# if not U[j, j]:
|
|
13
|
+
# print(
|
|
14
|
+
# f'joint {j} is dependent on joint ' +
|
|
15
|
+
# ', '.join(
|
|
16
|
+
# [str(i) for i in range(j) if all(U[:, j] == U[:, i])]))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def jsingu(J):
|
|
20
|
+
|
|
21
|
+
indep_columns = np.empty((J.shape[0], 0))
|
|
22
|
+
rank = 0
|
|
23
|
+
for j in range(J.shape[1]):
|
|
24
|
+
temp = np.column_stack((indep_columns, J[:, j]))
|
|
25
|
+
temp_rank = np.linalg.matrix_rank(temp)
|
|
26
|
+
if temp_rank > rank:
|
|
27
|
+
# this column is independent
|
|
28
|
+
rank = temp_rank
|
|
29
|
+
indep_columns = temp
|
|
30
|
+
|
|
31
|
+
else:
|
|
32
|
+
s = f"column {j} ="
|
|
33
|
+
c = np.linalg.pinv(indep_columns) @ J[:, j]
|
|
34
|
+
for i, ci in enumerate(c):
|
|
35
|
+
if abs(ci) > 10 * np.finfo(np.float64).eps:
|
|
36
|
+
if ci < 0:
|
|
37
|
+
s += " - "
|
|
38
|
+
elif i > 0:
|
|
39
|
+
s += " + "
|
|
40
|
+
s += f"{abs(ci):.3g} column_{i}"
|
|
41
|
+
print(s)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
if __name__ == "__main__": # pragma nocover
|
|
45
|
+
import roboticstoolbox as rtb
|
|
46
|
+
|
|
47
|
+
# robot = rtb.models.DH.Puma560()
|
|
48
|
+
robot = rtb.models.URDF.UR5()
|
|
49
|
+
J = robot.jacob0(robot.qr)
|
|
50
|
+
|
|
51
|
+
jsingu(J)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""
|
|
3
|
+
@author Jesse Haviland
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import numpy as np
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def null(A, atol=1e-13, rtol=0):
|
|
10
|
+
"""
|
|
11
|
+
Compute an approximate basis for the nullspace of A.
|
|
12
|
+
|
|
13
|
+
The algorithm used by this function is based on the singular value
|
|
14
|
+
decomposition of A.
|
|
15
|
+
|
|
16
|
+
:param A: A should be at most 2D. A 1-D array with length k will be
|
|
17
|
+
treated as a 2D with shape (1, k)
|
|
18
|
+
:type A: ndarray
|
|
19
|
+
:param atol: The absolute tolerance for a zero singular value. Singular
|
|
20
|
+
values smaller than `atol` are considered to be zero.
|
|
21
|
+
:type atol: float
|
|
22
|
+
:param rtol: The relative tolerance. Singular values less than rtol*smax
|
|
23
|
+
are considered to be zero, where smax is the largest singular value.
|
|
24
|
+
:type rtol: float
|
|
25
|
+
|
|
26
|
+
:notes:
|
|
27
|
+
- If both `atol` and `rtol` are positive, the combined tolerance is
|
|
28
|
+
the maximum of the two; that is:
|
|
29
|
+
tol = max(atol, rtol * smax)
|
|
30
|
+
- Singular values smaller than `tol` are considered to be zero.
|
|
31
|
+
|
|
32
|
+
Return value
|
|
33
|
+
------------
|
|
34
|
+
:return ns: If A is an array with shape (m, k), then ns will be an array
|
|
35
|
+
with shape (k, n), where n is the estimated dimension of the
|
|
36
|
+
nullspace of A. The columns of ns are a basis for the
|
|
37
|
+
nullspace; each element in numpy.dot(A, ns) will be approximately
|
|
38
|
+
zero.
|
|
39
|
+
:rtype ns: ndarray
|
|
40
|
+
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
A = np.atleast_2d(A)
|
|
44
|
+
u, s, vh = np.linalg.svd(A)
|
|
45
|
+
tol = max(atol, rtol * s[0])
|
|
46
|
+
nnz = (s >= tol).sum()
|
|
47
|
+
ns = vh[nnz:].conj().T
|
|
48
|
+
return ns
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from spatialmath import base
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def jacobian_numerical(f, x, dx=1e-8, N=0):
|
|
6
|
+
r"""
|
|
7
|
+
Numerically compute Jacobian of function
|
|
8
|
+
|
|
9
|
+
:param f: the function, returns an m-vector
|
|
10
|
+
:type f: callable
|
|
11
|
+
:param x: function argument
|
|
12
|
+
:type x: ndarray(n)
|
|
13
|
+
:param dx: the numerical perturbation, defaults to 1e-8
|
|
14
|
+
:type dx: float, optional
|
|
15
|
+
:param N: function returns SE(N) matrix, defaults to 0
|
|
16
|
+
:type N: int, optional
|
|
17
|
+
:return: Jacobian matrix
|
|
18
|
+
:rtype: ndarray(m,n)
|
|
19
|
+
|
|
20
|
+
Computes a numerical approximation to the Jacobian for ``f(x)`` where
|
|
21
|
+
:math:`f: \mathbb{R}^n \mapsto \mathbb{R}^m`.
|
|
22
|
+
|
|
23
|
+
Uses first-order difference :math:`J[:,i] = (f(x + dx) - f(x)) / dx`.
|
|
24
|
+
|
|
25
|
+
If ``N`` is 2 or 3, then it is assumed that the function returns
|
|
26
|
+
an SE(N) matrix which is converted into a Jacobian column comprising the
|
|
27
|
+
translational Jacobian followed by the rotational Jacobian.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
Jcol = []
|
|
31
|
+
J0 = f(x)
|
|
32
|
+
I = np.eye(len(x))
|
|
33
|
+
f0 = f(x)
|
|
34
|
+
for i in range(len(x)):
|
|
35
|
+
fi = f(x + I[:, i] * dx)
|
|
36
|
+
Ji = (fi - f0) / dx
|
|
37
|
+
|
|
38
|
+
if N > 0:
|
|
39
|
+
t = Ji[:N, N]
|
|
40
|
+
r = base.vex(Ji[:N, :N] @ J0[:N, :N].T)
|
|
41
|
+
Ji = np.r_[t, r]
|
|
42
|
+
|
|
43
|
+
Jcol.append(Ji)
|
|
44
|
+
|
|
45
|
+
return np.c_[Jcol].T
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def hessian_numerical(J, x, dx=1e-8):
|
|
49
|
+
r"""
|
|
50
|
+
Numerically compute Hessian of Jacobian function
|
|
51
|
+
|
|
52
|
+
:param J: the Jacobian function, returns an ndarray(m,n)
|
|
53
|
+
:type J: callable
|
|
54
|
+
:param x: function argument
|
|
55
|
+
:type x: ndarray(n)
|
|
56
|
+
:param dx: the numerical perturbation, defaults to 1e-8
|
|
57
|
+
:type dx: float, optional
|
|
58
|
+
:return: Hessian matrix
|
|
59
|
+
:rtype: ndarray(m,n,n)
|
|
60
|
+
|
|
61
|
+
Computes a numerical approximation to the Hessian for ``J(x)`` where
|
|
62
|
+
:math:`f: \mathbb{R}^n \mapsto \mathbb{R}^{m \times n}`
|
|
63
|
+
|
|
64
|
+
Uses first-order difference :math:`H[:,:,i] = (J(x + dx) - J(x)) / dx`.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
I = np.eye(len(x))
|
|
68
|
+
Hcol = []
|
|
69
|
+
J0 = J(x)
|
|
70
|
+
for i in range(len(x)):
|
|
71
|
+
Ji = J(x + I[:, i] * dx)
|
|
72
|
+
Hi = (Ji - J0) / dx
|
|
73
|
+
|
|
74
|
+
Hcol.append(Hi)
|
|
75
|
+
|
|
76
|
+
return np.stack(Hcol, axis=2)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
if __name__ == "__main__":
|
|
80
|
+
import roboticstoolbox as rtb
|
|
81
|
+
|
|
82
|
+
np.set_printoptions(
|
|
83
|
+
linewidth=120,
|
|
84
|
+
formatter={"float": lambda x: f"{x:8.4g}" if abs(x) > 1e-10 else f"{0:8.4g}"},
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
robot = rtb.models.DH.Puma560()
|
|
88
|
+
q = robot.qn
|
|
89
|
+
|
|
90
|
+
J = jacobian_numerical(lambda q: robot.fkine(q).A, q, N=3)
|
|
91
|
+
print(J)
|
|
92
|
+
print(robot.jacob0(q))
|
|
93
|
+
|
|
94
|
+
H = hessian_numerical(robot.jacob0, q)
|
|
95
|
+
print(H)
|
|
96
|
+
print(robot.ets().hessian0(q))
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
import numpy as np
|
|
4
|
+
from spatialmath import SE3, base
|
|
5
|
+
import math
|
|
6
|
+
from typing import Union
|
|
7
|
+
from roboticstoolbox.fknm import Angle_Axis
|
|
8
|
+
from roboticstoolbox.tools.types import NDArray, ArrayLike
|
|
9
|
+
|
|
10
|
+
# ArrayLike = Union[list, np.ndarray, tuple, set]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def angle_axis(T, Td) -> NDArray:
|
|
14
|
+
|
|
15
|
+
try:
|
|
16
|
+
e: NDArray = Angle_Axis(T, Td)
|
|
17
|
+
except BaseException:
|
|
18
|
+
e = angle_axis_python(T, Td)
|
|
19
|
+
|
|
20
|
+
return e
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def angle_axis_python(T, Td):
|
|
24
|
+
e = np.empty(6)
|
|
25
|
+
e[:3] = Td[:3, -1] - T[:3, -1]
|
|
26
|
+
R = Td[:3, :3] @ T[:3, :3].T
|
|
27
|
+
li = np.array([R[2, 1] - R[1, 2], R[0, 2] - R[2, 0], R[1, 0] - R[0, 1]])
|
|
28
|
+
|
|
29
|
+
if base.iszerovec(li):
|
|
30
|
+
# diagonal matrix case
|
|
31
|
+
if np.trace(R) > 0:
|
|
32
|
+
# (1,1,1) case
|
|
33
|
+
a = np.zeros((3,))
|
|
34
|
+
else:
|
|
35
|
+
a = np.pi / 2 * (np.diag(R) + 1)
|
|
36
|
+
else:
|
|
37
|
+
# non-diagonal matrix case
|
|
38
|
+
ln = base.norm(li)
|
|
39
|
+
a = math.atan2(ln, np.trace(R) - 1) * li / ln
|
|
40
|
+
|
|
41
|
+
e[3:] = a
|
|
42
|
+
|
|
43
|
+
return e
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def p_servo(
|
|
47
|
+
wTe, wTep, gain: Union[float, ArrayLike] = 1.0, threshold=0.1, method="rpy"
|
|
48
|
+
):
|
|
49
|
+
"""
|
|
50
|
+
Position-based servoing.
|
|
51
|
+
|
|
52
|
+
Returns the end-effector velocity which will cause the robot to approach
|
|
53
|
+
the desired pose.
|
|
54
|
+
|
|
55
|
+
:param wTe: The current pose of the end-effecor in the base frame.
|
|
56
|
+
:type wTe: SE3 or ndarray
|
|
57
|
+
:param wTep: The desired pose of the end-effecor in the base frame.
|
|
58
|
+
:type wTep: SE3 or ndarray
|
|
59
|
+
:param gain: The gain for the controller. Can be vector corresponding to each
|
|
60
|
+
axis, or scalar corresponding to all axes.
|
|
61
|
+
:type gain: float, or array-like
|
|
62
|
+
:param threshold: The threshold or tolerance of the final error between
|
|
63
|
+
the robot's pose and desired pose
|
|
64
|
+
:type threshold: float
|
|
65
|
+
:param method: The method used to calculate the error. Default is 'rpy' -
|
|
66
|
+
error in the end-effector frame. 'angle-axis' - error in the base frame
|
|
67
|
+
using angle-axis method.
|
|
68
|
+
:type method: string: 'rpy' or 'angle-axis'
|
|
69
|
+
|
|
70
|
+
:returns v: The velocity of the end-effecotr which will casue the robot
|
|
71
|
+
to approach wTep
|
|
72
|
+
:rtype v: ndarray(6)
|
|
73
|
+
:returns arrived: True if the robot is within the threshold of the final
|
|
74
|
+
pose
|
|
75
|
+
:rtype arrived: bool
|
|
76
|
+
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
if isinstance(wTe, SE3):
|
|
80
|
+
wTe = wTe.A
|
|
81
|
+
|
|
82
|
+
if isinstance(wTep, SE3):
|
|
83
|
+
wTep = wTep.A
|
|
84
|
+
|
|
85
|
+
if method == "rpy":
|
|
86
|
+
# Pose difference
|
|
87
|
+
eTep = np.linalg.inv(wTe) @ wTep
|
|
88
|
+
e = np.empty(6)
|
|
89
|
+
|
|
90
|
+
# Translational error
|
|
91
|
+
e[:3] = eTep[:3, -1]
|
|
92
|
+
|
|
93
|
+
# Angular error
|
|
94
|
+
e[3:] = base.tr2rpy(eTep, unit="rad", order="zyx", check=False)
|
|
95
|
+
else:
|
|
96
|
+
e = angle_axis(wTe, wTep)
|
|
97
|
+
|
|
98
|
+
if base.isscalar(gain):
|
|
99
|
+
k = gain * np.eye(6)
|
|
100
|
+
else:
|
|
101
|
+
k = np.diag(gain)
|
|
102
|
+
|
|
103
|
+
v = k @ e
|
|
104
|
+
arrived = True if np.sum(np.abs(e)) < threshold else False
|
|
105
|
+
|
|
106
|
+
return v, arrived
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
import matplotlib.pyplot as plt
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def xplot(
|
|
6
|
+
x,
|
|
7
|
+
y=None,
|
|
8
|
+
wrist=False,
|
|
9
|
+
unwrap=False,
|
|
10
|
+
block=False,
|
|
11
|
+
labels=None,
|
|
12
|
+
loc=None,
|
|
13
|
+
grid=True,
|
|
14
|
+
stack=False,
|
|
15
|
+
**kwargs,
|
|
16
|
+
):
|
|
17
|
+
r"""
|
|
18
|
+
Plot trajectory data
|
|
19
|
+
|
|
20
|
+
:param x: trajectory, one row per timestep
|
|
21
|
+
:type x: ndarray(m,n)
|
|
22
|
+
:param t: time vector, optional
|
|
23
|
+
:type t: numpy ndarray, shape=(M,)
|
|
24
|
+
:param wrist: distinguish arm and wrist joints with line styles
|
|
25
|
+
:type wrist: bool
|
|
26
|
+
:param unwrap: unwrap joint angles so that they smoothly increase or
|
|
27
|
+
decrease when they pass through :math:`\pm \pi`
|
|
28
|
+
:type unwrap: bool
|
|
29
|
+
:param block: block until the plot is closed
|
|
30
|
+
:type block: bool
|
|
31
|
+
:param labels: legend labels
|
|
32
|
+
:type labels: list of str, or single string with space separated labels
|
|
33
|
+
:param kwargs: options passed to pyplot.plot
|
|
34
|
+
:param loc: legend location as per pyplot.legend
|
|
35
|
+
:type loc: str
|
|
36
|
+
|
|
37
|
+
This is a convenience function to plot trajectories, where each row represents one time step.
|
|
38
|
+
|
|
39
|
+
- ``xplot(q)`` plots the joint angles versus row number. If N==6 a
|
|
40
|
+
conventional 6-axis robot is assumed, and the first three joints are
|
|
41
|
+
shown as solid lines, the last three joints (wrist) are shown as dashed
|
|
42
|
+
lines. A legend is also displayed.
|
|
43
|
+
|
|
44
|
+
- ``xplot(t, q)`` as above but displays the joint angle trajectory versus
|
|
45
|
+
time given the time vector T (Mx1).
|
|
46
|
+
|
|
47
|
+
Example::
|
|
48
|
+
|
|
49
|
+
>>> qplot(q, x, labels='x y z')
|
|
50
|
+
|
|
51
|
+
:seealso: :func:`jtraj`, :func:`numpy.unwrap`
|
|
52
|
+
"""
|
|
53
|
+
if y is None:
|
|
54
|
+
q = x
|
|
55
|
+
t = np.arange(0, q.shape[0])
|
|
56
|
+
else:
|
|
57
|
+
t = x
|
|
58
|
+
q = y
|
|
59
|
+
|
|
60
|
+
if q.ndim == 1:
|
|
61
|
+
# if 1D, make it Nx1
|
|
62
|
+
q = q[:, np.newaxis]
|
|
63
|
+
|
|
64
|
+
if t.ndim != 1 or q.shape[0] != t.shape[0]:
|
|
65
|
+
raise ValueError("dimensions of arguments are not consistent")
|
|
66
|
+
|
|
67
|
+
if unwrap:
|
|
68
|
+
q = np.unwrap(q, axis=0)
|
|
69
|
+
|
|
70
|
+
n = q.shape[1]
|
|
71
|
+
|
|
72
|
+
if labels is None:
|
|
73
|
+
labels = [f"q{i}" for i in range(n)]
|
|
74
|
+
elif isinstance(labels, str):
|
|
75
|
+
labels = labels.split(" ")
|
|
76
|
+
elif not isinstance(labels, (tuple, list)):
|
|
77
|
+
raise TypeError("wrong type for labels")
|
|
78
|
+
|
|
79
|
+
fig, ax = plt.subplots()
|
|
80
|
+
|
|
81
|
+
if stack:
|
|
82
|
+
for i in range(n):
|
|
83
|
+
ax = plt.subplot(n, 1, i + 1)
|
|
84
|
+
|
|
85
|
+
plt.plot(t, q[:, i], **kwargs)
|
|
86
|
+
|
|
87
|
+
plt.grid(grid)
|
|
88
|
+
ax.set_ylabel(labels[i])
|
|
89
|
+
ax.set_xlim(t[0], t[-1])
|
|
90
|
+
|
|
91
|
+
ax.set_xlabel("Time (s)")
|
|
92
|
+
|
|
93
|
+
else:
|
|
94
|
+
if n == 6 and wrist:
|
|
95
|
+
plt.plot(t, q[:, 0:3], **kwargs)
|
|
96
|
+
plt.plot(t, q[:, 3:6], "--", **kwargs)
|
|
97
|
+
else:
|
|
98
|
+
plt.plot(t, q, **kwargs)
|
|
99
|
+
|
|
100
|
+
ax.legend(labels, loc=loc)
|
|
101
|
+
|
|
102
|
+
plt.grid(grid)
|
|
103
|
+
ax.set_xlabel("Time (s)")
|
|
104
|
+
ax.set_ylabel("Joint coordinates (rad,m)")
|
|
105
|
+
# ax.set_xlim(t[0], t[-1]) fails with RVC3 Sec 3.3.3
|
|
106
|
+
|
|
107
|
+
plt.show(block=block)
|
|
108
|
+
|
|
109
|
+
return fig.get_axes()
|