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