roboticstoolbox-python 1.3.0__cp312-cp312-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- roboticstoolbox/__init__.py +104 -0
- roboticstoolbox/backends/Connector.py +107 -0
- roboticstoolbox/backends/Dynamixel/README.md +9 -0
- roboticstoolbox/backends/Dynamixel/dynamixel.json +581 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_io.py +450 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/LICENSE +201 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/README.md +28 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/ReleaseNote.md +181 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/__init__.py +27 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_bulk_read.py +163 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_bulk_write.py +109 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_sync_read.py +166 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_sync_write.py +99 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/packet_handler.py +33 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/port_handler.py +155 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/protocol1_packet_handler.py +548 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/protocol2_packet_handler.py +1080 -0
- roboticstoolbox/backends/Dynamixel/dynamixel_sdk/robotis_def.py +75 -0
- roboticstoolbox/backends/Dynamixel/dyndata.py +121 -0
- roboticstoolbox/backends/PyPlot/EllipsePlot.py +253 -0
- roboticstoolbox/backends/PyPlot/PyPlot.py +769 -0
- roboticstoolbox/backends/PyPlot/PyPlot2.py +526 -0
- roboticstoolbox/backends/PyPlot/README.md +67 -0
- roboticstoolbox/backends/PyPlot/RobotPlot.py +247 -0
- roboticstoolbox/backends/PyPlot/RobotPlot2.py +123 -0
- roboticstoolbox/backends/PyPlot/__init__.py +4 -0
- roboticstoolbox/backends/ROS/ROS.py +129 -0
- roboticstoolbox/backends/ROS/__init__.py +3 -0
- roboticstoolbox/backends/__init__.py +39 -0
- roboticstoolbox/backends/swift/__init__.py +26 -0
- roboticstoolbox/bin/__init__.py +0 -0
- roboticstoolbox/bin/rtbtool.py +307 -0
- roboticstoolbox/blocks/Icons/250x250/armplot.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/bicycle.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/camera.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/circlepath.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/coriolis.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/ctraj.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/delta2tr.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/diffsteer.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/fdyn.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/fdynx.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/fkine.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/gravload.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/idyn.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/idynx.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/ikine.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/inertia.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/jacobian.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/jtraj.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/lspb.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/multirotor.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/multirotormixer.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/multirotorplot.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/point2tr.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/tr2delta.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/tr2t.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/unicycle.png +0 -0
- roboticstoolbox/blocks/Icons/250x250/vehicleplot.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/armplot.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/bicycle.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/camera.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/circlepath.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/coriolis.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/delta2tr.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/diffsteer.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/fdyn.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/fdynx.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/fkine.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/gravload.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/idyn.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/idynx.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/ikine.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/inertia.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/jacobian.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/jtraj.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/lspb.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/multirotor.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/multirotormixer.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/multirotorplot.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/point2tr.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/tr2delta.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/tr2t.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/unicycle.png +0 -0
- roboticstoolbox/blocks/Icons/50x50/vehicleplot.png +0 -0
- roboticstoolbox/blocks/Icons/armplot.png +0 -0
- roboticstoolbox/blocks/Icons/bicycle.png +0 -0
- roboticstoolbox/blocks/Icons/camera.png +0 -0
- roboticstoolbox/blocks/Icons/circlepath.png +0 -0
- roboticstoolbox/blocks/Icons/coriolis.png +0 -0
- roboticstoolbox/blocks/Icons/ctraj.png +0 -0
- roboticstoolbox/blocks/Icons/delta2tr.png +0 -0
- roboticstoolbox/blocks/Icons/diffsteer.png +0 -0
- roboticstoolbox/blocks/Icons/fdyn.png +0 -0
- roboticstoolbox/blocks/Icons/fdynx.png +0 -0
- roboticstoolbox/blocks/Icons/fkine.png +0 -0
- roboticstoolbox/blocks/Icons/gravload.png +0 -0
- roboticstoolbox/blocks/Icons/idyn.png +0 -0
- roboticstoolbox/blocks/Icons/idynx.png +0 -0
- roboticstoolbox/blocks/Icons/ikine.png +0 -0
- roboticstoolbox/blocks/Icons/inertia.png +0 -0
- roboticstoolbox/blocks/Icons/jacobian.png +0 -0
- roboticstoolbox/blocks/Icons/jtraj.png +0 -0
- roboticstoolbox/blocks/Icons/lspb.png +0 -0
- roboticstoolbox/blocks/Icons/multirotor.png +0 -0
- roboticstoolbox/blocks/Icons/multirotormixer.png +0 -0
- roboticstoolbox/blocks/Icons/multirotorplot.png +0 -0
- roboticstoolbox/blocks/Icons/point2tr.png +0 -0
- roboticstoolbox/blocks/Icons/tr2delta.png +0 -0
- roboticstoolbox/blocks/Icons/tr2t.png +0 -0
- roboticstoolbox/blocks/Icons/unicycle.png +0 -0
- roboticstoolbox/blocks/Icons/vehicleplot.png +0 -0
- roboticstoolbox/blocks/README.md +43 -0
- roboticstoolbox/blocks/__init__.py +6 -0
- roboticstoolbox/blocks/arm.py +1587 -0
- roboticstoolbox/blocks/mobile.py +500 -0
- roboticstoolbox/blocks/quad_model.py +132 -0
- roboticstoolbox/blocks/spatial.py +245 -0
- roboticstoolbox/blocks/uav.py +949 -0
- roboticstoolbox/core/Eigen/Cholesky +45 -0
- roboticstoolbox/core/Eigen/CholmodSupport +48 -0
- roboticstoolbox/core/Eigen/Core +384 -0
- roboticstoolbox/core/Eigen/Dense +7 -0
- roboticstoolbox/core/Eigen/Eigen +2 -0
- roboticstoolbox/core/Eigen/Eigenvalues +60 -0
- roboticstoolbox/core/Eigen/Geometry +59 -0
- roboticstoolbox/core/Eigen/Householder +29 -0
- roboticstoolbox/core/Eigen/IterativeLinearSolvers +48 -0
- roboticstoolbox/core/Eigen/Jacobi +32 -0
- roboticstoolbox/core/Eigen/KLUSupport +41 -0
- roboticstoolbox/core/Eigen/LU +47 -0
- roboticstoolbox/core/Eigen/MetisSupport +35 -0
- roboticstoolbox/core/Eigen/OrderingMethods +70 -0
- roboticstoolbox/core/Eigen/PaStiXSupport +49 -0
- roboticstoolbox/core/Eigen/PardisoSupport +35 -0
- roboticstoolbox/core/Eigen/QR +50 -0
- roboticstoolbox/core/Eigen/QtAlignedMalloc +39 -0
- roboticstoolbox/core/Eigen/SPQRSupport +34 -0
- roboticstoolbox/core/Eigen/SVD +50 -0
- roboticstoolbox/core/Eigen/Sparse +34 -0
- roboticstoolbox/core/Eigen/SparseCholesky +37 -0
- roboticstoolbox/core/Eigen/SparseCore +69 -0
- roboticstoolbox/core/Eigen/SparseLU +50 -0
- roboticstoolbox/core/Eigen/SparseQR +36 -0
- roboticstoolbox/core/Eigen/StdDeque +27 -0
- roboticstoolbox/core/Eigen/StdList +26 -0
- roboticstoolbox/core/Eigen/StdVector +27 -0
- roboticstoolbox/core/Eigen/SuperLUSupport +64 -0
- roboticstoolbox/core/Eigen/UmfPackSupport +40 -0
- roboticstoolbox/core/Eigen/src/Cholesky/LDLT.h +688 -0
- roboticstoolbox/core/Eigen/src/Cholesky/LLT.h +558 -0
- roboticstoolbox/core/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
- roboticstoolbox/core/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
- roboticstoolbox/core/Eigen/src/Core/ArithmeticSequence.h +413 -0
- roboticstoolbox/core/Eigen/src/Core/Array.h +417 -0
- roboticstoolbox/core/Eigen/src/Core/ArrayBase.h +226 -0
- roboticstoolbox/core/Eigen/src/Core/ArrayWrapper.h +209 -0
- roboticstoolbox/core/Eigen/src/Core/Assign.h +90 -0
- roboticstoolbox/core/Eigen/src/Core/AssignEvaluator.h +1010 -0
- roboticstoolbox/core/Eigen/src/Core/Assign_MKL.h +178 -0
- roboticstoolbox/core/Eigen/src/Core/BandMatrix.h +353 -0
- roboticstoolbox/core/Eigen/src/Core/Block.h +448 -0
- roboticstoolbox/core/Eigen/src/Core/BooleanRedux.h +162 -0
- roboticstoolbox/core/Eigen/src/Core/CommaInitializer.h +164 -0
- roboticstoolbox/core/Eigen/src/Core/ConditionEstimator.h +175 -0
- roboticstoolbox/core/Eigen/src/Core/CoreEvaluators.h +1741 -0
- roboticstoolbox/core/Eigen/src/Core/CoreIterators.h +132 -0
- roboticstoolbox/core/Eigen/src/Core/CwiseBinaryOp.h +183 -0
- roboticstoolbox/core/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
- roboticstoolbox/core/Eigen/src/Core/CwiseTernaryOp.h +197 -0
- roboticstoolbox/core/Eigen/src/Core/CwiseUnaryOp.h +103 -0
- roboticstoolbox/core/Eigen/src/Core/CwiseUnaryView.h +132 -0
- roboticstoolbox/core/Eigen/src/Core/DenseBase.h +701 -0
- roboticstoolbox/core/Eigen/src/Core/DenseCoeffsBase.h +685 -0
- roboticstoolbox/core/Eigen/src/Core/DenseStorage.h +652 -0
- roboticstoolbox/core/Eigen/src/Core/Diagonal.h +258 -0
- roboticstoolbox/core/Eigen/src/Core/DiagonalMatrix.h +391 -0
- roboticstoolbox/core/Eigen/src/Core/DiagonalProduct.h +28 -0
- roboticstoolbox/core/Eigen/src/Core/Dot.h +318 -0
- roboticstoolbox/core/Eigen/src/Core/EigenBase.h +160 -0
- roboticstoolbox/core/Eigen/src/Core/ForceAlignedAccess.h +150 -0
- roboticstoolbox/core/Eigen/src/Core/Fuzzy.h +155 -0
- roboticstoolbox/core/Eigen/src/Core/GeneralProduct.h +465 -0
- roboticstoolbox/core/Eigen/src/Core/GenericPacketMath.h +1040 -0
- roboticstoolbox/core/Eigen/src/Core/GlobalFunctions.h +194 -0
- roboticstoolbox/core/Eigen/src/Core/IO.h +258 -0
- roboticstoolbox/core/Eigen/src/Core/IndexedView.h +237 -0
- roboticstoolbox/core/Eigen/src/Core/Inverse.h +117 -0
- roboticstoolbox/core/Eigen/src/Core/Map.h +171 -0
- roboticstoolbox/core/Eigen/src/Core/MapBase.h +310 -0
- roboticstoolbox/core/Eigen/src/Core/MathFunctions.h +2057 -0
- roboticstoolbox/core/Eigen/src/Core/MathFunctionsImpl.h +200 -0
- roboticstoolbox/core/Eigen/src/Core/Matrix.h +565 -0
- roboticstoolbox/core/Eigen/src/Core/MatrixBase.h +547 -0
- roboticstoolbox/core/Eigen/src/Core/NestByValue.h +85 -0
- roboticstoolbox/core/Eigen/src/Core/NoAlias.h +109 -0
- roboticstoolbox/core/Eigen/src/Core/NumTraits.h +335 -0
- roboticstoolbox/core/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
- roboticstoolbox/core/Eigen/src/Core/PermutationMatrix.h +605 -0
- roboticstoolbox/core/Eigen/src/Core/PlainObjectBase.h +1128 -0
- roboticstoolbox/core/Eigen/src/Core/Product.h +191 -0
- roboticstoolbox/core/Eigen/src/Core/ProductEvaluators.h +1179 -0
- roboticstoolbox/core/Eigen/src/Core/Random.h +218 -0
- roboticstoolbox/core/Eigen/src/Core/Redux.h +515 -0
- roboticstoolbox/core/Eigen/src/Core/Ref.h +381 -0
- roboticstoolbox/core/Eigen/src/Core/Replicate.h +142 -0
- roboticstoolbox/core/Eigen/src/Core/Reshaped.h +454 -0
- roboticstoolbox/core/Eigen/src/Core/ReturnByValue.h +119 -0
- roboticstoolbox/core/Eigen/src/Core/Reverse.h +217 -0
- roboticstoolbox/core/Eigen/src/Core/Select.h +164 -0
- roboticstoolbox/core/Eigen/src/Core/SelfAdjointView.h +365 -0
- roboticstoolbox/core/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
- roboticstoolbox/core/Eigen/src/Core/Solve.h +188 -0
- roboticstoolbox/core/Eigen/src/Core/SolveTriangular.h +235 -0
- roboticstoolbox/core/Eigen/src/Core/SolverBase.h +168 -0
- roboticstoolbox/core/Eigen/src/Core/StableNorm.h +251 -0
- roboticstoolbox/core/Eigen/src/Core/StlIterators.h +463 -0
- roboticstoolbox/core/Eigen/src/Core/Stride.h +116 -0
- roboticstoolbox/core/Eigen/src/Core/Swap.h +68 -0
- roboticstoolbox/core/Eigen/src/Core/Transpose.h +464 -0
- roboticstoolbox/core/Eigen/src/Core/Transpositions.h +386 -0
- roboticstoolbox/core/Eigen/src/Core/TriangularMatrix.h +1001 -0
- roboticstoolbox/core/Eigen/src/Core/VectorBlock.h +96 -0
- roboticstoolbox/core/Eigen/src/Core/VectorwiseOp.h +784 -0
- roboticstoolbox/core/Eigen/src/Core/Visitor.h +381 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX/Complex.h +372 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
- roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
- roboticstoolbox/core/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/Half.h +942 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/Settings.h +49 -0
- roboticstoolbox/core/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
- roboticstoolbox/core/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
- roboticstoolbox/core/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
- roboticstoolbox/core/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
- roboticstoolbox/core/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
- roboticstoolbox/core/Eigen/src/Core/arch/MSA/Complex.h +648 -0
- roboticstoolbox/core/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
- roboticstoolbox/core/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
- roboticstoolbox/core/Eigen/src/Core/arch/NEON/Complex.h +584 -0
- roboticstoolbox/core/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
- roboticstoolbox/core/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
- roboticstoolbox/core/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
- roboticstoolbox/core/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SSE/Complex.h +351 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
- roboticstoolbox/core/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
- roboticstoolbox/core/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
- roboticstoolbox/core/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
- roboticstoolbox/core/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
- roboticstoolbox/core/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
- roboticstoolbox/core/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
- roboticstoolbox/core/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
- roboticstoolbox/core/Eigen/src/Core/functors/StlFunctors.h +166 -0
- roboticstoolbox/core/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
- roboticstoolbox/core/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
- roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
- roboticstoolbox/core/Eigen/src/Core/products/Parallelizer.h +180 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
- roboticstoolbox/core/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
- roboticstoolbox/core/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
- roboticstoolbox/core/Eigen/src/Core/util/BlasUtil.h +583 -0
- roboticstoolbox/core/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
- roboticstoolbox/core/Eigen/src/Core/util/Constants.h +563 -0
- roboticstoolbox/core/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
- roboticstoolbox/core/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
- roboticstoolbox/core/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
- roboticstoolbox/core/Eigen/src/Core/util/IntegralConstant.h +272 -0
- roboticstoolbox/core/Eigen/src/Core/util/MKL_support.h +137 -0
- roboticstoolbox/core/Eigen/src/Core/util/Macros.h +1464 -0
- roboticstoolbox/core/Eigen/src/Core/util/Memory.h +1163 -0
- roboticstoolbox/core/Eigen/src/Core/util/Meta.h +812 -0
- roboticstoolbox/core/Eigen/src/Core/util/NonMPL2.h +3 -0
- roboticstoolbox/core/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
- roboticstoolbox/core/Eigen/src/Core/util/ReshapedHelper.h +51 -0
- roboticstoolbox/core/Eigen/src/Core/util/StaticAssert.h +221 -0
- roboticstoolbox/core/Eigen/src/Core/util/SymbolicIndex.h +293 -0
- roboticstoolbox/core/Eigen/src/Core/util/XprHelper.h +856 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/RealQZ.h +657 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/RealSchur.h +558 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
- roboticstoolbox/core/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
- roboticstoolbox/core/Eigen/src/Geometry/AlignedBox.h +486 -0
- roboticstoolbox/core/Eigen/src/Geometry/AngleAxis.h +247 -0
- roboticstoolbox/core/Eigen/src/Geometry/EulerAngles.h +114 -0
- roboticstoolbox/core/Eigen/src/Geometry/Homogeneous.h +501 -0
- roboticstoolbox/core/Eigen/src/Geometry/Hyperplane.h +282 -0
- roboticstoolbox/core/Eigen/src/Geometry/OrthoMethods.h +235 -0
- roboticstoolbox/core/Eigen/src/Geometry/ParametrizedLine.h +232 -0
- roboticstoolbox/core/Eigen/src/Geometry/Quaternion.h +870 -0
- roboticstoolbox/core/Eigen/src/Geometry/Rotation2D.h +199 -0
- roboticstoolbox/core/Eigen/src/Geometry/RotationBase.h +206 -0
- roboticstoolbox/core/Eigen/src/Geometry/Scaling.h +188 -0
- roboticstoolbox/core/Eigen/src/Geometry/Transform.h +1563 -0
- roboticstoolbox/core/Eigen/src/Geometry/Translation.h +202 -0
- roboticstoolbox/core/Eigen/src/Geometry/Umeyama.h +166 -0
- roboticstoolbox/core/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
- roboticstoolbox/core/Eigen/src/Householder/BlockHouseholder.h +110 -0
- roboticstoolbox/core/Eigen/src/Householder/Householder.h +176 -0
- roboticstoolbox/core/Eigen/src/Householder/HouseholderSequence.h +545 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
- roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
- roboticstoolbox/core/Eigen/src/Jacobi/Jacobi.h +483 -0
- roboticstoolbox/core/Eigen/src/KLUSupport/KLUSupport.h +358 -0
- roboticstoolbox/core/Eigen/src/LU/Determinant.h +117 -0
- roboticstoolbox/core/Eigen/src/LU/FullPivLU.h +877 -0
- roboticstoolbox/core/Eigen/src/LU/InverseImpl.h +432 -0
- roboticstoolbox/core/Eigen/src/LU/PartialPivLU.h +624 -0
- roboticstoolbox/core/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
- roboticstoolbox/core/Eigen/src/LU/arch/InverseSize4.h +351 -0
- roboticstoolbox/core/Eigen/src/MetisSupport/MetisSupport.h +137 -0
- roboticstoolbox/core/Eigen/src/OrderingMethods/Amd.h +435 -0
- roboticstoolbox/core/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
- roboticstoolbox/core/Eigen/src/OrderingMethods/Ordering.h +153 -0
- roboticstoolbox/core/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
- roboticstoolbox/core/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
- roboticstoolbox/core/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
- roboticstoolbox/core/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
- roboticstoolbox/core/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
- roboticstoolbox/core/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
- roboticstoolbox/core/Eigen/src/QR/HouseholderQR.h +434 -0
- roboticstoolbox/core/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
- roboticstoolbox/core/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
- roboticstoolbox/core/Eigen/src/SVD/BDCSVD.h +1366 -0
- roboticstoolbox/core/Eigen/src/SVD/JacobiSVD.h +812 -0
- roboticstoolbox/core/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
- roboticstoolbox/core/Eigen/src/SVD/SVDBase.h +376 -0
- roboticstoolbox/core/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
- roboticstoolbox/core/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
- roboticstoolbox/core/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
- roboticstoolbox/core/Eigen/src/SparseCore/AmbiVector.h +378 -0
- roboticstoolbox/core/Eigen/src/SparseCore/CompressedStorage.h +274 -0
- roboticstoolbox/core/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
- roboticstoolbox/core/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseAssign.h +270 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseBlock.h +571 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseColEtree.h +206 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseDot.h +98 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseMap.h +305 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparsePermutation.h +178 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseProduct.h +181 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseRedux.h +49 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseRef.h +397 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseTranspose.h +92 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseUtil.h +186 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseVector.h +478 -0
- roboticstoolbox/core/Eigen/src/SparseCore/SparseView.h +254 -0
- roboticstoolbox/core/Eigen/src/SparseCore/TriangularSolver.h +315 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU.h +923 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
- roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
- roboticstoolbox/core/Eigen/src/SparseQR/SparseQR.h +758 -0
- roboticstoolbox/core/Eigen/src/StlSupport/StdDeque.h +116 -0
- roboticstoolbox/core/Eigen/src/StlSupport/StdList.h +106 -0
- roboticstoolbox/core/Eigen/src/StlSupport/StdVector.h +131 -0
- roboticstoolbox/core/Eigen/src/StlSupport/details.h +84 -0
- roboticstoolbox/core/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
- roboticstoolbox/core/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
- roboticstoolbox/core/Eigen/src/misc/Image.h +82 -0
- roboticstoolbox/core/Eigen/src/misc/Kernel.h +79 -0
- roboticstoolbox/core/Eigen/src/misc/RealSvd2x2.h +55 -0
- roboticstoolbox/core/Eigen/src/misc/blas.h +440 -0
- roboticstoolbox/core/Eigen/src/misc/lapack.h +152 -0
- roboticstoolbox/core/Eigen/src/misc/lapacke.h +16292 -0
- roboticstoolbox/core/Eigen/src/misc/lapacke_mangling.h +17 -0
- roboticstoolbox/core/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
- roboticstoolbox/core/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
- roboticstoolbox/core/Eigen/src/plugins/BlockMethods.h +1442 -0
- roboticstoolbox/core/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
- roboticstoolbox/core/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
- roboticstoolbox/core/Eigen/src/plugins/IndexedViewMethods.h +262 -0
- roboticstoolbox/core/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
- roboticstoolbox/core/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
- roboticstoolbox/core/Eigen/src/plugins/ReshapedMethods.h +149 -0
- roboticstoolbox/core/fknm.cpp +1557 -0
- roboticstoolbox/core/fknm.h +55 -0
- roboticstoolbox/core/frne.c +351 -0
- roboticstoolbox/core/frne.h +96 -0
- roboticstoolbox/core/ik.cpp +301 -0
- roboticstoolbox/core/ik.h +59 -0
- roboticstoolbox/core/linalg.cpp +316 -0
- roboticstoolbox/core/linalg.h +64 -0
- roboticstoolbox/core/methods.cpp +372 -0
- roboticstoolbox/core/methods.h +32 -0
- roboticstoolbox/core/ne.c +493 -0
- roboticstoolbox/core/structs.cpp +24 -0
- roboticstoolbox/core/structs.h +62 -0
- roboticstoolbox/core/vmath.c +163 -0
- roboticstoolbox/core/vmath.h +32 -0
- roboticstoolbox/fknm.cp312-win_amd64.pyd +0 -0
- roboticstoolbox/frne.cp312-win_amd64.pyd +0 -0
- roboticstoolbox/mobile/Animations.py +485 -0
- roboticstoolbox/mobile/Bug2.py +455 -0
- roboticstoolbox/mobile/CurvaturePolyPlanner.py +179 -0
- roboticstoolbox/mobile/DistanceTransformPlanner.py +395 -0
- roboticstoolbox/mobile/DstarPlanner.py +591 -0
- roboticstoolbox/mobile/DubinsPlanner.py +474 -0
- roboticstoolbox/mobile/EKF.py +1617 -0
- roboticstoolbox/mobile/LatticePlanner.py +419 -0
- roboticstoolbox/mobile/OccGrid.py +613 -0
- roboticstoolbox/mobile/PRMPlanner.py +348 -0
- roboticstoolbox/mobile/ParticleFilter.py +706 -0
- roboticstoolbox/mobile/PlannerBase.py +1009 -0
- roboticstoolbox/mobile/PoseGraph.py +544 -0
- roboticstoolbox/mobile/QuinticPolyPlanner.py +349 -0
- roboticstoolbox/mobile/RRTPlanner.py +359 -0
- roboticstoolbox/mobile/ReedsSheppPlanner.py +545 -0
- roboticstoolbox/mobile/Vehicle.py +1909 -0
- roboticstoolbox/mobile/__init__.py +193 -0
- roboticstoolbox/mobile/drivers.py +390 -0
- roboticstoolbox/mobile/landmarkmap.py +181 -0
- roboticstoolbox/mobile/sensors.py +771 -0
- roboticstoolbox/models/DH/AL5D.py +121 -0
- roboticstoolbox/models/DH/Ball.py +87 -0
- roboticstoolbox/models/DH/Baxter.py +91 -0
- roboticstoolbox/models/DH/Cobra600.py +63 -0
- roboticstoolbox/models/DH/Coil.py +80 -0
- roboticstoolbox/models/DH/Hyper.py +83 -0
- roboticstoolbox/models/DH/Hyper3d.py +85 -0
- roboticstoolbox/models/DH/IRB140.py +159 -0
- roboticstoolbox/models/DH/Jaco.py +102 -0
- roboticstoolbox/models/DH/KR5.py +112 -0
- roboticstoolbox/models/DH/LWR4.py +85 -0
- roboticstoolbox/models/DH/Mico.py +102 -0
- roboticstoolbox/models/DH/Orion5.py +91 -0
- roboticstoolbox/models/DH/P8.py +80 -0
- roboticstoolbox/models/DH/Panda.py +178 -0
- roboticstoolbox/models/DH/Planar2.py +69 -0
- roboticstoolbox/models/DH/Planar3.py +51 -0
- roboticstoolbox/models/DH/Puma560.py +326 -0
- roboticstoolbox/models/DH/README.md +216 -0
- roboticstoolbox/models/DH/Sawyer.py +85 -0
- roboticstoolbox/models/DH/Stanford.py +147 -0
- roboticstoolbox/models/DH/TwoLink.py +109 -0
- roboticstoolbox/models/DH/UR10.py +124 -0
- roboticstoolbox/models/DH/UR3.py +98 -0
- roboticstoolbox/models/DH/UR5.py +98 -0
- roboticstoolbox/models/DH/Uprighttl.py +24 -0
- roboticstoolbox/models/DH/__init__.py +52 -0
- roboticstoolbox/models/ETS/Frankie.py +90 -0
- roboticstoolbox/models/ETS/GenericSeven.py +54 -0
- roboticstoolbox/models/ETS/Omni.py +74 -0
- roboticstoolbox/models/ETS/Panda.py +69 -0
- roboticstoolbox/models/ETS/Planar2.py +49 -0
- roboticstoolbox/models/ETS/Planar_Y.py +65 -0
- roboticstoolbox/models/ETS/Puma560.py +69 -0
- roboticstoolbox/models/ETS/XYPanda.py +84 -0
- roboticstoolbox/models/ETS/__init__.py +20 -0
- roboticstoolbox/models/README.md +9 -0
- roboticstoolbox/models/URDF/AL5D.py +54 -0
- roboticstoolbox/models/URDF/Fetch.py +70 -0
- roboticstoolbox/models/URDF/FetchCamera.py +71 -0
- roboticstoolbox/models/URDF/Frankie.py +75 -0
- roboticstoolbox/models/URDF/FrankieOmni.py +94 -0
- roboticstoolbox/models/URDF/KinovaGen3.py +71 -0
- roboticstoolbox/models/URDF/LBR.py +59 -0
- roboticstoolbox/models/URDF/Mico.py +68 -0
- roboticstoolbox/models/URDF/PR2.py +64 -0
- roboticstoolbox/models/URDF/Panda.py +67 -0
- roboticstoolbox/models/URDF/Puma560.py +97 -0
- roboticstoolbox/models/URDF/UR10.py +53 -0
- roboticstoolbox/models/URDF/UR3.py +53 -0
- roboticstoolbox/models/URDF/UR5.py +74 -0
- roboticstoolbox/models/URDF/Valkyrie.py +84 -0
- roboticstoolbox/models/URDF/YuMi.py +109 -0
- roboticstoolbox/models/URDF/__init__.py +53 -0
- roboticstoolbox/models/URDF/px100.py +56 -0
- roboticstoolbox/models/URDF/px150.py +56 -0
- roboticstoolbox/models/URDF/rx150.py +56 -0
- roboticstoolbox/models/URDF/rx200.py +56 -0
- roboticstoolbox/models/URDF/vx300.py +56 -0
- roboticstoolbox/models/URDF/vx300s.py +56 -0
- roboticstoolbox/models/URDF/wx200.py +56 -0
- roboticstoolbox/models/URDF/wx250.py +56 -0
- roboticstoolbox/models/URDF/wx250s.py +56 -0
- roboticstoolbox/models/__init__.py +7 -0
- roboticstoolbox/models/list.py +119 -0
- roboticstoolbox/robot/BaseRobot.py +3133 -0
- roboticstoolbox/robot/DHFactor.py +522 -0
- roboticstoolbox/robot/DHLink.py +981 -0
- roboticstoolbox/robot/DHRobot.py +2520 -0
- roboticstoolbox/robot/Dynamics.py +1620 -0
- roboticstoolbox/robot/ELink.py +23 -0
- roboticstoolbox/robot/ERobot.py +25 -0
- roboticstoolbox/robot/ET.py +1097 -0
- roboticstoolbox/robot/ETS.py +3542 -0
- roboticstoolbox/robot/Gripper.py +282 -0
- roboticstoolbox/robot/IK.py +1522 -0
- roboticstoolbox/robot/Link.py +1698 -0
- roboticstoolbox/robot/PoERobot.py +348 -0
- roboticstoolbox/robot/Robot.py +2100 -0
- roboticstoolbox/robot/RobotKinematics.py +1725 -0
- roboticstoolbox/robot/RobotProto.py +92 -0
- roboticstoolbox/robot/__init__.py +54 -0
- roboticstoolbox/tools/DHFactor.py +375 -0
- roboticstoolbox/tools/Ticker.py +53 -0
- roboticstoolbox/tools/__init__.py +54 -0
- roboticstoolbox/tools/data.py +187 -0
- roboticstoolbox/tools/jsingu.py +51 -0
- roboticstoolbox/tools/null.py +48 -0
- roboticstoolbox/tools/numerical.py +96 -0
- roboticstoolbox/tools/p_servo.py +106 -0
- roboticstoolbox/tools/params.py +11 -0
- roboticstoolbox/tools/plot.py +109 -0
- roboticstoolbox/tools/trajectory.py +1152 -0
- roboticstoolbox/tools/types.py +13 -0
- roboticstoolbox/tools/urdf/__init__.py +45 -0
- roboticstoolbox/tools/urdf/tests/data/ur5.urdf +341 -0
- roboticstoolbox/tools/urdf/tests/test_urdf.py +116 -0
- roboticstoolbox/tools/urdf/urdf.py +1976 -0
- roboticstoolbox/tools/urdf/utils.py +50 -0
- roboticstoolbox/tools/xacro/__init__.py +1148 -0
- roboticstoolbox/tools/xacro/cli.py +128 -0
- roboticstoolbox/tools/xacro/color.py +66 -0
- roboticstoolbox/tools/xacro/tests/CMakeLists.txt +4 -0
- roboticstoolbox/tools/xacro/tests/broken.xacro +1 -0
- roboticstoolbox/tools/xacro/tests/emoji.xacro +5 -0
- roboticstoolbox/tools/xacro/tests/include1.xacro +4 -0
- roboticstoolbox/tools/xacro/tests/include1.xml +1 -0
- roboticstoolbox/tools/xacro/tests/include2.xacro +4 -0
- roboticstoolbox/tools/xacro/tests/include2.xml +1 -0
- roboticstoolbox/tools/xacro/tests/robots/README +4 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/base_v0/base.gazebo.xacro +59 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/base_v0/base.transmission.xacro +24 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/base_v0/base.urdf.xacro +264 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/common.xacro +71 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/forearm_v0/forearm.gazebo.xacro +36 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/forearm_v0/forearm.transmission.xacro +20 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/forearm_v0/forearm.urdf.xacro +130 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/gazebo/gazebo.urdf.xacro +24 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/gripper_v0/gripper.gazebo.xacro +288 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/gripper_v0/gripper.transmission.xacro +50 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/gripper_v0/gripper.urdf.xacro +374 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/head_v0/head.gazebo.xacro +16 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/head_v0/head.transmission.xacro +34 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/head_v0/head.urdf.xacro +147 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/materials.urdf.xacro +52 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/pr2.urdf.xacro +157 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/pr2_1.11.4.xml +3781 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/double_stereo_camera.gazebo.xacro +16 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/double_stereo_camera.urdf.xacro +61 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/head_sensor_package.gazebo.xacro +20 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/head_sensor_package.urdf.xacro +63 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/hokuyo_lx30_laser.gazebo.xacro +39 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/hokuyo_lx30_laser.urdf.xacro +27 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_camera.gazebo.xacro +87 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_camera.urdf.xacro +55 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_prosilica_camera.gazebo.xacro +193 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_prosilica_camera.urdf.xacro +181 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/microstrain_3dmgx2_imu.gazebo.xacro +20 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/microstrain_3dmgx2_imu.urdf.xacro +25 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/projector_wg6802418.gazebo.xacro +31 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/projector_wg6802418.urdf.xacro +42 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/prosilica_gc2450_camera.gazebo.xacro +43 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/prosilica_gc2450_camera.urdf.xacro +49 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/stereo_camera.gazebo.xacro +23 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/stereo_camera.urdf.xacro +71 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/wge100_camera.gazebo.xacro +46 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/wge100_camera.urdf.xacro +47 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/shoulder_v0/shoulder.gazebo.xacro +40 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/shoulder_v0/shoulder.transmission.xacro +35 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/shoulder_v0/shoulder.urdf.xacro +167 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/tilting_laser_v0/tilting_laser.gazebo.xacro +11 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/tilting_laser_v0/tilting_laser.transmission.xacro +14 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/tilting_laser_v0/tilting_laser.urdf.xacro +60 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/torso_v0/torso.gazebo.xacro +37 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/torso_v0/torso.transmission.xacro +22 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/torso_v0/torso.urdf.xacro +122 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/upper_arm_v0/upper_arm.gazebo.xacro +39 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/upper_arm_v0/upper_arm.transmission.xacro +28 -0
- roboticstoolbox/tools/xacro/tests/robots/pr2/upper_arm_v0/upper_arm.urdf.xacro +173 -0
- roboticstoolbox/tools/xacro/tests/settings.yaml +9 -0
- roboticstoolbox/tools/xacro/tests/subdir/foo.xacro +3 -0
- roboticstoolbox/tools/xacro/tests/subdir/include-recursive.xacro +5 -0
- roboticstoolbox/tools/xacro/tests/subdir/include1.xml +1 -0
- roboticstoolbox/tools/xacro/tests/test_xacro.py +1418 -0
- roboticstoolbox/tools/xacro/xmlutils.py +152 -0
- roboticstoolbox_python-1.3.0.dist-info/METADATA +552 -0
- roboticstoolbox_python-1.3.0.dist-info/RECORD +673 -0
- roboticstoolbox_python-1.3.0.dist-info/WHEEL +5 -0
- roboticstoolbox_python-1.3.0.dist-info/entry_points.txt +6 -0
- roboticstoolbox_python-1.3.0.dist-info/licenses/LICENSE +21 -0
- spatialgeometry/__init__.py +32 -0
- spatialgeometry/geom/CollisionShape.py +419 -0
- spatialgeometry/geom/SceneGroup.py +26 -0
- spatialgeometry/geom/SceneNode.py +315 -0
- spatialgeometry/geom/Shape.py +420 -0
- spatialgeometry/geom/__init__.py +26 -0
- spatialgeometry/scene.py +107 -0
- spatialgeometry/tools/__init__.py +0 -0
- spatialgeometry/tools/stdout_supress.py +302 -0
|
@@ -0,0 +1,613 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
import matplotlib.pyplot as plt
|
|
3
|
+
from spatialmath import base
|
|
4
|
+
import scipy.ndimage as sp
|
|
5
|
+
from abc import ABC
|
|
6
|
+
import spatialmath.base as smb
|
|
7
|
+
|
|
8
|
+
from spatialmath.geom2d import Polygon2
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class BaseMap(ABC):
|
|
12
|
+
def __init__(self, workspace=None, name=None, **unused):
|
|
13
|
+
"""
|
|
14
|
+
Abstract base class for maps
|
|
15
|
+
|
|
16
|
+
:param workspace: dimensions of 2D plot area, defaults to (-10:10) x (-10:10),
|
|
17
|
+
see :func:`~spatialmath.base.graphics.plotvol2`
|
|
18
|
+
:type workspace: float, array_like(2), array_like(4)
|
|
19
|
+
:param name: nae of the map, defaults to None
|
|
20
|
+
:type name: str, optional
|
|
21
|
+
|
|
22
|
+
The workspace can be specified in several ways:
|
|
23
|
+
|
|
24
|
+
============== ======= =======
|
|
25
|
+
``workspace`` x-range y-range
|
|
26
|
+
============== ======= =======
|
|
27
|
+
A (scalar) -A:A -A:A
|
|
28
|
+
[A, B] A:B A:B
|
|
29
|
+
[A, B, C, D] A:B C:D
|
|
30
|
+
============== ======= =======
|
|
31
|
+
"""
|
|
32
|
+
if workspace is not None:
|
|
33
|
+
workspace = smb.expand_dims(workspace)
|
|
34
|
+
self._workspace = workspace
|
|
35
|
+
self.dx = workspace[1] - workspace[0]
|
|
36
|
+
self.dy = workspace[3] - workspace[2]
|
|
37
|
+
self._name = name
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class BaseOccupancyGrid(BaseMap):
|
|
41
|
+
def __init__(self, grid=None, origin=(0, 0), value=0, cellsize=1, **kwargs):
|
|
42
|
+
"""
|
|
43
|
+
Occupancy grid (superclass)
|
|
44
|
+
|
|
45
|
+
:param grid: occupancy grid as a NumPy array
|
|
46
|
+
:type grid: ndarray(N,M)
|
|
47
|
+
:param value: initial value of cells
|
|
48
|
+
:type value: any, optional
|
|
49
|
+
:param origin: world coordinates of the grid element [0,0], defaults to (0, 0)
|
|
50
|
+
:type origin: array_like(2), optional
|
|
51
|
+
:param cellsize: cell size, defaults to 1
|
|
52
|
+
:type cellsize: float, optional
|
|
53
|
+
:param kwargs: options passed to :class:`~roboticstoolbox.mobile.OccGrid.BaseMap`
|
|
54
|
+
|
|
55
|
+
This object supports a user-defined coordinate system and grid size.
|
|
56
|
+
World coordinates are converted to grid coordinates to lookup the
|
|
57
|
+
occupancy status.
|
|
58
|
+
|
|
59
|
+
The grid can be initialized by:
|
|
60
|
+
|
|
61
|
+
- a 2D NumPy array
|
|
62
|
+
- specifying ``workspace`` and ``value`` arguments
|
|
63
|
+
|
|
64
|
+
"""
|
|
65
|
+
super().__init__(**kwargs)
|
|
66
|
+
|
|
67
|
+
if grid is not None:
|
|
68
|
+
self._grid = grid
|
|
69
|
+
self._origin = smb.getvector(origin, 2)
|
|
70
|
+
|
|
71
|
+
elif self._workspace is not None:
|
|
72
|
+
self._grid = np.full(
|
|
73
|
+
np.floor(np.r_[self.dx, self.dy] / cellsize).astype(int) + 1, value
|
|
74
|
+
)
|
|
75
|
+
self._origin = np.r_[self._workspace[0], self._workspace[2]]
|
|
76
|
+
|
|
77
|
+
self._cellsize = cellsize
|
|
78
|
+
|
|
79
|
+
def copy(self):
|
|
80
|
+
"""
|
|
81
|
+
Copy an occupancy grid (superclass)
|
|
82
|
+
|
|
83
|
+
:return: copy of the ocupancy grid
|
|
84
|
+
:rtype: OccGrid
|
|
85
|
+
"""
|
|
86
|
+
return self.__class__(
|
|
87
|
+
self._grid.copy(),
|
|
88
|
+
cellsize=self._cellsize,
|
|
89
|
+
origin=self._origin,
|
|
90
|
+
name=self._name,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
def __repr__(self):
|
|
94
|
+
return str(self)
|
|
95
|
+
|
|
96
|
+
def __str__(self):
|
|
97
|
+
"""
|
|
98
|
+
Compact string description of occupancy grid (superclass)
|
|
99
|
+
|
|
100
|
+
:return: summary of occupancy grid characteristics
|
|
101
|
+
:rtype: str
|
|
102
|
+
"""
|
|
103
|
+
s = self.__class__.__name__
|
|
104
|
+
if self._name is not None:
|
|
105
|
+
s += f"[{self._name}]"
|
|
106
|
+
s += f": {self._grid.shape[1]} x {self._grid.shape[0]}"
|
|
107
|
+
s += f", cell size={self._cellsize}"
|
|
108
|
+
s += f", x = [{self.xmin}, {self.xmax}], y = [{self.ymin}, {self.ymax}]"
|
|
109
|
+
return s
|
|
110
|
+
|
|
111
|
+
@property
|
|
112
|
+
def grid(self):
|
|
113
|
+
"""
|
|
114
|
+
Occupancy grid as a NumPy array (superclass)
|
|
115
|
+
|
|
116
|
+
:return: binary occupancy grid
|
|
117
|
+
:rtype: ndarray(N,M) of bool
|
|
118
|
+
|
|
119
|
+
If :meth:`inflate` has been called, this will return the inflated
|
|
120
|
+
occupancy grid.
|
|
121
|
+
"""
|
|
122
|
+
return self._grid
|
|
123
|
+
|
|
124
|
+
@property
|
|
125
|
+
def xmin(self):
|
|
126
|
+
"""
|
|
127
|
+
Minimum x-coordinate of this grid (superclass)
|
|
128
|
+
|
|
129
|
+
:return: minimum world x-coordinate
|
|
130
|
+
:rtype: float
|
|
131
|
+
"""
|
|
132
|
+
return self._origin[0]
|
|
133
|
+
|
|
134
|
+
@property
|
|
135
|
+
def xmax(self):
|
|
136
|
+
"""
|
|
137
|
+
Maximum x-coordinate of this grid (superclass)
|
|
138
|
+
|
|
139
|
+
:return: maximum world x-coordinate
|
|
140
|
+
:rtype: float
|
|
141
|
+
"""
|
|
142
|
+
return (self._grid.shape[1] - 1) * self._cellsize + self._origin[0]
|
|
143
|
+
|
|
144
|
+
@property
|
|
145
|
+
def ymin(self):
|
|
146
|
+
"""
|
|
147
|
+
Minimum y-coordinate of this grid (superclass)
|
|
148
|
+
|
|
149
|
+
:return: minimum world y-coordinate
|
|
150
|
+
:rtype: float
|
|
151
|
+
"""
|
|
152
|
+
return self._origin[1]
|
|
153
|
+
|
|
154
|
+
@property
|
|
155
|
+
def ymax(self):
|
|
156
|
+
"""
|
|
157
|
+
Maximum y-coordinate of this grid (superclass)
|
|
158
|
+
|
|
159
|
+
:return: maximum world y-coordinate
|
|
160
|
+
:rtype: float
|
|
161
|
+
"""
|
|
162
|
+
return (self._grid.shape[0] - 1) * self._cellsize + self._origin[1]
|
|
163
|
+
|
|
164
|
+
@property
|
|
165
|
+
def shape(self):
|
|
166
|
+
"""
|
|
167
|
+
Shape of the occupancy grid array (superclass)
|
|
168
|
+
|
|
169
|
+
:return: shape of the occupancy grid array
|
|
170
|
+
:rtype: 2-tuple
|
|
171
|
+
|
|
172
|
+
This is the shape of the NumPy array that holds the occupancy grid.
|
|
173
|
+
"""
|
|
174
|
+
return self._grid.shape
|
|
175
|
+
|
|
176
|
+
@property
|
|
177
|
+
def maxdim(self):
|
|
178
|
+
"""
|
|
179
|
+
Maximum dimension of grid in world coordinates (superclass)
|
|
180
|
+
|
|
181
|
+
:return: maximum side length of the occupancy grid
|
|
182
|
+
:rtype: float
|
|
183
|
+
"""
|
|
184
|
+
return max(self.grid.shape) * self._cellsize
|
|
185
|
+
|
|
186
|
+
@property
|
|
187
|
+
def workspace(self):
|
|
188
|
+
"""
|
|
189
|
+
Bounds of the occupancy grid in world coordinates (superclass)
|
|
190
|
+
|
|
191
|
+
:return: workspace bounds [xmin, xmax, ymin, ymax]
|
|
192
|
+
:rtype: ndarray(4)
|
|
193
|
+
|
|
194
|
+
Returns the bounds of the occupancy grid in world coordinates.
|
|
195
|
+
"""
|
|
196
|
+
return np.r_[self.xmin, self.xmax, self.ymin, self.ymax]
|
|
197
|
+
|
|
198
|
+
@property
|
|
199
|
+
def name(self):
|
|
200
|
+
"""
|
|
201
|
+
Occupancy grid name (superclass)
|
|
202
|
+
|
|
203
|
+
:return: name of the occupancy grid
|
|
204
|
+
:rtype: str
|
|
205
|
+
"""
|
|
206
|
+
return self._name
|
|
207
|
+
|
|
208
|
+
@name.setter
|
|
209
|
+
def name(self, name):
|
|
210
|
+
"""
|
|
211
|
+
Set occupancy grid name (superclass)
|
|
212
|
+
|
|
213
|
+
:param name: new name of the occupancy grid
|
|
214
|
+
:type name: str
|
|
215
|
+
"""
|
|
216
|
+
self._name = name
|
|
217
|
+
|
|
218
|
+
def set(self, region, value):
|
|
219
|
+
"""
|
|
220
|
+
Set region of map (superclass)
|
|
221
|
+
|
|
222
|
+
:param region: The region [xmin, ymin, xmax, ymax]
|
|
223
|
+
:type region: array_like(4)
|
|
224
|
+
:param value: value to set cells to
|
|
225
|
+
:type value: int, bool, float
|
|
226
|
+
"""
|
|
227
|
+
bl = self.w2g([region[0], region[2]])
|
|
228
|
+
tr = self.w2g([region[1], region[3]])
|
|
229
|
+
self.grid[bl[1] : tr[1] + 1, bl[0] : tr[0] + 1] = value
|
|
230
|
+
|
|
231
|
+
def g2w(self, p):
|
|
232
|
+
"""
|
|
233
|
+
Convert grid coordinate to world coordinate (superclass)
|
|
234
|
+
|
|
235
|
+
:param p: grid coordinate (column, row)
|
|
236
|
+
:type p: array_like(2)
|
|
237
|
+
:return: world coordinate (x, y)
|
|
238
|
+
:rtype: ndarray(2)
|
|
239
|
+
|
|
240
|
+
The grid cell size and offset are used to convert occupancy grid
|
|
241
|
+
coordinate ``p`` to a world coordinate.
|
|
242
|
+
"""
|
|
243
|
+
p = smb.getvector(p, 2)
|
|
244
|
+
return p * self._cellsize + self._origin
|
|
245
|
+
|
|
246
|
+
def w2g(self, p):
|
|
247
|
+
"""
|
|
248
|
+
Convert world coordinate to grid coordinate (superclass)
|
|
249
|
+
|
|
250
|
+
:param p: world coordinate (x, y)
|
|
251
|
+
:type p: array_like(2)
|
|
252
|
+
:return: grid coordinate (column, row)
|
|
253
|
+
:rtype: ndarray(2)
|
|
254
|
+
|
|
255
|
+
The grid cell size and offset are used to convert ``p`` to an occupancy
|
|
256
|
+
grid coordinate. The grid coordinate is rounded and cast to integer
|
|
257
|
+
value. No check is made on the validity of the coordinate.
|
|
258
|
+
"""
|
|
259
|
+
return (np.round((p - self._origin) / self._cellsize)).astype(int)
|
|
260
|
+
|
|
261
|
+
def plot(self, map=None, ax=None, block=None, **kwargs):
|
|
262
|
+
"""
|
|
263
|
+
Plot the occupancy grid (superclass)
|
|
264
|
+
|
|
265
|
+
:param map: array which is plotted instead of the grid, must be same
|
|
266
|
+
size as the occupancy grid,defaults to None
|
|
267
|
+
:type map: ndarray(N,M), optional
|
|
268
|
+
:param ax: matplotlib axes to plot into, defaults to None
|
|
269
|
+
:type ax: Axes2D, optional
|
|
270
|
+
:param block: block until plot is dismissed, defaults to None
|
|
271
|
+
:type block: bool, optional
|
|
272
|
+
:param kwargs: arguments passed to ``imshow``
|
|
273
|
+
|
|
274
|
+
The grid is plotted as an image but with axes in world coordinates.
|
|
275
|
+
|
|
276
|
+
The grid is a NumPy boolean array which has values 0 (false=unoccupied)
|
|
277
|
+
and 1 (true=occupied). Passing a `cmap` option to imshow can be used
|
|
278
|
+
to control the displayed color of free space and obstacles.
|
|
279
|
+
|
|
280
|
+
"""
|
|
281
|
+
|
|
282
|
+
ax = smb.axes_logic(ax, 2)
|
|
283
|
+
|
|
284
|
+
if map is None:
|
|
285
|
+
map = self._grid
|
|
286
|
+
kwargs["extent"] = self.workspace
|
|
287
|
+
|
|
288
|
+
ax.imshow(map, origin="lower", interpolation=None, **kwargs)
|
|
289
|
+
ax.set_xlabel("x")
|
|
290
|
+
ax.set_ylabel("y")
|
|
291
|
+
if block is not None:
|
|
292
|
+
plt.show(block=block)
|
|
293
|
+
|
|
294
|
+
def line_w(self, p1, p2):
|
|
295
|
+
"""
|
|
296
|
+
Get index of cells along a line segment (superclass)
|
|
297
|
+
|
|
298
|
+
:param p1: start
|
|
299
|
+
:type p1: array_like(2)
|
|
300
|
+
:param p2: end
|
|
301
|
+
:type p2: array_like(2)
|
|
302
|
+
:return: index into grid
|
|
303
|
+
:rtype: ndarray(N)
|
|
304
|
+
|
|
305
|
+
Get the indices of cells along a line segment defined by the end
|
|
306
|
+
points given in world coordinates.
|
|
307
|
+
|
|
308
|
+
The returned indices can be applied to a raveled view of the grid.
|
|
309
|
+
|
|
310
|
+
:seealso: :meth:`ravel` :meth:`w2g`
|
|
311
|
+
"""
|
|
312
|
+
|
|
313
|
+
gp1 = self.w2g(p1)
|
|
314
|
+
gp2 = self.w2g(p2)
|
|
315
|
+
|
|
316
|
+
return self._line(gp1, gp2)
|
|
317
|
+
|
|
318
|
+
def _line(self, p1, p2):
|
|
319
|
+
|
|
320
|
+
x, y = smb.bresenham(p1, p2)
|
|
321
|
+
z = np.ravel_multi_index(np.vstack((y, x)), self.grid.shape)
|
|
322
|
+
return z
|
|
323
|
+
|
|
324
|
+
@property
|
|
325
|
+
def ravel(self):
|
|
326
|
+
"""
|
|
327
|
+
Ravel the grid (superclass)
|
|
328
|
+
|
|
329
|
+
:return: 1D view of the occupancy grid
|
|
330
|
+
:rtype: ndarray(N)
|
|
331
|
+
"""
|
|
332
|
+
return self._grid.reshape(-1)
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
class BinaryOccupancyGrid(BaseOccupancyGrid):
|
|
336
|
+
def __init__(self, grid=None, **kwargs):
|
|
337
|
+
"""
|
|
338
|
+
Create a binary occupancy grid instance
|
|
339
|
+
|
|
340
|
+
:param grid: occupancy grid as a NumPy array
|
|
341
|
+
:type grid: ndarray(N,M)
|
|
342
|
+
:param size: cell size, defaults to 1
|
|
343
|
+
:type size: float, optional
|
|
344
|
+
:param origin: world coordinates of the grid element [0,0], defaults to (0, 0)
|
|
345
|
+
:type origin: array_like(2), optional
|
|
346
|
+
:param kwargs: options passed to :class:`BaseMap`
|
|
347
|
+
|
|
348
|
+
The array is kept internally as a bool array. Cells are set to True
|
|
349
|
+
(occupied) corresponding to input values > 0.
|
|
350
|
+
|
|
351
|
+
This object supports a user-defined coordinate system and grid size.
|
|
352
|
+
World coordinates are converted to grid coordinates to lookup the
|
|
353
|
+
occupancy status.
|
|
354
|
+
|
|
355
|
+
Example:
|
|
356
|
+
|
|
357
|
+
.. runblock:: pycon
|
|
358
|
+
|
|
359
|
+
>>> from roboticstoolbox import BinaryOccupancyGrid
|
|
360
|
+
>>> import numpy as np
|
|
361
|
+
>>> og = BinaryOccupancyGrid(np.zeros((5,5)))
|
|
362
|
+
>>> print(og)
|
|
363
|
+
>>> og = BinaryOccupancyGrid(workspace=[-5,5], cellsize=0.1, value=0)
|
|
364
|
+
>>> print(og)
|
|
365
|
+
|
|
366
|
+
:seealso: :class:`OccupancyGrid`
|
|
367
|
+
"""
|
|
368
|
+
|
|
369
|
+
if grid is not None:
|
|
370
|
+
if isinstance(grid, np.ndarray):
|
|
371
|
+
grid = grid.astype(bool)
|
|
372
|
+
elif isinstance(grid, BinaryOccupancyGrid):
|
|
373
|
+
grid = grid.grid
|
|
374
|
+
else:
|
|
375
|
+
raise ValueError("argument must be NumPy array or BinaryOccupancyGrid")
|
|
376
|
+
|
|
377
|
+
super().__init__(grid=grid, **kwargs)
|
|
378
|
+
|
|
379
|
+
def __str__(self):
|
|
380
|
+
s = super().__str__()
|
|
381
|
+
|
|
382
|
+
ncells = np.prod(self._grid.shape)
|
|
383
|
+
nobs = self._grid.sum()
|
|
384
|
+
s += f", {nobs / ncells * 100:.1f}% occupied"
|
|
385
|
+
return s
|
|
386
|
+
|
|
387
|
+
def isoccupied(self, p):
|
|
388
|
+
"""
|
|
389
|
+
Test if coordinate is occupied
|
|
390
|
+
|
|
391
|
+
:param p: world coordinate (x, y)
|
|
392
|
+
:type p: array_like(2)
|
|
393
|
+
:return: occupancy status of corresponding grid cell
|
|
394
|
+
:rtype: bool
|
|
395
|
+
|
|
396
|
+
The grid cell size and offset are used to convert ``p`` to an occupancy
|
|
397
|
+
grid coordinate. The grid coordinate is rounded and cast to integer
|
|
398
|
+
value. If the coordinate is outside the bounds of the occupancy grid
|
|
399
|
+
it is considered to be occupied.
|
|
400
|
+
|
|
401
|
+
:seealso: :meth:`w2g`
|
|
402
|
+
"""
|
|
403
|
+
c, r = self.w2g(p)
|
|
404
|
+
try:
|
|
405
|
+
return self._grid[r, c]
|
|
406
|
+
except IndexError:
|
|
407
|
+
return True
|
|
408
|
+
|
|
409
|
+
def inflate(self, radius):
|
|
410
|
+
"""
|
|
411
|
+
Inflate obstales
|
|
412
|
+
|
|
413
|
+
:param radius: radius of circular structuring element in world units
|
|
414
|
+
:type radius: float
|
|
415
|
+
|
|
416
|
+
A circular structuring element is created and used to dilate the
|
|
417
|
+
stored occupancy grid.
|
|
418
|
+
|
|
419
|
+
Successive calls to ``inflate`` will compound the inflation.
|
|
420
|
+
|
|
421
|
+
:seealso: :func:`scipy.ndimage.binary_dilation`
|
|
422
|
+
"""
|
|
423
|
+
# Generate a circular structuring element
|
|
424
|
+
r = round(radius / self._cellsize)
|
|
425
|
+
Y, X = np.meshgrid(np.arange(-r, r + 1), np.arange(-r, r + 1))
|
|
426
|
+
SE = X**2 + Y**2 <= r**2
|
|
427
|
+
SE = SE.astype(int)
|
|
428
|
+
|
|
429
|
+
# do the inflation using SciPy
|
|
430
|
+
self._grid = sp.binary_dilation(self._grid, SE)
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
class OccupancyGrid(BaseOccupancyGrid):
|
|
434
|
+
"""
|
|
435
|
+
General occupancy grid
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
The elements of the array are floats and can represent occupancy
|
|
439
|
+
probability or traversal cost.
|
|
440
|
+
|
|
441
|
+
Example:
|
|
442
|
+
|
|
443
|
+
.. runblock:: pycon
|
|
444
|
+
|
|
445
|
+
>>> from roboticstoolbox import OccupancyGrid
|
|
446
|
+
>>> import numpy as np
|
|
447
|
+
>>> og = OccupancyGrid(np.zeros((5,5)))
|
|
448
|
+
>>> print(og)
|
|
449
|
+
>>> og = OccupancyGrid(workspace=[-5,5], cellsize=0.1, value=0.5)
|
|
450
|
+
>>> print(og)
|
|
451
|
+
|
|
452
|
+
:seealso: :class:`BinaryOccupancyGrid`
|
|
453
|
+
"""
|
|
454
|
+
|
|
455
|
+
def __str__(self):
|
|
456
|
+
s = super().__str__()
|
|
457
|
+
|
|
458
|
+
g = self._grid
|
|
459
|
+
s += f", dtype {g.dtype}"
|
|
460
|
+
s += f", min {g.min()}, max {g.max()}, mean {g.mean()}"
|
|
461
|
+
return s
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
class PolygonMap(BaseMap):
|
|
465
|
+
def __init__(self, workspace=None, polygons=[]):
|
|
466
|
+
"""
|
|
467
|
+
Polygonal obstacle map
|
|
468
|
+
|
|
469
|
+
:param workspace: dimensions of 2D plot area, defaults to (-10:10) x (-10:10),
|
|
470
|
+
see :func:`~spatialmath.base.graphics.plotvol2`
|
|
471
|
+
:type workspace: float, array_like(2), array_like(4)
|
|
472
|
+
:param polygons: obstacle polygons, defaults to []
|
|
473
|
+
:type polygons: list, optional
|
|
474
|
+
|
|
475
|
+
The obstacle polygons are specified as instances of :class:`~spatialmath.geom2d.Polygon2`
|
|
476
|
+
or ndarray(2,N).
|
|
477
|
+
|
|
478
|
+
The workspace can be specified in several ways:
|
|
479
|
+
|
|
480
|
+
============== ======= =======
|
|
481
|
+
``workspace`` x-range y-range
|
|
482
|
+
============== ======= =======
|
|
483
|
+
A (scalar) -A:A -A:A
|
|
484
|
+
[A, B] A:B A:B
|
|
485
|
+
[A, B, C, D] A:B C:D
|
|
486
|
+
============== ======= =======
|
|
487
|
+
|
|
488
|
+
Workspace is used only to set plot bounds.
|
|
489
|
+
"""
|
|
490
|
+
super().__init__(workspace=workspace)
|
|
491
|
+
|
|
492
|
+
self.polygons = polygons
|
|
493
|
+
|
|
494
|
+
def add(self, polygon):
|
|
495
|
+
"""
|
|
496
|
+
Add a polygon to map
|
|
497
|
+
|
|
498
|
+
:param polygon: a polygon
|
|
499
|
+
:type polygon: :class:`~spatialmath.geom2d.Polygon2` or ndarray(2,N)
|
|
500
|
+
"""
|
|
501
|
+
|
|
502
|
+
if isinstance(polygon, Polygon2):
|
|
503
|
+
self.polygons.append(polygon) # lgtm [py/modification-of-default-value]
|
|
504
|
+
else:
|
|
505
|
+
self.polygons.append(
|
|
506
|
+
Polygon2(polygon)
|
|
507
|
+
) # lgtm [py/modification-of-default-value]
|
|
508
|
+
|
|
509
|
+
def iscollision(self, polygon):
|
|
510
|
+
"""
|
|
511
|
+
Test for collision
|
|
512
|
+
|
|
513
|
+
:param polygon: a polygon
|
|
514
|
+
:type polygon: :class:`~spatialmath.geom2d.Polygon2` or ndarray(2,N)
|
|
515
|
+
:return: collision
|
|
516
|
+
:rtype: bool
|
|
517
|
+
|
|
518
|
+
The ``polygon`` is tested against polygons in the map, and returns True
|
|
519
|
+
on the first collision.
|
|
520
|
+
|
|
521
|
+
:seealso: :meth:`add` :class:`~spatialmath.geom2d.Polygon2`
|
|
522
|
+
"""
|
|
523
|
+
return polygon.intersects(self.polygons)
|
|
524
|
+
|
|
525
|
+
def plot(self, block=None):
|
|
526
|
+
smb.plotvol2(self.workspace)
|
|
527
|
+
|
|
528
|
+
for polygon in self.polygons:
|
|
529
|
+
polygon.plot(color="r")
|
|
530
|
+
|
|
531
|
+
if block is not None:
|
|
532
|
+
plt.show(block=block)
|
|
533
|
+
|
|
534
|
+
def isoccupied(self, p):
|
|
535
|
+
"""
|
|
536
|
+
Test if point lies inside an obstacle
|
|
537
|
+
|
|
538
|
+
:param p: a 2D point
|
|
539
|
+
:type p: array_like(2)
|
|
540
|
+
:return: enclosure
|
|
541
|
+
:rtype: bool
|
|
542
|
+
|
|
543
|
+
The point is tested for enclosure by polygons in the map, and returns True
|
|
544
|
+
on the first enclosure.
|
|
545
|
+
"""
|
|
546
|
+
for polygon in self.polygons:
|
|
547
|
+
if polygon.contains(p):
|
|
548
|
+
return True
|
|
549
|
+
|
|
550
|
+
return False
|
|
551
|
+
|
|
552
|
+
@property
|
|
553
|
+
def workspace(self):
|
|
554
|
+
"""
|
|
555
|
+
Bounds of the occupancy grid
|
|
556
|
+
|
|
557
|
+
:return: workspace bounds [xmin, xmax, ymin, ymax]
|
|
558
|
+
:rtype: ndarray(4)
|
|
559
|
+
|
|
560
|
+
Returns the bounds of the occupancy grid.
|
|
561
|
+
"""
|
|
562
|
+
return self._workspace
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
if __name__ == "__main__":
|
|
566
|
+
# g = np.zeros((100, 100))
|
|
567
|
+
# g[20:30, 50:80] = 1
|
|
568
|
+
|
|
569
|
+
# og = OccGrid(g, size=0.1, origin=(2,4),name='bob')
|
|
570
|
+
# print(og)
|
|
571
|
+
# print(og.xmin, og.xmax, og.ymin, og.ymax)
|
|
572
|
+
# print(og.isoccupied((8.5, 6.5)))
|
|
573
|
+
# print(og.isoccupied((6, 6)))
|
|
574
|
+
# print(og.isoccupied((500, 500)))
|
|
575
|
+
# og.plot(block=False)
|
|
576
|
+
# og2 = og.copy()
|
|
577
|
+
# print(og2)
|
|
578
|
+
# og2.inflate(0.5)
|
|
579
|
+
# plt.figure()
|
|
580
|
+
# og2.plot(block=True)
|
|
581
|
+
|
|
582
|
+
# g = np.zeros((10,10))
|
|
583
|
+
# g[2:3, 4:5] = 1
|
|
584
|
+
# og = BinaryOccupancyGrid(g)
|
|
585
|
+
# print(og)
|
|
586
|
+
|
|
587
|
+
# r = og.ravel
|
|
588
|
+
# print(r[24])
|
|
589
|
+
|
|
590
|
+
# og = BinaryOccupancyGrid(workspace=[2,3,4,5], cellsize=0.2)
|
|
591
|
+
# print(og)
|
|
592
|
+
|
|
593
|
+
# og = BinaryOccupancyGrid(workspace=[2,3,4,5], cellsize=0.2, value=True)
|
|
594
|
+
# print(og)
|
|
595
|
+
|
|
596
|
+
# og = OccupancyGrid(workspace=[2,3,4,5], cellsize=0.2, value=3)
|
|
597
|
+
# print(og)
|
|
598
|
+
|
|
599
|
+
# og = OccupancyGrid(workspace=[2,3,4,5], cellsize=0.2, value=3.0)
|
|
600
|
+
# print(og)
|
|
601
|
+
|
|
602
|
+
map = PolygonMap(workspace=[0, 10])
|
|
603
|
+
map.add([(5, 50), (5, 6), (6, 6), (6, 50)])
|
|
604
|
+
map.add([(5, 4), (5, -50), (6, -50), (6, 4)])
|
|
605
|
+
map.plot()
|
|
606
|
+
|
|
607
|
+
og = BinaryOccupancyGrid(workspace=[-5, 5, -5, 5], value=False)
|
|
608
|
+
# np.set_printoptions(linewidth=300)
|
|
609
|
+
# og = BinaryOccupancyGrid(workspace=[-10, 10, -10, 10], value=False)
|
|
610
|
+
# print(og)
|
|
611
|
+
# og.set([1,10, -10, 10], True)
|
|
612
|
+
# print(og.grid)
|
|
613
|
+
# print(og.isoccupied((0,0)))
|