roboticstoolbox-python 1.4.0__py3-none-any.whl

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