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,165 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
|
|
3
|
+
from swift.SwiftRoute import SwiftServer, SwiftSocket, start_servers
|
|
4
|
+
from swift.Elements import (
|
|
5
|
+
SwiftElement,
|
|
6
|
+
Slider,
|
|
7
|
+
Select,
|
|
8
|
+
Checkbox,
|
|
9
|
+
Radio,
|
|
10
|
+
Button,
|
|
11
|
+
Label,
|
|
12
|
+
)
|
|
13
|
+
from swift.Swift import Swift as _SwiftBase
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Swift(_SwiftBase):
|
|
17
|
+
"""Swift backend with RTB capability flags."""
|
|
18
|
+
|
|
19
|
+
supports_teach: bool = True
|
|
20
|
+
supports_ellipse: bool = False
|
|
21
|
+
|
|
22
|
+
def _add_teach_panel(self, robot, q, handle, block):
|
|
23
|
+
"""
|
|
24
|
+
Add a joint-slider teach panel plus a live end-effector pose
|
|
25
|
+
readout, and wire the sliders to drive ``handle`` (the
|
|
26
|
+
AssemblyHandle ``BaseRobot.teach()`` got back from ``self.add()``)
|
|
27
|
+
via a single per-step callback -- see jhavl/swift#85 for why
|
|
28
|
+
driving the robot model's own .q/.qd directly is deprecated.
|
|
29
|
+
|
|
30
|
+
:param robot: the robot being taught, already added to this scene
|
|
31
|
+
:param q: initial joint configuration to seed the panel/display
|
|
32
|
+
with -- may differ from ``robot.q``'s current value
|
|
33
|
+
:param handle: the AssemblyHandle ``self.add(robot, readonly=True)``
|
|
34
|
+
returned for this robot instance
|
|
35
|
+
:param block: unlike PyPlot (whose own env.hold() enters
|
|
36
|
+
matplotlib's GUI mainloop, which processes slider events on
|
|
37
|
+
its own), Swift's hold() only sleeps and polls for a
|
|
38
|
+
disconnect -- it never calls step(), so nothing would ever
|
|
39
|
+
notice a dragged slider without an active step() loop
|
|
40
|
+
running somewhere. When block, this method runs that loop
|
|
41
|
+
itself (self.run(), blocking until disconnect/^C) rather
|
|
42
|
+
than relying on teach()'s own later `if block: env.hold()`.
|
|
43
|
+
When not block, a single self.step() seeds the initial
|
|
44
|
+
display and the caller is responsible for stepping (matches
|
|
45
|
+
teach(block=False)'s existing contract for other backends).
|
|
46
|
+
:returns: True if block, signalling to teach()'s shared code
|
|
47
|
+
that this method already fully handled blocking itself --
|
|
48
|
+
teach()'s own `if block: env.hold()` must be skipped in that
|
|
49
|
+
case, not just as an optimisation: calling env.hold() a
|
|
50
|
+
second time here can hang outright (its disconnect-poll
|
|
51
|
+
never expires in headless mode, and even non-headless
|
|
52
|
+
there's a race around close() and socket.USERS). None
|
|
53
|
+
(falsy) when not block, matching PyPlot/PyPlot2's own
|
|
54
|
+
_add_teach_panel, which never blocks internally at all.
|
|
55
|
+
"""
|
|
56
|
+
qlim = robot.qlim
|
|
57
|
+
|
|
58
|
+
# One label per value (x/y/z/r/p/y), matching PyPlot's own six
|
|
59
|
+
# separate fig.text() calls -- compact=True keeps this from
|
|
60
|
+
# taking up excessive sidebar space (Label's default styling is
|
|
61
|
+
# sized for an occasional standalone heading, not several
|
|
62
|
+
# stacked close together -- see swift's Label(compact=) docstring).
|
|
63
|
+
pose_labels = [Label("", compact=True) for _ in range(6)]
|
|
64
|
+
for label in pose_labels:
|
|
65
|
+
self.add(label)
|
|
66
|
+
|
|
67
|
+
def update_pose_labels(qv):
|
|
68
|
+
T = robot.fkine(qv)
|
|
69
|
+
t = np.round(T.t, 3)
|
|
70
|
+
r = np.round(T.rpy(unit="deg"), 3)
|
|
71
|
+
pose_labels[0].label = f"x: {t[0]}"
|
|
72
|
+
pose_labels[1].label = f"y: {t[1]}"
|
|
73
|
+
pose_labels[2].label = f"z: {t[2]}"
|
|
74
|
+
pose_labels[3].label = f"r: {r[0]}°"
|
|
75
|
+
pose_labels[4].label = f"p: {r[1]}°"
|
|
76
|
+
pose_labels[5].label = f"y: {r[2]}°"
|
|
77
|
+
|
|
78
|
+
def teach_update(t, values):
|
|
79
|
+
# Sliders display revolute joints in degrees, prismatic in
|
|
80
|
+
# native units (metres) -- toradians() converts the whole
|
|
81
|
+
# vector back in one call, only touching revolute entries.
|
|
82
|
+
q_display = np.array([values[f"q{j}"] for j in range(robot.n)])
|
|
83
|
+
q_new = robot.toradians(q_display)
|
|
84
|
+
update_pose_labels(q_new)
|
|
85
|
+
return q_new
|
|
86
|
+
|
|
87
|
+
# Safe with readonly=True: Swift.step()'s callback branch runs
|
|
88
|
+
# unconditionally whenever a callback is set -- readonly only
|
|
89
|
+
# gates the *other* (non-callback) per-step update path.
|
|
90
|
+
handle.callback = teach_update
|
|
91
|
+
|
|
92
|
+
for j in range(robot.n):
|
|
93
|
+
lo, hi = qlim[0, j], qlim[1, j]
|
|
94
|
+
if robot.isrevolute(j):
|
|
95
|
+
lo_disp, hi_disp, val_disp = np.degrees(lo), np.degrees(hi), np.degrees(q[j])
|
|
96
|
+
step = 1.0
|
|
97
|
+
unit = "°"
|
|
98
|
+
else:
|
|
99
|
+
lo_disp, hi_disp, val_disp = lo, hi, q[j]
|
|
100
|
+
step = (hi - lo) / 100
|
|
101
|
+
unit = "m"
|
|
102
|
+
|
|
103
|
+
self.add(
|
|
104
|
+
Slider(
|
|
105
|
+
lambda x: None,
|
|
106
|
+
# min/max/value stay full precision -- precision=
|
|
107
|
+
# below only rounds the *displayed* text, unlike a
|
|
108
|
+
# naive round() here which would bake rounding error
|
|
109
|
+
# into the actual driven value once the callback
|
|
110
|
+
# reads it back from env.values.
|
|
111
|
+
min=float(lo_disp),
|
|
112
|
+
max=float(hi_disp),
|
|
113
|
+
step=step,
|
|
114
|
+
value=float(val_disp),
|
|
115
|
+
label=f"{robot.name} joint {j}",
|
|
116
|
+
unit=unit,
|
|
117
|
+
precision=2,
|
|
118
|
+
),
|
|
119
|
+
name=f"q{j}",
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
update_pose_labels(q)
|
|
123
|
+
self.step()
|
|
124
|
+
|
|
125
|
+
if block:
|
|
126
|
+
# Unbounded (duration=None): keep responding to slider drags
|
|
127
|
+
# for as long as the browser stays connected, same as any
|
|
128
|
+
# other Swift script's own `while True: env.step(dt)` loop --
|
|
129
|
+
# just with run()'s disconnect-awareness (and ^C handling)
|
|
130
|
+
# folded in instead of looping forever after the tab is gone.
|
|
131
|
+
# Returns normally on a disconnect (graceful or mid-step);
|
|
132
|
+
# only ^C skips the rest of this method (raises SystemExit).
|
|
133
|
+
self.run()
|
|
134
|
+
|
|
135
|
+
# PyPlot's teach() mutates robot.q throughout its own session,
|
|
136
|
+
# so a caller naturally finds the final taught pose in
|
|
137
|
+
# robot.q once teach() returns -- see BaseRobot.teach()'s
|
|
138
|
+
# docstring. Swift's AssemblyHandle deliberately doesn't
|
|
139
|
+
# mirror handle.q into robot.q during the session (that's
|
|
140
|
+
# the whole point of the refactor -- see jhavl/swift#85), but
|
|
141
|
+
# write it back once, here, at the point the session ends,
|
|
142
|
+
# so callers see the same thing regardless of backend. A
|
|
143
|
+
# deliberate one-time exception for this specific
|
|
144
|
+
# single-owner interactive session, not a general precedent
|
|
145
|
+
# -- the same "stateless over stateful" tension PyPlot's own
|
|
146
|
+
# teach() already has (see desiderata.md), just accepted
|
|
147
|
+
# here rather than solved.
|
|
148
|
+
robot.q = handle.q.copy()
|
|
149
|
+
|
|
150
|
+
return True
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
__all__ = [
|
|
154
|
+
"Swift",
|
|
155
|
+
"Slider",
|
|
156
|
+
"SwiftElement",
|
|
157
|
+
"Label",
|
|
158
|
+
"Select",
|
|
159
|
+
"Button",
|
|
160
|
+
"Checkbox",
|
|
161
|
+
"Radio",
|
|
162
|
+
"SwiftServer",
|
|
163
|
+
"SwiftSocket",
|
|
164
|
+
"start_servers",
|
|
165
|
+
]
|
|
File without changes
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Shared helpers for RTB command-line tools.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import argparse
|
|
8
|
+
import textwrap
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def link(uri: str, label: str | None = None) -> str:
|
|
12
|
+
"""Return a terminal hyperlink escape sequence.
|
|
13
|
+
|
|
14
|
+
:param uri: target URL
|
|
15
|
+
:param label: display label, defaults to the URI itself
|
|
16
|
+
:return: OSC-8 hyperlink string
|
|
17
|
+
"""
|
|
18
|
+
# https://stackoverflow.com/questions/40419276/python-how-to-print-text-to-console-as-hyperlink
|
|
19
|
+
if label is None:
|
|
20
|
+
label = uri
|
|
21
|
+
escape_mask = "\033]8;{};{}\033\\{}\033]8;;\033\\"
|
|
22
|
+
return escape_mask.format("", uri, label)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class CustomHelpFormatter(argparse.HelpFormatter):
|
|
26
|
+
"""Argparse formatter that wraps at word boundaries on explicit newlines."""
|
|
27
|
+
|
|
28
|
+
def _split_lines(self, text: str, width: int) -> list[str]:
|
|
29
|
+
lines = text.splitlines()
|
|
30
|
+
wrapped: list[str] = []
|
|
31
|
+
for line in lines:
|
|
32
|
+
wrapped.extend(
|
|
33
|
+
textwrap.wrap(
|
|
34
|
+
line, width, break_long_words=False, break_on_hyphens=False
|
|
35
|
+
)
|
|
36
|
+
)
|
|
37
|
+
return wrapped
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class CustomDefaultsHelpFormatter(
|
|
41
|
+
CustomHelpFormatter, argparse.ArgumentDefaultsHelpFormatter
|
|
42
|
+
):
|
|
43
|
+
"""Custom formatter that also appends default values in help output."""
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class LineWrapRawTextHelpFormatter(argparse.RawDescriptionHelpFormatter):
|
|
47
|
+
"""Argparse formatter that reflowes whitespace and wraps at 80 columns."""
|
|
48
|
+
|
|
49
|
+
def _split_lines(self, text: str, width: int) -> list[str]:
|
|
50
|
+
text = self._whitespace_matcher.sub(" ", text).strip()
|
|
51
|
+
return textwrap.wrap(text, 80)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class LineWrapRawTextDefaultsHelpFormatter(
|
|
55
|
+
LineWrapRawTextHelpFormatter, argparse.ArgumentDefaultsHelpFormatter
|
|
56
|
+
):
|
|
57
|
+
"""Line-wrapped formatter that also appends default values."""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
RTB_URL = "https://github.com/petercorke/robotics-toolbox-python"
|
|
61
|
+
RTB_LINK = link(RTB_URL, "Robotics Toolbox for Python")
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Interactive Robotics Toolbox shell — starts an IPython session with NumPy,
|
|
4
|
+
RTB, and SpatialMath pre-imported.
|
|
5
|
+
|
|
6
|
+
Usage::
|
|
7
|
+
|
|
8
|
+
$ rtbtool
|
|
9
|
+
$ rtbtool myscript.py
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
# import stuff
|
|
13
|
+
import argparse
|
|
14
|
+
import pathlib
|
|
15
|
+
import shlex
|
|
16
|
+
import sys
|
|
17
|
+
import os
|
|
18
|
+
from importlib.metadata import version
|
|
19
|
+
|
|
20
|
+
from roboticstoolbox.bin._bintools import LineWrapRawTextDefaultsHelpFormatter
|
|
21
|
+
|
|
22
|
+
try:
|
|
23
|
+
from colored import fg, bg, attr
|
|
24
|
+
|
|
25
|
+
_colored = True
|
|
26
|
+
# print('using colored output')
|
|
27
|
+
except ImportError:
|
|
28
|
+
# print('colored not found')
|
|
29
|
+
_colored = False
|
|
30
|
+
fg = lambda *args, **kwargs: ""
|
|
31
|
+
bg = lambda *args, **kwargs: ""
|
|
32
|
+
attr = lambda *args, **kwargs: ""
|
|
33
|
+
|
|
34
|
+
# imports for use by IPython and user
|
|
35
|
+
import math
|
|
36
|
+
from math import pi # lgtm [py/unused-import]
|
|
37
|
+
import numpy as np
|
|
38
|
+
from scipy import linalg, optimize
|
|
39
|
+
import matplotlib.pyplot as plt # lgtm [py/unused-import]
|
|
40
|
+
import matplotlib as mpl
|
|
41
|
+
|
|
42
|
+
from spatialmath import * # lgtm [py/polluting-import]
|
|
43
|
+
from spatialmath.base import *
|
|
44
|
+
import spatialmath.base as smb
|
|
45
|
+
from spatialmath.base import sym
|
|
46
|
+
|
|
47
|
+
from spatialgeometry import * # lgtm [py/polluting-import]
|
|
48
|
+
|
|
49
|
+
from roboticstoolbox import * # lgtm [py/unused-import]
|
|
50
|
+
|
|
51
|
+
_OPTIONS_ENVVAR = "RTB_OPTIONS"
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def env_arguments(parser):
|
|
55
|
+
"""Return command-line style options from the environment.
|
|
56
|
+
|
|
57
|
+
:param parser: argument parser used for error reporting
|
|
58
|
+
:type parser: :class:`argparse.ArgumentParser`
|
|
59
|
+
:return: tokenised environment arguments
|
|
60
|
+
:rtype: list[str]
|
|
61
|
+
"""
|
|
62
|
+
options = os.environ.get(_OPTIONS_ENVVAR)
|
|
63
|
+
if not options:
|
|
64
|
+
return []
|
|
65
|
+
|
|
66
|
+
try:
|
|
67
|
+
return shlex.split(options)
|
|
68
|
+
except ValueError as exc:
|
|
69
|
+
parser.error(f"invalid {_OPTIONS_ENVVAR}: {exc}")
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def parse_arguments():
|
|
73
|
+
parser = argparse.ArgumentParser(
|
|
74
|
+
description="Robotics Toolbox shell",
|
|
75
|
+
formatter_class=LineWrapRawTextDefaultsHelpFormatter,
|
|
76
|
+
epilog=(
|
|
77
|
+
"options can be set via the environment variable RTB_OPTIONS, "
|
|
78
|
+
"for example:\n\n"
|
|
79
|
+
" $ export RTB_OPTIONS=\"--backend TkAgg --prompt 'rtb> ' "
|
|
80
|
+
'--reload --showassign"\n'
|
|
81
|
+
),
|
|
82
|
+
)
|
|
83
|
+
parser.add_argument("script", default=None, nargs="?", help="specify script to run")
|
|
84
|
+
parser.add_argument(
|
|
85
|
+
"--backend", "-B", default=None, help="specify graphics backend"
|
|
86
|
+
)
|
|
87
|
+
parser.add_argument(
|
|
88
|
+
"--theme",
|
|
89
|
+
"-t",
|
|
90
|
+
default="neutral",
|
|
91
|
+
help="specify terminal color theme (neutral, lightbg, nocolor, linux), linux is for dark mode",
|
|
92
|
+
)
|
|
93
|
+
parser.add_argument(
|
|
94
|
+
"--confirmexit",
|
|
95
|
+
"-x",
|
|
96
|
+
default=False,
|
|
97
|
+
action="store_true",
|
|
98
|
+
help="confirm exit",
|
|
99
|
+
)
|
|
100
|
+
parser.add_argument("--prompt", "-P", default="(rtb) >>> ", help="input prompt")
|
|
101
|
+
parser.add_argument(
|
|
102
|
+
"--resultprefix",
|
|
103
|
+
"-R",
|
|
104
|
+
default=None,
|
|
105
|
+
help="execution result prefix, include {} for execution count number",
|
|
106
|
+
)
|
|
107
|
+
parser.add_argument(
|
|
108
|
+
"--reload",
|
|
109
|
+
default=False,
|
|
110
|
+
action="store_true",
|
|
111
|
+
help="enable autoreload of any imported modules, same as IPython's builtin %%autoreload 2",
|
|
112
|
+
)
|
|
113
|
+
parser.add_argument(
|
|
114
|
+
"--no-banner",
|
|
115
|
+
dest="banner",
|
|
116
|
+
default=True,
|
|
117
|
+
action="store_false",
|
|
118
|
+
help="suppress startup banner",
|
|
119
|
+
)
|
|
120
|
+
parser.add_argument(
|
|
121
|
+
"--showassign",
|
|
122
|
+
"-a",
|
|
123
|
+
default=False,
|
|
124
|
+
action="store_true",
|
|
125
|
+
help="display the result of assignments",
|
|
126
|
+
)
|
|
127
|
+
parser.add_argument(
|
|
128
|
+
"--book",
|
|
129
|
+
default=False,
|
|
130
|
+
action="store_true",
|
|
131
|
+
help="use defaults as per RVC book",
|
|
132
|
+
)
|
|
133
|
+
parser.add_argument(
|
|
134
|
+
"--ansi",
|
|
135
|
+
default=False,
|
|
136
|
+
action="store_true",
|
|
137
|
+
help="use ANSImatrix to display matrices",
|
|
138
|
+
)
|
|
139
|
+
parser.add_argument(
|
|
140
|
+
"--examples",
|
|
141
|
+
"-e",
|
|
142
|
+
default=False,
|
|
143
|
+
action="store_true",
|
|
144
|
+
help="change working directory to shipped examples",
|
|
145
|
+
)
|
|
146
|
+
parser.add_argument(
|
|
147
|
+
"--swift",
|
|
148
|
+
"-s",
|
|
149
|
+
default=False,
|
|
150
|
+
action="store_true",
|
|
151
|
+
help="use Swift as default backend",
|
|
152
|
+
)
|
|
153
|
+
parser.add_argument(
|
|
154
|
+
"--test",
|
|
155
|
+
default=False,
|
|
156
|
+
action="store_true",
|
|
157
|
+
help="non-interactive environment smoke test: print package versions, "
|
|
158
|
+
"exercise one real numeric code path per package, exit 0/1 "
|
|
159
|
+
"instead of starting an interactive shell",
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
argv = env_arguments(parser) + sys.argv[1:]
|
|
163
|
+
args, rest = parser.parse_known_args(argv)
|
|
164
|
+
|
|
165
|
+
if args.script is not None:
|
|
166
|
+
args.banner = False
|
|
167
|
+
|
|
168
|
+
return args, rest
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def get_versions() -> list[str]:
|
|
172
|
+
"""Package version strings shown in the banner and by --test."""
|
|
173
|
+
return [
|
|
174
|
+
f"RTB=={version('roboticstoolbox-python')}",
|
|
175
|
+
f"SMTB=={version('spatialmath-python')}",
|
|
176
|
+
f"SG=={version('spatialgeometry')}",
|
|
177
|
+
f"NumPy=={version('numpy')}",
|
|
178
|
+
f"SciPy=={version('scipy')}",
|
|
179
|
+
f"Matplotlib=={version('matplotlib')}",
|
|
180
|
+
]
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def make_banner():
|
|
184
|
+
# banner template
|
|
185
|
+
# https://patorjk.com/software/taag/#p=display&f=Cybermedium&t=Robotics%20Toolbox%0A
|
|
186
|
+
|
|
187
|
+
banner = r"""\
|
|
188
|
+
____ ____ ___ ____ ___ _ ____ ____ ___ ____ ____ _ ___ ____ _ _
|
|
189
|
+
|__/ | | |__] | | | | | [__ | | | | | | |__] | | \/
|
|
190
|
+
| \ |__| |__] |__| | | |___ ___] | |__| |__| |___ |__] |__| _/\_
|
|
191
|
+
|
|
192
|
+
for Python"""
|
|
193
|
+
|
|
194
|
+
# create banner
|
|
195
|
+
banner += " (" + ", ".join(get_versions()) + ")"
|
|
196
|
+
banner += r"""
|
|
197
|
+
|
|
198
|
+
import math
|
|
199
|
+
import numpy as np
|
|
200
|
+
from scipy import linalg, optimize
|
|
201
|
+
import matplotlib.pyplot as plt
|
|
202
|
+
from spatialmath import *
|
|
203
|
+
from spatialmath.base import *
|
|
204
|
+
from spatialmath.base import sym
|
|
205
|
+
from roboticstoolbox import *"
|
|
206
|
+
|
|
207
|
+
# useful variables
|
|
208
|
+
from math import pi
|
|
209
|
+
puma = models.DH.Puma560()
|
|
210
|
+
panda = models.DH.Panda()
|
|
211
|
+
|
|
212
|
+
func/object? - show brief help
|
|
213
|
+
help(func/object) - show detailed help
|
|
214
|
+
func/object?? - show source code
|
|
215
|
+
|
|
216
|
+
"""
|
|
217
|
+
|
|
218
|
+
return banner
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def examples_path():
|
|
222
|
+
# Repository layout: <root>/src/roboticstoolbox/bin/rtbtool.py
|
|
223
|
+
return pathlib.Path(__file__).resolve().parents[3] / "examples"
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
def startup():
|
|
227
|
+
plt.ion()
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
def run_smoke_test() -> bool:
|
|
231
|
+
"""Non-interactive environment sanity check, used by --test.
|
|
232
|
+
|
|
233
|
+
Not a substitute for the pytest suite -- a fast, human- or script-run
|
|
234
|
+
"did this environment actually come together correctly" check: real
|
|
235
|
+
versions, confirmation the compiled extensions loaded, and one real
|
|
236
|
+
numeric result compared against a known-correct value. The last part
|
|
237
|
+
matters specifically because a compiled extension built against the
|
|
238
|
+
wrong NumPy ABI can load successfully and still compute garbage --
|
|
239
|
+
checking that it merely *imported* wouldn't catch that.
|
|
240
|
+
"""
|
|
241
|
+
print(", ".join(get_versions()))
|
|
242
|
+
|
|
243
|
+
from roboticstoolbox.ets.fknm import _C_AVAILABLE as fknm_c
|
|
244
|
+
from roboticstoolbox.robot.frne import _C_AVAILABLE as frne_c
|
|
245
|
+
|
|
246
|
+
panda = models.DH.Panda()
|
|
247
|
+
T = panda.fkine(panda.qr).A
|
|
248
|
+
expected = np.array(
|
|
249
|
+
[
|
|
250
|
+
[9.9500416528e-01, 0.0000000000e00, 9.9833416647e-02, 4.8400688203e-01],
|
|
251
|
+
[0.0000000000e00, -1.0000000000e00, -1.2032944640e-16, -6.8775459668e-17],
|
|
252
|
+
[9.9833416647e-02, 1.2490009027e-16, -9.9500416528e-01, 4.1302777713e-01],
|
|
253
|
+
[0.0000000000e00, 0.0000000000e00, 0.0000000000e00, 1.0000000000e00],
|
|
254
|
+
]
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
checks = [
|
|
258
|
+
("fknm compiled extension loaded", fknm_c),
|
|
259
|
+
("frne compiled extension loaded", frne_c),
|
|
260
|
+
(
|
|
261
|
+
"Panda.fkine(qr) matches expected (1e-9)",
|
|
262
|
+
bool(np.allclose(T, expected, atol=1e-9)),
|
|
263
|
+
),
|
|
264
|
+
]
|
|
265
|
+
|
|
266
|
+
for name, passed in checks:
|
|
267
|
+
print(f"[{'PASS' if passed else 'FAIL'}] {name}")
|
|
268
|
+
|
|
269
|
+
n_passed = sum(1 for _, passed in checks if passed)
|
|
270
|
+
print(f"rtbtool --test: {n_passed}/{len(checks)} checks passed")
|
|
271
|
+
return n_passed == len(checks)
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
def main():
|
|
275
|
+
args, ipython_args = parse_arguments()
|
|
276
|
+
|
|
277
|
+
if args.test:
|
|
278
|
+
sys.exit(0 if run_smoke_test() else 1)
|
|
279
|
+
|
|
280
|
+
try:
|
|
281
|
+
import IPython
|
|
282
|
+
from IPython.terminal.prompts import Prompts
|
|
283
|
+
from pygments.token import Token
|
|
284
|
+
from traitlets.config import Config
|
|
285
|
+
except ImportError as e:
|
|
286
|
+
sys.exit(
|
|
287
|
+
f"rtbtool requires IPython and pygments, which are not "
|
|
288
|
+
f"installed ({e}).\nInstall them with:\n\n"
|
|
289
|
+
" pip install roboticstoolbox-python[tool]\n"
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
# setup defaults
|
|
293
|
+
np.set_printoptions(
|
|
294
|
+
linewidth=120,
|
|
295
|
+
formatter={"float": lambda x: f"{0:8.4g}" if abs(x) < 1e-10 else f"{x:8.4g}"},
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
if args.book:
|
|
299
|
+
# set book options
|
|
300
|
+
args.resultprefix = ""
|
|
301
|
+
args.prompt = ">>> "
|
|
302
|
+
args.showassign = True
|
|
303
|
+
args.ansi = False
|
|
304
|
+
args.examples = True
|
|
305
|
+
|
|
306
|
+
if args.examples:
|
|
307
|
+
path = examples_path()
|
|
308
|
+
if path.exists() and path.is_dir():
|
|
309
|
+
print(f"Changing working directory to {path}")
|
|
310
|
+
os.chdir(path)
|
|
311
|
+
else:
|
|
312
|
+
print(f"Examples directory not found: {path}")
|
|
313
|
+
|
|
314
|
+
# load some robot models after argument handling to avoid import-time side effects
|
|
315
|
+
puma = models.DH.Puma560()
|
|
316
|
+
panda = models.DH.Panda()
|
|
317
|
+
|
|
318
|
+
# set default backend for Robot.plot
|
|
319
|
+
if args.swift:
|
|
320
|
+
Robot.default_backend = "swift"
|
|
321
|
+
|
|
322
|
+
# set matrix printing mode for spatialmath
|
|
323
|
+
SE3._ansimatrix = args.ansi
|
|
324
|
+
|
|
325
|
+
# set default matplotlib backend
|
|
326
|
+
if args.backend is not None:
|
|
327
|
+
print(f"Using matplotlb backend {args.backend}")
|
|
328
|
+
mpl.use(args.backend)
|
|
329
|
+
|
|
330
|
+
# build the banner, import * packages and their versions
|
|
331
|
+
|
|
332
|
+
if args.banner:
|
|
333
|
+
banner = make_banner()
|
|
334
|
+
print(fg("yellow") + banner + attr(0))
|
|
335
|
+
|
|
336
|
+
if args.showassign and args.banner:
|
|
337
|
+
print(
|
|
338
|
+
fg("red")
|
|
339
|
+
+ "Results of assignments will be displayed, use trailing ; to suppress"
|
|
340
|
+
+ attr(0)
|
|
341
|
+
+ "\n"
|
|
342
|
+
)
|
|
343
|
+
|
|
344
|
+
# drop into IPython
|
|
345
|
+
class MyPrompt(Prompts):
|
|
346
|
+
def in_prompt_tokens(self, cli=None):
|
|
347
|
+
return [(Token.Prompt, args.prompt)]
|
|
348
|
+
|
|
349
|
+
def out_prompt_tokens(self, cli=None):
|
|
350
|
+
if args.resultprefix is None:
|
|
351
|
+
# traditional behaviour
|
|
352
|
+
return [
|
|
353
|
+
(Token.OutPrompt, "Out["),
|
|
354
|
+
(Token.OutPromptNum, str(self.shell.execution_count)),
|
|
355
|
+
(Token.OutPrompt, "]: "),
|
|
356
|
+
]
|
|
357
|
+
else:
|
|
358
|
+
return [
|
|
359
|
+
(Token.Prompt, args.resultprefix.format(self.shell.execution_count))
|
|
360
|
+
]
|
|
361
|
+
|
|
362
|
+
# set configuration options, there are lots, see
|
|
363
|
+
# https://ipython.readthedocs.io/en/stable/config/options/terminal.html
|
|
364
|
+
c = Config()
|
|
365
|
+
c.InteractiveShellEmbed.colors = args.theme
|
|
366
|
+
c.InteractiveShell.confirm_exit = args.confirmexit
|
|
367
|
+
# c.InteractiveShell.prompts_class = ClassicPrompts
|
|
368
|
+
c.InteractiveShell.prompts_class = MyPrompt
|
|
369
|
+
if args.showassign:
|
|
370
|
+
c.InteractiveShell.ast_node_interactivity = "last_expr_or_assign"
|
|
371
|
+
c.TerminalIPythonApp.force_interact = False
|
|
372
|
+
# set precision, same as %precision
|
|
373
|
+
c.PlainTextFormatter.float_precision = "%.3f"
|
|
374
|
+
|
|
375
|
+
# set up a script to be executed by IPython when we get there
|
|
376
|
+
code = None
|
|
377
|
+
if args.script is not None:
|
|
378
|
+
path = pathlib.Path(args.script)
|
|
379
|
+
if not path.exists():
|
|
380
|
+
raise ValueError(f"script does not exist: {args.script}")
|
|
381
|
+
code = path.open("r").readlines()
|
|
382
|
+
if code is None:
|
|
383
|
+
code = [
|
|
384
|
+
"startup()",
|
|
385
|
+
"_prec = get_ipython().run_line_magic('precision', '%.3g'); "
|
|
386
|
+
"print(f'Default numeric formatting: {_prec}')",
|
|
387
|
+
]
|
|
388
|
+
else:
|
|
389
|
+
code.append("plt.ion()")
|
|
390
|
+
|
|
391
|
+
if args.reload:
|
|
392
|
+
code = ["%load_ext autoreload", "%autoreload 2"] + code
|
|
393
|
+
|
|
394
|
+
c.InteractiveShellApp.exec_lines = code
|
|
395
|
+
namespace = {k: v for k, v in globals().items() if not k.startswith("__")}
|
|
396
|
+
namespace.update({"puma": puma, "panda": panda})
|
|
397
|
+
|
|
398
|
+
# clear argv so IPython doesn't try to reparse arguments we've already consumed
|
|
399
|
+
sys.argv = sys.argv[:1]
|
|
400
|
+
IPython.start_ipython(config=c, user_ns=namespace, argv=ipython_args)
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
if __name__ == "__main__":
|
|
404
|
+
main()
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|