roboticstoolbox-python 1.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- roboticstoolbox/__init__.py +107 -0
- roboticstoolbox/backends/Connector.py +113 -0
- roboticstoolbox/backends/Dynamixel/README.md +9 -0
- roboticstoolbox/backends/Dynamixel/dynamixel.json +581 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_io.py +450 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/LICENSE +201 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/README.md +28 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/ReleaseNote.md +181 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/__init__.py +27 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_bulk_read.py +163 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_bulk_write.py +109 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_sync_read.py +166 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_sync_write.py +99 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/packet_handler.py +33 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/port_handler.py +155 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/protocol1_packet_handler.py +548 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/protocol2_packet_handler.py +1080 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/robotis_def.py +75 -0
- roboticstoolbox/backends/Dynamixel/dyndata.py +121 -0
- roboticstoolbox/backends/PyPlot/EllipsePlot.py +256 -0
- roboticstoolbox/backends/PyPlot/PyPlot.py +778 -0
- roboticstoolbox/backends/PyPlot/PyPlot2.py +537 -0
- roboticstoolbox/backends/PyPlot/README.md +67 -0
- roboticstoolbox/backends/PyPlot/RobotPlot.py +247 -0
- roboticstoolbox/backends/PyPlot/RobotPlot2.py +123 -0
- roboticstoolbox/backends/PyPlot/__init__.py +4 -0
- roboticstoolbox/backends/ROS/ROS.py +129 -0
- roboticstoolbox/backends/ROS/__init__.py +3 -0
- roboticstoolbox/backends/__init__.py +39 -0
- roboticstoolbox/backends/swift/__init__.py +165 -0
- roboticstoolbox/bin/__init__.py +0 -0
- roboticstoolbox/bin/_bintools.py +61 -0
- roboticstoolbox/bin/rtbtool.py +404 -0
- roboticstoolbox/blocks/Icons/250x250/armplot.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/bicycle.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/camera.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/circlepath.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/coriolis.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/ctraj.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/delta2tr.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/diffsteer.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/fdyn.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/fdynx.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/fkine.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/gravload.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/idyn.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/idynx.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/ikine.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/inertia.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/jacobian.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/jtraj.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/lspb.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/multirotor.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/multirotormixer.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/multirotorplot.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/point2tr.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/tr2delta.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/tr2t.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/unicycle.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/vehicleplot.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/armplot.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/bicycle.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/camera.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/circlepath.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/coriolis.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/delta2tr.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/diffsteer.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/fdyn.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/fdynx.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/fkine.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/gravload.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/idyn.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/idynx.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/ikine.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/inertia.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/jacobian.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/jtraj.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/lspb.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/multirotor.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/multirotormixer.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/multirotorplot.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/point2tr.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/tr2delta.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/tr2t.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/unicycle.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/vehicleplot.png +0 -0
- roboticstoolbox/blocks/Icons/armplot.png +0 -0
- roboticstoolbox/blocks/Icons/bicycle.png +0 -0
- roboticstoolbox/blocks/Icons/camera.png +0 -0
- roboticstoolbox/blocks/Icons/circlepath.png +0 -0
- roboticstoolbox/blocks/Icons/coriolis.png +0 -0
- roboticstoolbox/blocks/Icons/ctraj.png +0 -0
- roboticstoolbox/blocks/Icons/delta2tr.png +0 -0
- roboticstoolbox/blocks/Icons/diffsteer.png +0 -0
- roboticstoolbox/blocks/Icons/fdyn.png +0 -0
- roboticstoolbox/blocks/Icons/fdynx.png +0 -0
- roboticstoolbox/blocks/Icons/fkine.png +0 -0
- roboticstoolbox/blocks/Icons/gravload.png +0 -0
- roboticstoolbox/blocks/Icons/idyn.png +0 -0
- roboticstoolbox/blocks/Icons/idynx.png +0 -0
- roboticstoolbox/blocks/Icons/ikine.png +0 -0
- roboticstoolbox/blocks/Icons/inertia.png +0 -0
- roboticstoolbox/blocks/Icons/jacobian.png +0 -0
- roboticstoolbox/blocks/Icons/jtraj.png +0 -0
- roboticstoolbox/blocks/Icons/lspb.png +0 -0
- roboticstoolbox/blocks/Icons/multirotor.png +0 -0
- roboticstoolbox/blocks/Icons/multirotormixer.png +0 -0
- roboticstoolbox/blocks/Icons/multirotorplot.png +0 -0
- roboticstoolbox/blocks/Icons/point2tr.png +0 -0
- roboticstoolbox/blocks/Icons/tr2delta.png +0 -0
- roboticstoolbox/blocks/Icons/tr2t.png +0 -0
- roboticstoolbox/blocks/Icons/unicycle.png +0 -0
- roboticstoolbox/blocks/Icons/vehicleplot.png +0 -0
- roboticstoolbox/blocks/README.md +43 -0
- roboticstoolbox/blocks/__init__.py +6 -0
- roboticstoolbox/blocks/arm.py +1591 -0
- roboticstoolbox/blocks/mobile.py +522 -0
- roboticstoolbox/blocks/quad_model.py +132 -0
- roboticstoolbox/blocks/spatial.py +245 -0
- roboticstoolbox/blocks/uav.py +949 -0
- roboticstoolbox/demo/__init__.py +0 -0
- roboticstoolbox/demo/eigdemo.py +112 -0
- roboticstoolbox/demo/tripleangledemo.py +239 -0
- roboticstoolbox/demo/twistdemo.py +175 -0
- roboticstoolbox/ets/ET.py +439 -0
- roboticstoolbox/ets/ET2.py +179 -0
- roboticstoolbox/ets/ETS.py +2013 -0
- roboticstoolbox/ets/ETS2.py +449 -0
- roboticstoolbox/ets/_ET.py +668 -0
- roboticstoolbox/ets/_ETS.py +781 -0
- roboticstoolbox/ets/__init__.py +11 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Cholesky +45 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/CholmodSupport +48 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Core +384 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Dense +7 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Eigen +2 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Eigenvalues +60 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Geometry +59 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Householder +29 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/IterativeLinearSolvers +48 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Jacobi +32 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/KLUSupport +41 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/LU +47 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/MetisSupport +35 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/OrderingMethods +70 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/PaStiXSupport +49 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/PardisoSupport +35 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/QR +50 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/QtAlignedMalloc +39 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SPQRSupport +34 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SVD +50 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/Sparse +34 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SparseCholesky +37 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SparseCore +69 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SparseLU +50 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SparseQR +36 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/StdDeque +27 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/StdList +26 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/StdVector +27 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/SuperLUSupport +64 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/UmfPackSupport +40 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Cholesky/LDLT.h +688 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Cholesky/LLT.h +558 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ArithmeticSequence.h +413 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Array.h +417 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ArrayBase.h +226 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ArrayWrapper.h +209 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Assign.h +90 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/AssignEvaluator.h +1010 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Assign_MKL.h +178 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/BandMatrix.h +353 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Block.h +448 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/BooleanRedux.h +162 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CommaInitializer.h +164 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ConditionEstimator.h +175 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CoreEvaluators.h +1741 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CoreIterators.h +132 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CwiseBinaryOp.h +183 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CwiseTernaryOp.h +197 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CwiseUnaryOp.h +103 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/CwiseUnaryView.h +132 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/DenseBase.h +701 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/DenseCoeffsBase.h +685 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/DenseStorage.h +652 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Diagonal.h +258 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/DiagonalMatrix.h +391 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/DiagonalProduct.h +28 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Dot.h +318 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/EigenBase.h +160 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ForceAlignedAccess.h +150 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Fuzzy.h +155 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/GeneralProduct.h +465 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/GenericPacketMath.h +1040 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/GlobalFunctions.h +194 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/IO.h +258 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/IndexedView.h +237 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Inverse.h +117 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Map.h +171 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/MapBase.h +310 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/MathFunctions.h +2057 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/MathFunctionsImpl.h +200 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Matrix.h +565 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/MatrixBase.h +547 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/NestByValue.h +85 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/NoAlias.h +109 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/NumTraits.h +335 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/PermutationMatrix.h +605 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/PlainObjectBase.h +1128 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Product.h +191 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ProductEvaluators.h +1179 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Random.h +218 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Redux.h +515 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Ref.h +381 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Replicate.h +142 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Reshaped.h +454 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/ReturnByValue.h +119 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Reverse.h +217 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Select.h +164 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/SelfAdjointView.h +365 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Solve.h +188 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/SolveTriangular.h +235 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/SolverBase.h +168 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/StableNorm.h +251 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/StlIterators.h +463 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Stride.h +116 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Swap.h +68 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Transpose.h +464 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Transpositions.h +386 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/TriangularMatrix.h +1001 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/VectorBlock.h +96 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/VectorwiseOp.h +784 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/Visitor.h +381 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX/Complex.h +372 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/Half.h +942 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/Settings.h +49 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/NEON/Complex.h +584 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SSE/Complex.h +351 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/StlFunctors.h +166 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/Parallelizer.h +180 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/BlasUtil.h +583 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/Constants.h +563 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/IntegralConstant.h +272 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/MKL_support.h +137 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/Macros.h +1464 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/Memory.h +1163 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/Meta.h +812 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/NonMPL2.h +3 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/StaticAssert.h +221 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Core/util/XprHelper.h +856 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/RealQZ.h +657 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/RealSchur.h +558 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/AlignedBox.h +486 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/AngleAxis.h +247 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/EulerAngles.h +114 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Homogeneous.h +501 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Hyperplane.h +282 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/OrthoMethods.h +235 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Quaternion.h +870 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Rotation2D.h +199 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/RotationBase.h +206 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Scaling.h +188 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Transform.h +1563 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Translation.h +202 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/Umeyama.h +166 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Householder/BlockHouseholder.h +110 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Householder/Householder.h +176 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Householder/HouseholderSequence.h +545 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/Jacobi/Jacobi.h +483 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/Determinant.h +117 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/FullPivLU.h +877 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/InverseImpl.h +432 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/PartialPivLU.h +624 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/LU/arch/InverseSize4.h +351 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/MetisSupport/MetisSupport.h +137 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/OrderingMethods/Amd.h +435 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/OrderingMethods/Ordering.h +153 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/HouseholderQR.h +434 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SVD/BDCSVD.h +1366 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SVD/JacobiSVD.h +812 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SVD/SVDBase.h +376 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/AmbiVector.h +378 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/CompressedStorage.h +274 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseAssign.h +270 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseBlock.h +571 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseColEtree.h +206 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseDot.h +98 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseMap.h +305 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparsePermutation.h +178 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseProduct.h +181 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseRedux.h +49 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseRef.h +397 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseTranspose.h +92 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseUtil.h +186 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseVector.h +478 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/SparseView.h +254 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseCore/TriangularSolver.h +315 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU.h +923 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SparseQR/SparseQR.h +758 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/StlSupport/StdDeque.h +116 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/StlSupport/StdList.h +106 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/StlSupport/StdVector.h +131 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/StlSupport/details.h +84 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/Image.h +82 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/Kernel.h +79 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/RealSvd2x2.h +55 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/blas.h +440 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/lapack.h +152 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/lapacke.h +16292 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/misc/lapacke_mangling.h +17 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/BlockMethods.h +1442 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
- roboticstoolbox/ets/cpp-extensions/Eigen/src/plugins/ReshapedMethods.h +149 -0
- roboticstoolbox/ets/cpp-extensions/README.md +73 -0
- roboticstoolbox/ets/cpp-extensions/fknm_nb.cpp +534 -0
- roboticstoolbox/ets/cpp-extensions/ik.cpp +301 -0
- roboticstoolbox/ets/cpp-extensions/ik.h +59 -0
- roboticstoolbox/ets/cpp-extensions/linalg.cpp +316 -0
- roboticstoolbox/ets/cpp-extensions/linalg.h +64 -0
- roboticstoolbox/ets/cpp-extensions/methods.cpp +372 -0
- roboticstoolbox/ets/cpp-extensions/methods.h +32 -0
- roboticstoolbox/ets/cpp-extensions/structs.cpp +24 -0
- roboticstoolbox/ets/cpp-extensions/structs.h +62 -0
- roboticstoolbox/ets/fknm.py +366 -0
- roboticstoolbox/mobile/Animations.py +485 -0
- roboticstoolbox/mobile/Bug2.py +455 -0
- roboticstoolbox/mobile/CurvaturePolyPlanner.py +179 -0
- roboticstoolbox/mobile/DistanceTransformPlanner.py +395 -0
- roboticstoolbox/mobile/DstarPlanner.py +591 -0
- roboticstoolbox/mobile/DubinsPlanner.py +474 -0
- roboticstoolbox/mobile/EKF.py +1617 -0
- roboticstoolbox/mobile/LatticePlanner.py +419 -0
- roboticstoolbox/mobile/OccGrid.py +613 -0
- roboticstoolbox/mobile/PRMPlanner.py +348 -0
- roboticstoolbox/mobile/ParticleFilter.py +706 -0
- roboticstoolbox/mobile/PlannerBase.py +1009 -0
- roboticstoolbox/mobile/PoseGraph.py +544 -0
- roboticstoolbox/mobile/QuinticPolyPlanner.py +349 -0
- roboticstoolbox/mobile/RRTPlanner.py +359 -0
- roboticstoolbox/mobile/ReedsSheppPlanner.py +545 -0
- roboticstoolbox/mobile/Vehicle.py +1909 -0
- roboticstoolbox/mobile/__init__.py +194 -0
- roboticstoolbox/mobile/drivers.py +397 -0
- roboticstoolbox/mobile/landmarkmap.py +181 -0
- roboticstoolbox/mobile/sensors.py +789 -0
- roboticstoolbox/models/DH/AL5D.py +121 -0
- roboticstoolbox/models/DH/Ball.py +87 -0
- roboticstoolbox/models/DH/Baxter.py +91 -0
- roboticstoolbox/models/DH/Cobra600.py +63 -0
- roboticstoolbox/models/DH/Coil.py +80 -0
- roboticstoolbox/models/DH/Hyper.py +81 -0
- roboticstoolbox/models/DH/Hyper3d.py +83 -0
- roboticstoolbox/models/DH/IRB140.py +159 -0
- roboticstoolbox/models/DH/Jaco.py +102 -0
- roboticstoolbox/models/DH/KR5.py +112 -0
- roboticstoolbox/models/DH/LWR4.py +80 -0
- roboticstoolbox/models/DH/Mico.py +102 -0
- roboticstoolbox/models/DH/Orion5.py +91 -0
- roboticstoolbox/models/DH/P8.py +80 -0
- roboticstoolbox/models/DH/Panda.py +213 -0
- roboticstoolbox/models/DH/Planar2.py +69 -0
- roboticstoolbox/models/DH/Planar3.py +51 -0
- roboticstoolbox/models/DH/Puma560.py +326 -0
- roboticstoolbox/models/DH/README.md +216 -0
- roboticstoolbox/models/DH/Sawyer.py +85 -0
- roboticstoolbox/models/DH/Stanford.py +147 -0
- roboticstoolbox/models/DH/TwoLink.py +153 -0
- roboticstoolbox/models/DH/UR10.py +124 -0
- roboticstoolbox/models/DH/UR3.py +98 -0
- roboticstoolbox/models/DH/UR5.py +98 -0
- roboticstoolbox/models/DH/Uprighttl.py +24 -0
- roboticstoolbox/models/DH/__init__.py +52 -0
- roboticstoolbox/models/ETS/Frankie.py +90 -0
- roboticstoolbox/models/ETS/GenericSeven.py +54 -0
- roboticstoolbox/models/ETS/Omni.py +74 -0
- roboticstoolbox/models/ETS/Panda.py +69 -0
- roboticstoolbox/models/ETS/Planar2.py +49 -0
- roboticstoolbox/models/ETS/Planar_Y.py +65 -0
- roboticstoolbox/models/ETS/Puma560.py +70 -0
- roboticstoolbox/models/ETS/XYPanda.py +84 -0
- roboticstoolbox/models/ETS/__init__.py +20 -0
- roboticstoolbox/models/README.md +9 -0
- roboticstoolbox/models/URDF/AL5D.py +45 -0
- roboticstoolbox/models/URDF/Fetch.py +96 -0
- roboticstoolbox/models/URDF/Frankie.py +67 -0
- roboticstoolbox/models/URDF/FrankieOmni.py +94 -0
- roboticstoolbox/models/URDF/Jaco.py +49 -0
- roboticstoolbox/models/URDF/KinovaGen3.py +63 -0
- roboticstoolbox/models/URDF/LBR.py +57 -0
- roboticstoolbox/models/URDF/PR2.py +66 -0
- roboticstoolbox/models/URDF/Panda.py +60 -0
- roboticstoolbox/models/URDF/Puma560.py +90 -0
- roboticstoolbox/models/URDF/UR10.py +43 -0
- roboticstoolbox/models/URDF/UR3.py +43 -0
- roboticstoolbox/models/URDF/UR5.py +64 -0
- roboticstoolbox/models/URDF/URDFRobot.py +402 -0
- roboticstoolbox/models/URDF/Valkyrie.py +110 -0
- roboticstoolbox/models/URDF/YuMi.py +107 -0
- roboticstoolbox/models/URDF/__init__.py +51 -0
- roboticstoolbox/models/URDF/px100.py +48 -0
- roboticstoolbox/models/URDF/px150.py +48 -0
- roboticstoolbox/models/URDF/rx150.py +48 -0
- roboticstoolbox/models/URDF/rx200.py +48 -0
- roboticstoolbox/models/URDF/vx300.py +48 -0
- roboticstoolbox/models/URDF/vx300s.py +48 -0
- roboticstoolbox/models/URDF/wx200.py +48 -0
- roboticstoolbox/models/URDF/wx250.py +48 -0
- roboticstoolbox/models/URDF/wx250s.py +48 -0
- roboticstoolbox/models/__init__.py +7 -0
- roboticstoolbox/models/catalog.py +226 -0
- roboticstoolbox/robot/BaseRobot.py +2589 -0
- roboticstoolbox/robot/DHFactor.py +522 -0
- roboticstoolbox/robot/DHLink.py +949 -0
- roboticstoolbox/robot/DHRobot.py +2591 -0
- roboticstoolbox/robot/Dynamics.py +1537 -0
- roboticstoolbox/robot/ELink.py +23 -0
- roboticstoolbox/robot/ERobot.py +25 -0
- roboticstoolbox/robot/Gripper.py +242 -0
- roboticstoolbox/robot/IK.py +1378 -0
- roboticstoolbox/robot/Link.py +1557 -0
- roboticstoolbox/robot/PoERobot.py +352 -0
- roboticstoolbox/robot/Robot.py +2157 -0
- roboticstoolbox/robot/RobotKinematics.py +1505 -0
- roboticstoolbox/robot/RobotPlottingMPL.py +355 -0
- roboticstoolbox/robot/RobotProto.py +156 -0
- roboticstoolbox/robot/__init__.py +57 -0
- roboticstoolbox/robot/cpp-extensions/README.md +29 -0
- roboticstoolbox/robot/cpp-extensions/frne.h +96 -0
- roboticstoolbox/robot/cpp-extensions/frne_nb.cpp +237 -0
- roboticstoolbox/robot/cpp-extensions/ne.c +495 -0
- roboticstoolbox/robot/cpp-extensions/vmath.c +163 -0
- roboticstoolbox/robot/cpp-extensions/vmath.h +32 -0
- roboticstoolbox/robot/frne.py +51 -0
- roboticstoolbox/tools/DHFactor.py +375 -0
- roboticstoolbox/tools/Ticker.py +53 -0
- roboticstoolbox/tools/__init__.py +54 -0
- roboticstoolbox/tools/data.py +187 -0
- roboticstoolbox/tools/jsingu.py +51 -0
- roboticstoolbox/tools/null.py +48 -0
- roboticstoolbox/tools/numerical.py +96 -0
- roboticstoolbox/tools/p_servo.py +108 -0
- roboticstoolbox/tools/params.py +11 -0
- roboticstoolbox/tools/plot.py +109 -0
- roboticstoolbox/tools/trajectory.py +1152 -0
- roboticstoolbox/tools/types.py +13 -0
- roboticstoolbox/tools/urdf/__init__.py +45 -0
- roboticstoolbox/tools/urdf/tests/data/ur5.urdf +341 -0
- roboticstoolbox/tools/urdf/tests/test_urdf.py +116 -0
- roboticstoolbox/tools/urdf/urdf.py +1930 -0
- roboticstoolbox/tools/urdf/utils.py +50 -0
- roboticstoolbox_python-1.4.0.dist-info/METADATA +664 -0
- roboticstoolbox_python-1.4.0.dist-info/RECORD +610 -0
- roboticstoolbox_python-1.4.0.dist-info/WHEEL +5 -0
- roboticstoolbox_python-1.4.0.dist-info/entry_points.txt +6 -0
- roboticstoolbox_python-1.4.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,668 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
@author: Jesse Haviland
|
|
5
|
+
|
|
6
|
+
Shared base for ET (3D) and ET2 (2D) - see roboticstoolbox.ets.ET /
|
|
7
|
+
roboticstoolbox.ets.ET2 for the concrete classes. This module exists
|
|
8
|
+
separately so ET.py and ET2.py can each import BaseET without importing
|
|
9
|
+
each other (BaseET is depended on by both, so it can't depend on either
|
|
10
|
+
without a cycle).
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import re
|
|
14
|
+
import warnings
|
|
15
|
+
from copy import deepcopy
|
|
16
|
+
|
|
17
|
+
from numpy import array, ndarray, deg2rad, eye, pi
|
|
18
|
+
from numpy.linalg import inv as npinv
|
|
19
|
+
from spatialmath.base import getvector, issymbol, tr2rpy, tr2xyt
|
|
20
|
+
from typing import Callable, TYPE_CHECKING
|
|
21
|
+
|
|
22
|
+
from roboticstoolbox.tools.types import ArrayLike, NDArray
|
|
23
|
+
|
|
24
|
+
_AXIS_TO_INT: dict[str, int] = {"Rx": 0, "Ry": 1, "Rz": 2, "tx": 3, "ty": 4, "tz": 5}
|
|
25
|
+
|
|
26
|
+
if TYPE_CHECKING: # pragma: nocover
|
|
27
|
+
import sympy
|
|
28
|
+
|
|
29
|
+
Sym = sympy.core.symbol.Symbol # type: ignore
|
|
30
|
+
else: # pragma: nocover
|
|
31
|
+
Sym = None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _resolve_param(
|
|
35
|
+
param: "float | Sym | None", eta: "float | None"
|
|
36
|
+
) -> "float | Sym | None":
|
|
37
|
+
"""
|
|
38
|
+
Merge the `param` kwarg with the deprecated `eta` kwarg.
|
|
39
|
+
|
|
40
|
+
`eta` (η) is the name used in the original Elementary Transform Sequence
|
|
41
|
+
paper; `param` is its replacement. If `eta` is passed, warn and use it
|
|
42
|
+
as `param` - this keeps every existing `eta=...` call working
|
|
43
|
+
unchanged, since `param` didn't exist before 1.4.0.
|
|
44
|
+
"""
|
|
45
|
+
if eta is not None:
|
|
46
|
+
warnings.warn(
|
|
47
|
+
"the `eta` keyword is deprecated since 1.4.0, use `param` instead",
|
|
48
|
+
DeprecationWarning,
|
|
49
|
+
stacklevel=3,
|
|
50
|
+
)
|
|
51
|
+
return eta
|
|
52
|
+
return param
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _parse_joint_descriptor(s: str) -> "tuple[int | None, bool]":
|
|
56
|
+
"""
|
|
57
|
+
Parse a joint descriptor string into (jindex, flip).
|
|
58
|
+
|
|
59
|
+
A leading '-' sets flip (and is stripped); a leading '+' is stripped and
|
|
60
|
+
ignored. The first run of digits found anywhere in what remains becomes
|
|
61
|
+
the joint index - this treats 'theta2', 'q2', 'q(3)' and 'θ_3' the same
|
|
62
|
+
regardless of how the index is set off from the rest of the name. If no
|
|
63
|
+
digit is found, jindex is None, so the joint falls through to ETS's
|
|
64
|
+
existing auto-numbering for unassigned joints.
|
|
65
|
+
"""
|
|
66
|
+
flip = s.startswith("-")
|
|
67
|
+
if s[:1] in "+-":
|
|
68
|
+
s = s[1:]
|
|
69
|
+
|
|
70
|
+
match = re.search(r"\d+", s)
|
|
71
|
+
jindex = int(match.group()) if match else None
|
|
72
|
+
|
|
73
|
+
return jindex, flip
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class BaseET:
|
|
77
|
+
def __init__(
|
|
78
|
+
self,
|
|
79
|
+
axis: str,
|
|
80
|
+
param: float | Sym | str | None = None,
|
|
81
|
+
axis_func: Callable[[float | Sym], ndarray] | None = None,
|
|
82
|
+
T: ndarray | None = None,
|
|
83
|
+
jindex: int | None = None,
|
|
84
|
+
unit: str = "rad",
|
|
85
|
+
flip: bool | None = None,
|
|
86
|
+
qlim: ArrayLike | None = None,
|
|
87
|
+
*,
|
|
88
|
+
eta: float | None = None,
|
|
89
|
+
):
|
|
90
|
+
param = _resolve_param(param, eta)
|
|
91
|
+
|
|
92
|
+
self._kind = axis
|
|
93
|
+
|
|
94
|
+
# A custom joint display name, e.g. "theta2" from a string `param`
|
|
95
|
+
# descriptor below - printed by __str__ in place of the generic
|
|
96
|
+
# "q2" when set.
|
|
97
|
+
self._joint_name = None
|
|
98
|
+
|
|
99
|
+
# A string `param` that doesn't parse as a plain number is a joint
|
|
100
|
+
# descriptor (e.g. "theta2", "-q(3)", "θ_3"): regex-parsed for
|
|
101
|
+
# jindex/flip and remembered for __str__, then treated as a
|
|
102
|
+
# variable joint (param=None) from here on. `jindex`/`flip` must
|
|
103
|
+
# not also be given explicitly in this case - one form or the
|
|
104
|
+
# other, not a silent merge of both.
|
|
105
|
+
if isinstance(param, str):
|
|
106
|
+
try:
|
|
107
|
+
param = float(param)
|
|
108
|
+
except ValueError:
|
|
109
|
+
if jindex is not None or flip is not None:
|
|
110
|
+
raise ValueError(
|
|
111
|
+
"cannot specify `jindex` or `flip` alongside a string "
|
|
112
|
+
"joint descriptor for `param`"
|
|
113
|
+
)
|
|
114
|
+
jindex, flip = _parse_joint_descriptor(param)
|
|
115
|
+
self._joint_name = param
|
|
116
|
+
param = None
|
|
117
|
+
|
|
118
|
+
flip = bool(flip) # None (not given, and not set above) -> False
|
|
119
|
+
|
|
120
|
+
# A flag to check if the ET is a static joint with a symbolic value
|
|
121
|
+
# Defaults to False as is set to True if param is a symbol below
|
|
122
|
+
self._isstaticsym = False
|
|
123
|
+
|
|
124
|
+
# axis_func/flip/jindex/qlim must all be set before `param` below:
|
|
125
|
+
# the `param` setter (for the static, param-is-not-None case) reads
|
|
126
|
+
# `self.axis_func` to (re)compute `self._T`, and subclasses that add
|
|
127
|
+
# compiled acceleration (see ET._accel_update) need jindex/qlim/flip
|
|
128
|
+
# already in place too.
|
|
129
|
+
self._axis_func = axis_func
|
|
130
|
+
self._flip = flip
|
|
131
|
+
self._jindex = jindex
|
|
132
|
+
|
|
133
|
+
if qlim is not None:
|
|
134
|
+
self._qlim: NDArray | None = getvector(qlim, 2, out="array")
|
|
135
|
+
else:
|
|
136
|
+
self._qlim: NDArray | None = None
|
|
137
|
+
|
|
138
|
+
if param is None:
|
|
139
|
+
self._param = None
|
|
140
|
+
if T is None:
|
|
141
|
+
self._joint = True
|
|
142
|
+
self._T = eye(4).copy(order="F")
|
|
143
|
+
if axis_func is None:
|
|
144
|
+
raise TypeError("For a variable joint, axis_func must be specified")
|
|
145
|
+
else:
|
|
146
|
+
self._joint = False
|
|
147
|
+
self._T = T.copy(order="F")
|
|
148
|
+
else:
|
|
149
|
+
if axis[0] == "R" and unit.lower().startswith("deg"):
|
|
150
|
+
if not issymbol(param):
|
|
151
|
+
param = deg2rad(float(param))
|
|
152
|
+
# This is a static joint. The `param` setter validates axis_func,
|
|
153
|
+
# computes `_T`, sets `_isstaticsym`/`_joint`, and (for ET)
|
|
154
|
+
# syncs the compiled acceleration struct.
|
|
155
|
+
self.param = param
|
|
156
|
+
|
|
157
|
+
def __str__(self):
|
|
158
|
+
param_str = ""
|
|
159
|
+
|
|
160
|
+
if self.isjoint:
|
|
161
|
+
if self._joint_name is not None:
|
|
162
|
+
param_str = self._joint_name
|
|
163
|
+
elif self.jindex is None:
|
|
164
|
+
param_str = "q"
|
|
165
|
+
else:
|
|
166
|
+
param_str = f"q{self.jindex}"
|
|
167
|
+
elif issymbol(self.param):
|
|
168
|
+
# Check if symbolic
|
|
169
|
+
param_str = f"{self.param}"
|
|
170
|
+
elif self.isrotation and self.param is not None:
|
|
171
|
+
param_str = f"{self.param * (180.0 / pi):.4g}°"
|
|
172
|
+
elif not self.iselementary:
|
|
173
|
+
# Compound/arbitrary transform - kind is guaranteed to be
|
|
174
|
+
# exactly "SE3" or "SE2" here (the only "S"-prefixed kinds).
|
|
175
|
+
if self.kind == "SE3":
|
|
176
|
+
T = self.A()
|
|
177
|
+
rpy = tr2rpy(T) * 180.0 / pi
|
|
178
|
+
if T[:3, -1].any() and rpy.any():
|
|
179
|
+
param_str = (
|
|
180
|
+
f"{T[0, -1]:.4g}, {T[1, -1]:.4g}, {T[2, -1]:.4g};"
|
|
181
|
+
f" {rpy[0]:.4g}°, {rpy[1]:.4g}°, {rpy[2]:.4g}°"
|
|
182
|
+
)
|
|
183
|
+
elif T[:3, -1].any():
|
|
184
|
+
param_str = f"{T[0, -1]:.4g}, {T[1, -1]:.4g}, {T[2, -1]:.4g}"
|
|
185
|
+
elif rpy.any():
|
|
186
|
+
param_str = f"{rpy[0]:.4g}°, {rpy[1]:.4g}°, {rpy[2]:.4g}°"
|
|
187
|
+
else:
|
|
188
|
+
param_str = "" # pragma: nocover
|
|
189
|
+
elif self.kind == "SE2":
|
|
190
|
+
T = self.A()
|
|
191
|
+
xyt = tr2xyt(T)
|
|
192
|
+
xyt[2] *= 180 / pi
|
|
193
|
+
param_str = f"{xyt[0]:.4g}, {xyt[1]:.4g}; {xyt[2]:.4g}°"
|
|
194
|
+
|
|
195
|
+
else:
|
|
196
|
+
param_str = f"{self.param:.4g}"
|
|
197
|
+
|
|
198
|
+
return f"{self.kind}({param_str})"
|
|
199
|
+
|
|
200
|
+
def __repr__(self):
|
|
201
|
+
s_param = "" if self.param is None else f"param={self.param}"
|
|
202
|
+
s_T = (
|
|
203
|
+
f"T={repr(self._T)}"
|
|
204
|
+
if (self.param is None and self.axis_func is None)
|
|
205
|
+
else ""
|
|
206
|
+
)
|
|
207
|
+
s_flip = "" if not self.isflip else f"flip={self.isflip}"
|
|
208
|
+
s_qlim = "" if self.qlim is None else f"qlim={repr(self.qlim)}"
|
|
209
|
+
s_jindex = "" if self.jindex is None else f"jindex={self.jindex}"
|
|
210
|
+
|
|
211
|
+
kwargs = [s_param, s_T, s_jindex, s_flip, s_qlim]
|
|
212
|
+
s_kwargs = ", ".join(filter(None, kwargs))
|
|
213
|
+
|
|
214
|
+
# self.__class__.__name__ rather than isinstance(self, ET)/(self, ET2):
|
|
215
|
+
# ET/ET2 can't be imported here without a circular import (they both
|
|
216
|
+
# depend on BaseET), and this is a display label anyway - it's also
|
|
217
|
+
# more correct for any future subclass than a hardcoded "ET"/"ET2".
|
|
218
|
+
start = self.__class__.__name__
|
|
219
|
+
|
|
220
|
+
return f"{start}.{self.kind}({s_kwargs})"
|
|
221
|
+
|
|
222
|
+
def _repr_pretty_(self, p, cycle):
|
|
223
|
+
"""
|
|
224
|
+
Pretty string for IPython
|
|
225
|
+
|
|
226
|
+
:param p: pretty printer handle (ignored)
|
|
227
|
+
:param cycle: pretty printer flag (ignored)
|
|
228
|
+
|
|
229
|
+
Print stringified version when variable is displayed in IPython, ie. on
|
|
230
|
+
a line by itself.
|
|
231
|
+
|
|
232
|
+
Example::
|
|
233
|
+
|
|
234
|
+
[In [1]: e
|
|
235
|
+
Out [1]: tx(1)
|
|
236
|
+
"""
|
|
237
|
+
p.text(str(self)) # pragma: nocover
|
|
238
|
+
|
|
239
|
+
# Attribute names to exclude from the generic __dict__ copy below, e.g.
|
|
240
|
+
# an opaque compiled-acceleration handle that can't be deep-copied and
|
|
241
|
+
# must instead be rebuilt fresh by _accel_init(). Empty for the plain
|
|
242
|
+
# Python ET2; overridden by ET.
|
|
243
|
+
_deepcopy_skip: tuple[str, ...] = ()
|
|
244
|
+
|
|
245
|
+
def __deepcopy__(self, memo):
|
|
246
|
+
cls = self.__class__
|
|
247
|
+
result = cls.__new__(cls)
|
|
248
|
+
memo[id(self)] = result
|
|
249
|
+
|
|
250
|
+
for k, v in self.__dict__.items():
|
|
251
|
+
if k not in self._deepcopy_skip:
|
|
252
|
+
setattr(result, k, deepcopy(v, memo))
|
|
253
|
+
|
|
254
|
+
result._accel_init()
|
|
255
|
+
return result
|
|
256
|
+
|
|
257
|
+
def __eq__(self, other):
|
|
258
|
+
return repr(self) == repr(other)
|
|
259
|
+
|
|
260
|
+
def __radd__(self, other):
|
|
261
|
+
# lets sum() work without an explicit start value, since its
|
|
262
|
+
# default start is the int 0, which has no idea how to compose
|
|
263
|
+
# with an ET/ET2
|
|
264
|
+
if other == 0:
|
|
265
|
+
return self
|
|
266
|
+
return NotImplemented
|
|
267
|
+
|
|
268
|
+
# ------------------------------------------------------------------
|
|
269
|
+
# Compiled-acceleration hooks. BaseET (and so ET2) is pure Python; ET
|
|
270
|
+
# overrides both to build/refresh the compiled C++ struct. Keeping
|
|
271
|
+
# these as no-op hooks here means the param/qlim/jindex setters and
|
|
272
|
+
# inv()/__deepcopy__ below don't need to know or care whether the
|
|
273
|
+
# concrete class has acceleration at all.
|
|
274
|
+
# ------------------------------------------------------------------
|
|
275
|
+
def _accel_init(self) -> None:
|
|
276
|
+
pass
|
|
277
|
+
|
|
278
|
+
def _accel_update(self) -> None:
|
|
279
|
+
pass
|
|
280
|
+
|
|
281
|
+
@property
|
|
282
|
+
def param(self) -> float | Sym | None:
|
|
283
|
+
"""
|
|
284
|
+
Get the transform constant
|
|
285
|
+
|
|
286
|
+
:returns: The constant value if set
|
|
287
|
+
:rtype: float or Sym or None
|
|
288
|
+
|
|
289
|
+
Examples
|
|
290
|
+
--------
|
|
291
|
+
|
|
292
|
+
.. runblock:: pycon
|
|
293
|
+
|
|
294
|
+
>>> from roboticstoolbox import ET
|
|
295
|
+
>>> e = ET.tx(1)
|
|
296
|
+
>>> e.param
|
|
297
|
+
>>> e = ET.Rx(90, 'deg')
|
|
298
|
+
>>> e.param
|
|
299
|
+
>>> e = ET.ty()
|
|
300
|
+
>>> e.param
|
|
301
|
+
|
|
302
|
+
.. rubric:: Notes
|
|
303
|
+
|
|
304
|
+
- If the value was given in degrees it will be converted and
|
|
305
|
+
stored internally in radians
|
|
306
|
+
- Historically called `eta` (η), after the notation used in the
|
|
307
|
+
original Elementary Transform Sequence paper (Haviland & Corke,
|
|
308
|
+
"Manipulator Differential Kinematics"). `eta` is kept as a
|
|
309
|
+
deprecated alias below.
|
|
310
|
+
"""
|
|
311
|
+
return self._param
|
|
312
|
+
|
|
313
|
+
@param.setter
|
|
314
|
+
def param(self, value: float | Sym) -> None:
|
|
315
|
+
"""
|
|
316
|
+
Set the transform constant
|
|
317
|
+
|
|
318
|
+
:param value: The transform constant
|
|
319
|
+
|
|
320
|
+
.. rubric:: Notes
|
|
321
|
+
|
|
322
|
+
- No unit conversions are applied, it is assumed to be in
|
|
323
|
+
radians.
|
|
324
|
+
- Setting `param` always makes the ET a static (non-joint) transform:
|
|
325
|
+
`_T` is recomputed from `axis_func`, and (for ET) the compiled
|
|
326
|
+
acceleration struct is refreshed. This is also what ETS.merge()
|
|
327
|
+
relies on when it combines two adjacent static ETs.
|
|
328
|
+
"""
|
|
329
|
+
if self.axis_func is None:
|
|
330
|
+
raise TypeError(
|
|
331
|
+
"For a static joint either both `param` and `axis_func` "
|
|
332
|
+
"must be specified otherwise `T` must be supplied"
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
self._param = value if issymbol(value) else float(value)
|
|
336
|
+
self._isstaticsym = issymbol(value)
|
|
337
|
+
self._joint = False
|
|
338
|
+
self._T = self.axis_func(self._param).copy(order="F")
|
|
339
|
+
|
|
340
|
+
self._accel_update()
|
|
341
|
+
|
|
342
|
+
@property
|
|
343
|
+
def eta(self) -> float | Sym | None:
|
|
344
|
+
"""
|
|
345
|
+
Get the transform constant
|
|
346
|
+
|
|
347
|
+
.. deprecated:: 1.4.0
|
|
348
|
+
`eta` (η) is the name used in the original Elementary Transform
|
|
349
|
+
Sequence paper; kept as a permanent alias for :attr:`param`,
|
|
350
|
+
which is otherwise identical.
|
|
351
|
+
|
|
352
|
+
:returns: The constant value if set
|
|
353
|
+
:rtype: float or Sym or None
|
|
354
|
+
"""
|
|
355
|
+
warnings.warn(
|
|
356
|
+
"ET.eta is deprecated since 1.4.0, use .param instead",
|
|
357
|
+
DeprecationWarning,
|
|
358
|
+
stacklevel=2,
|
|
359
|
+
)
|
|
360
|
+
return self._param
|
|
361
|
+
|
|
362
|
+
@eta.setter
|
|
363
|
+
def eta(self, value: float | Sym) -> None:
|
|
364
|
+
warnings.warn(
|
|
365
|
+
"ET.eta is deprecated since 1.4.0, use .param instead",
|
|
366
|
+
DeprecationWarning,
|
|
367
|
+
stacklevel=2,
|
|
368
|
+
)
|
|
369
|
+
self.param = value
|
|
370
|
+
|
|
371
|
+
@property
|
|
372
|
+
def axis_func(
|
|
373
|
+
self,
|
|
374
|
+
) -> Callable[[float | Sym], ndarray] | None:
|
|
375
|
+
return self._axis_func
|
|
376
|
+
|
|
377
|
+
@property
|
|
378
|
+
def kind(self) -> str:
|
|
379
|
+
"""
|
|
380
|
+
The transform type and axis
|
|
381
|
+
|
|
382
|
+
:returns: The transform type and axis, e.g. ``"Rx"``, ``"tx"``, ``"SE3"``
|
|
383
|
+
:rtype: str
|
|
384
|
+
|
|
385
|
+
Examples
|
|
386
|
+
--------
|
|
387
|
+
|
|
388
|
+
.. runblock:: pycon
|
|
389
|
+
|
|
390
|
+
>>> from roboticstoolbox import ET
|
|
391
|
+
>>> e = ET.tx(1)
|
|
392
|
+
>>> e.kind
|
|
393
|
+
>>> e = ET.Rx(90, 'deg')
|
|
394
|
+
>>> e.kind
|
|
395
|
+
|
|
396
|
+
"""
|
|
397
|
+
return self._kind
|
|
398
|
+
|
|
399
|
+
@property
|
|
400
|
+
def axis(self) -> str:
|
|
401
|
+
"""
|
|
402
|
+
The transform type and axis
|
|
403
|
+
|
|
404
|
+
.. deprecated:: 1.4.0
|
|
405
|
+
Use :attr:`kind` instead. ``axis`` is kept as an alias and will
|
|
406
|
+
not be repurposed to mean something else in a future release.
|
|
407
|
+
|
|
408
|
+
:returns: The transform type and axis
|
|
409
|
+
:rtype: str
|
|
410
|
+
"""
|
|
411
|
+
warnings.warn(
|
|
412
|
+
"ET.axis is deprecated since 1.4.0, use .kind instead",
|
|
413
|
+
DeprecationWarning,
|
|
414
|
+
stacklevel=2,
|
|
415
|
+
)
|
|
416
|
+
return self._kind
|
|
417
|
+
|
|
418
|
+
@property
|
|
419
|
+
def ax(self) -> str | None:
|
|
420
|
+
"""
|
|
421
|
+
The Cartesian axis this transform acts along/about
|
|
422
|
+
|
|
423
|
+
:returns: ``"x"``, ``"y"``, or ``"z"`` for an elementary transform,
|
|
424
|
+
otherwise ``None`` (e.g. ``ET2``'s rotation, which has no axis
|
|
425
|
+
letter, or a compound/arbitrary ``SE3``/``SE2`` transform)
|
|
426
|
+
:rtype: str or None
|
|
427
|
+
|
|
428
|
+
Examples
|
|
429
|
+
--------
|
|
430
|
+
|
|
431
|
+
.. runblock:: pycon
|
|
432
|
+
|
|
433
|
+
>>> from roboticstoolbox import ET
|
|
434
|
+
>>> e = ET.tx(1)
|
|
435
|
+
>>> e.ax
|
|
436
|
+
>>> e = ET.Rx(90, 'deg')
|
|
437
|
+
>>> e.ax
|
|
438
|
+
|
|
439
|
+
"""
|
|
440
|
+
letter = self._kind[-1]
|
|
441
|
+
return letter if letter in "xyz" else None
|
|
442
|
+
|
|
443
|
+
@property
|
|
444
|
+
def isjoint(self) -> bool:
|
|
445
|
+
"""
|
|
446
|
+
Test if ET is a joint
|
|
447
|
+
|
|
448
|
+
:returns: True if a joint
|
|
449
|
+
:rtype: bool
|
|
450
|
+
|
|
451
|
+
Examples
|
|
452
|
+
--------
|
|
453
|
+
|
|
454
|
+
.. runblock:: pycon
|
|
455
|
+
|
|
456
|
+
>>> from roboticstoolbox import ET
|
|
457
|
+
>>> e = ET.tx(1)
|
|
458
|
+
>>> e.isjoint
|
|
459
|
+
>>> e = ET.tx()
|
|
460
|
+
>>> e.isjoint
|
|
461
|
+
|
|
462
|
+
"""
|
|
463
|
+
return self._joint
|
|
464
|
+
|
|
465
|
+
@property
|
|
466
|
+
def isflip(self) -> bool:
|
|
467
|
+
"""
|
|
468
|
+
Test if ET joint is flipped
|
|
469
|
+
|
|
470
|
+
:returns: True if joint is flipped
|
|
471
|
+
:rtype: bool
|
|
472
|
+
|
|
473
|
+
A flipped joint uses the negative of the joint variable, ie. it rotates
|
|
474
|
+
or moves in the opposite direction.
|
|
475
|
+
|
|
476
|
+
Examples
|
|
477
|
+
--------
|
|
478
|
+
|
|
479
|
+
.. runblock:: pycon
|
|
480
|
+
|
|
481
|
+
>>> from roboticstoolbox import ET
|
|
482
|
+
>>> e = ET.tx()
|
|
483
|
+
>>> e.T(1)
|
|
484
|
+
>>> eflip = ET.tx(flip=True)
|
|
485
|
+
>>> eflip.T(1)
|
|
486
|
+
|
|
487
|
+
"""
|
|
488
|
+
|
|
489
|
+
return self._flip
|
|
490
|
+
|
|
491
|
+
@property
|
|
492
|
+
def isrotation(self) -> bool:
|
|
493
|
+
"""
|
|
494
|
+
Test if ET is a rotation
|
|
495
|
+
|
|
496
|
+
:returns: True if a rotation
|
|
497
|
+
:rtype: bool
|
|
498
|
+
|
|
499
|
+
Examples
|
|
500
|
+
--------
|
|
501
|
+
|
|
502
|
+
.. runblock:: pycon
|
|
503
|
+
|
|
504
|
+
>>> from roboticstoolbox import ET
|
|
505
|
+
>>> e = ET.tx(1)
|
|
506
|
+
>>> e.isrotation
|
|
507
|
+
>>> e = ET.rx()
|
|
508
|
+
>>> e.isrotation
|
|
509
|
+
|
|
510
|
+
"""
|
|
511
|
+
|
|
512
|
+
return self.kind[0] == "R"
|
|
513
|
+
|
|
514
|
+
@property
|
|
515
|
+
def istranslation(self) -> bool:
|
|
516
|
+
"""
|
|
517
|
+
Test if ET is a translation
|
|
518
|
+
|
|
519
|
+
:returns: True if a translation
|
|
520
|
+
:rtype: bool
|
|
521
|
+
|
|
522
|
+
Examples
|
|
523
|
+
--------
|
|
524
|
+
|
|
525
|
+
.. runblock:: pycon
|
|
526
|
+
|
|
527
|
+
>>> from roboticstoolbox import ET
|
|
528
|
+
>>> e = ET.tx(1)
|
|
529
|
+
>>> e.istranslation
|
|
530
|
+
>>> e = ET.rx()
|
|
531
|
+
>>> e.istranslation
|
|
532
|
+
|
|
533
|
+
"""
|
|
534
|
+
|
|
535
|
+
return self.kind[0] == "t"
|
|
536
|
+
|
|
537
|
+
@property
|
|
538
|
+
def qlim(self) -> ndarray | None:
|
|
539
|
+
return self._qlim
|
|
540
|
+
|
|
541
|
+
@qlim.setter
|
|
542
|
+
def qlim(self, qlim_new: ArrayLike | None) -> None:
|
|
543
|
+
if qlim_new is not None:
|
|
544
|
+
qlim_new = getvector(qlim_new, 2, out="array")
|
|
545
|
+
self._qlim = qlim_new
|
|
546
|
+
self._accel_update()
|
|
547
|
+
|
|
548
|
+
@property
|
|
549
|
+
def jindex(self) -> int | None:
|
|
550
|
+
"""
|
|
551
|
+
Get ET joint index
|
|
552
|
+
|
|
553
|
+
:returns: The assigned joint index
|
|
554
|
+
:rtype: int or None
|
|
555
|
+
|
|
556
|
+
Allows an ET to be associated with a numbered joint in a robot.
|
|
557
|
+
|
|
558
|
+
Examples
|
|
559
|
+
--------
|
|
560
|
+
|
|
561
|
+
.. runblock:: pycon
|
|
562
|
+
|
|
563
|
+
>>> from roboticstoolbox import ET
|
|
564
|
+
>>> e = ET.tx()
|
|
565
|
+
>>> print(e)
|
|
566
|
+
>>> e = ET.tx(j=3)
|
|
567
|
+
>>> print(e)
|
|
568
|
+
>>> print(e.jindex)
|
|
569
|
+
|
|
570
|
+
"""
|
|
571
|
+
|
|
572
|
+
return self._jindex
|
|
573
|
+
|
|
574
|
+
@jindex.setter
|
|
575
|
+
def jindex(self, j):
|
|
576
|
+
if not isinstance(j, int) or j < 0:
|
|
577
|
+
raise ValueError(f"jindex is {j}, must be an int >= 0")
|
|
578
|
+
self._jindex = j
|
|
579
|
+
self._accel_update()
|
|
580
|
+
|
|
581
|
+
@property
|
|
582
|
+
def iselementary(self) -> bool:
|
|
583
|
+
"""
|
|
584
|
+
Test if ET is an elementary transform
|
|
585
|
+
|
|
586
|
+
:returns: True if an elementary transform
|
|
587
|
+
:rtype: bool
|
|
588
|
+
|
|
589
|
+
.. rubric:: Notes
|
|
590
|
+
|
|
591
|
+
- ET's may not actually be "elementary", it can be a complex
|
|
592
|
+
mix of rotations and translations.
|
|
593
|
+
|
|
594
|
+
See Also
|
|
595
|
+
--------
|
|
596
|
+
:func:`compile`
|
|
597
|
+
|
|
598
|
+
"""
|
|
599
|
+
|
|
600
|
+
return self.kind[0] != "S"
|
|
601
|
+
|
|
602
|
+
def inv(self):
|
|
603
|
+
r"""
|
|
604
|
+
Inverse of ET
|
|
605
|
+
|
|
606
|
+
:returns: Inverse of the ET
|
|
607
|
+
:rtype: ET
|
|
608
|
+
|
|
609
|
+
The inverse of a given ET.
|
|
610
|
+
|
|
611
|
+
Examples
|
|
612
|
+
--------
|
|
613
|
+
|
|
614
|
+
.. runblock:: pycon
|
|
615
|
+
|
|
616
|
+
>>> from roboticstoolbox import ET
|
|
617
|
+
>>> e = ET.Rz(2.5)
|
|
618
|
+
>>> print(e)
|
|
619
|
+
>>> print(e.inv())
|
|
620
|
+
|
|
621
|
+
""" # noqa
|
|
622
|
+
|
|
623
|
+
inv = deepcopy(self)
|
|
624
|
+
|
|
625
|
+
if inv.isjoint:
|
|
626
|
+
inv._flip ^= True
|
|
627
|
+
elif not inv.iselementary:
|
|
628
|
+
inv._T = npinv(inv._T).copy(order="F")
|
|
629
|
+
elif inv._param is not None:
|
|
630
|
+
inv._T = npinv(inv._T).copy(order="F")
|
|
631
|
+
inv._param = -inv._param
|
|
632
|
+
|
|
633
|
+
inv._accel_update()
|
|
634
|
+
|
|
635
|
+
return inv
|
|
636
|
+
|
|
637
|
+
def A(self, q: float | Sym = 0.0) -> ndarray:
|
|
638
|
+
"""
|
|
639
|
+
Evaluate an elementary transformation
|
|
640
|
+
|
|
641
|
+
:param q: Is used if this ET is variable (a joint)
|
|
642
|
+
:returns: The SE(3) or SE(2) matrix value of the ET
|
|
643
|
+
:rtype: ndarray
|
|
644
|
+
|
|
645
|
+
Examples
|
|
646
|
+
--------
|
|
647
|
+
|
|
648
|
+
.. runblock:: pycon
|
|
649
|
+
|
|
650
|
+
>>> from roboticstoolbox import ET
|
|
651
|
+
>>> e = ET.tx(1)
|
|
652
|
+
>>> e.A()
|
|
653
|
+
>>> e = ET.tx()
|
|
654
|
+
>>> e.A(0.7)
|
|
655
|
+
|
|
656
|
+
Pure-Python evaluation, shared by ET2 and used by ET as the
|
|
657
|
+
fallback when the compiled acceleration struct can't be used.
|
|
658
|
+
"""
|
|
659
|
+
if self.isjoint:
|
|
660
|
+
if self.isflip:
|
|
661
|
+
q = -q # type: ignore
|
|
662
|
+
|
|
663
|
+
if self.axis_func is not None:
|
|
664
|
+
return self.axis_func(q)
|
|
665
|
+
else: # pragma: no cover
|
|
666
|
+
raise TypeError("axis_func not defined")
|
|
667
|
+
else: # pragma: no cover
|
|
668
|
+
return self._T
|