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,778 @@
1
+ #!/usr/bin/env python
2
+ """
3
+ @author Jesse Haviland
4
+ """
5
+
6
+ import time
7
+ import io
8
+ import sys
9
+ import roboticstoolbox as rp
10
+ import numpy as np
11
+ from roboticstoolbox.backends.Connector import Connector
12
+
13
+ from roboticstoolbox.backends.PyPlot.RobotPlot import RobotPlot
14
+ from roboticstoolbox.backends.PyPlot.EllipsePlot import EllipsePlot, ShapePlot
15
+ from spatialmath.base.argcheck import getvector
16
+ from spatialgeometry import Shape
17
+
18
+ # from roboticstoolbox.tools import Ticker
19
+
20
+ _mpl = False
21
+ _pil = None
22
+ _ipy_display = None
23
+ _ipy_image = None
24
+ _ipy_svg = None
25
+ _ipy_clear_output = None
26
+
27
+ try:
28
+ import matplotlib
29
+ import matplotlib.pyplot as plt
30
+
31
+ # from mpl_toolkits.mplot3d import Axes3D
32
+ from matplotlib.widgets import Slider
33
+
34
+ matplotlib.rcParams["pdf.fonttype"] = 42
35
+ matplotlib.rcParams["ps.fonttype"] = 42
36
+ plt.style.use("ggplot")
37
+ matplotlib.rcParams["font.size"] = 7
38
+ matplotlib.rcParams["lines.linewidth"] = 0.5
39
+ matplotlib.rcParams["xtick.major.size"] = 1.5
40
+ matplotlib.rcParams["ytick.major.size"] = 1.5
41
+ matplotlib.rcParams["axes.labelpad"] = 1
42
+ plt.rc("grid", linestyle="-", color="#dbdbdb")
43
+ _mpl = True
44
+ except ImportError: # pragma nocover
45
+ pass
46
+
47
+ try:
48
+ from IPython.display import display as _ipy_display
49
+ from IPython.display import Image as _ipy_image
50
+ from IPython.display import SVG as _ipy_svg
51
+ from IPython.display import clear_output as _ipy_clear_output
52
+ except ImportError: # pragma nocover
53
+ pass
54
+
55
+
56
+ class PyPlot(Connector):
57
+ """
58
+ Graphical backend using matplotlib
59
+
60
+ matplotlib is a common and highly portable graphics library for Python,
61
+ but has relatively limited 3D capability.
62
+
63
+ Example:
64
+
65
+ .. code-block:: python
66
+ :linenos:
67
+
68
+ import roboticstoolbox as rtb
69
+
70
+ robot = rtb.models.DH.Panda() # create a robot
71
+
72
+ pyplot = rtb.backends.PyPlot() # create a PyPlot backend
73
+ pyplot.add(robot) # add the robot to the backend
74
+ robot.q = robot.qz # set the robot configuration
75
+ pyplot.step() # update the backend and graphical view
76
+
77
+ .. note:: PyPlot is the default backend, and ``robot.plot(q)`` effectively
78
+ performs lines 7-8 above.
79
+
80
+ """
81
+
82
+ supports_ellipse: bool = True
83
+
84
+ def __init__(self):
85
+
86
+ super(PyPlot, self).__init__()
87
+ self.robots = []
88
+ self.ellipses = []
89
+ self.shapes = []
90
+ self.render_mode = "window"
91
+ self.inline_every_n = 1
92
+ self.inline_format = "svg"
93
+ self.inline_dpi = None
94
+ self._inline_step_count = 0
95
+ self._inline_display_handle = None
96
+ self._inline_is_jl = False
97
+
98
+ if not _mpl: # pragma nocover
99
+ raise ImportError(
100
+ "\n\nYou do not have matplotlib installed, do:\n"
101
+ "pip install matplotlib\n\n"
102
+ )
103
+
104
+ def __repr__(self):
105
+ s = ""
106
+ for robot in self.robots:
107
+ s += f" robot: {robot.name}\n"
108
+ for ellipse in self.ellipses:
109
+ s += f" ellipse: {ellipse}\n"
110
+ for shape in self.shapes:
111
+ s += f" shape: {shape}\n"
112
+
113
+ if s == "":
114
+ return f"PyPlot3D backend, t = {self.sim_time}, empty scene"
115
+ else:
116
+ return f"PyPlot3D backend, t = {self.sim_time}, scene:\n" + s
117
+
118
+ def launch(self, name=None, fig=None, ax=None, limits=None, **kwargs):
119
+ """
120
+ Launch a graphical interface
121
+
122
+ ```env = launch()``` creates a blank 3D matplotlib figure and returns
123
+ a reference to the backend.
124
+
125
+ Optional keyword arguments
126
+ --------------------------
127
+ ax
128
+ Existing Matplotlib 3D axes to render into.
129
+ render_mode
130
+ One of ``'window'``, ``'notebook-widget'``, or ``'notebook-inline'``.
131
+ inline_every_n
132
+ Push one inline frame every N simulation steps (inline mode only).
133
+ inline_format
134
+ Inline frame format: ``'svg'`` (default) or ``'png'``.
135
+ inline_dpi
136
+ DPI for PNG inline frames only. Ignored for SVG.
137
+ """
138
+
139
+ super().launch()
140
+
141
+ self.render_mode = _resolve_render_mode(kwargs.get("render_mode"))
142
+ self.inline_every_n = max(1, int(kwargs.get("inline_every_n", 1)))
143
+ self.inline_format = kwargs.get("inline_format", "svg")
144
+ if self.inline_format not in ["png", "svg"]:
145
+ raise ValueError("inline_format must be either 'png' or 'svg'")
146
+ inline_dpi = kwargs.get("inline_dpi", None)
147
+ if inline_dpi is not None:
148
+ inline_dpi = float(inline_dpi)
149
+ if inline_dpi <= 0:
150
+ raise ValueError("inline_dpi must be > 0")
151
+ self.inline_dpi = inline_dpi
152
+ self._inline_step_count = 0
153
+ self._inline_display_handle = None
154
+ self._inline_is_jl = sys.platform == "emscripten"
155
+
156
+ self.limits = limits
157
+ if limits is not None:
158
+ self.limits = getvector(limits, 6)
159
+
160
+ projection = "ortho"
161
+ labels = ["X", "Y", "Z"]
162
+
163
+ if name is None:
164
+ name = "Robotics Toolbox for Python"
165
+
166
+ if ax is not None:
167
+ if fig is not None and ax.figure is not fig:
168
+ raise ValueError("ax does not belong to fig")
169
+
170
+ # Caller supplied axes; reuse its parent figure.
171
+ self.ax = ax
172
+ self.fig = ax.figure
173
+ else:
174
+ if fig is None:
175
+ self.fig = plt.figure(name)
176
+ else:
177
+ self.fig = fig
178
+ manager = getattr(self.fig.canvas, "manager", None)
179
+ if manager is not None and hasattr(manager, "set_window_title"):
180
+ manager.set_window_title(name)
181
+
182
+ # Create a 3D axes
183
+ self.ax = self.fig.add_subplot(111, projection="3d", proj_type=projection)
184
+
185
+ if not hasattr(self.ax, "set_zbound"):
186
+ raise ValueError("ax must be a 3D matplotlib axes")
187
+
188
+ if ax is None:
189
+ self.fig.subplots_adjust(left=-0.09, bottom=0, top=1, right=0.99)
190
+
191
+ self.ax.set_facecolor("white")
192
+ manager = getattr(self.ax.figure.canvas, "manager", None)
193
+ if manager is not None and hasattr(manager, "set_window_title"):
194
+ manager.set_window_title(
195
+ f"Robotics Toolbox for Python (Figure {self.ax.figure.number})"
196
+ )
197
+
198
+ self.ax.set_xbound(-0.5, 0.5)
199
+ self.ax.set_ybound(-0.5, 0.5)
200
+ self.ax.set_zbound(0.0, 0.5)
201
+
202
+ self.ax.set_xlabel(labels[0])
203
+ self.ax.set_ylabel(labels[1])
204
+ self.ax.set_zlabel(labels[2])
205
+
206
+ if limits is not None:
207
+ self.ax.set_xlim3d([limits[0], limits[1]])
208
+ self.ax.set_ylim3d([limits[2], limits[3]])
209
+ self.ax.set_zlim3d([limits[4], limits[5]])
210
+
211
+ self.limits = limits
212
+
213
+ # disable the display of value under cursor
214
+ # self.ax.format_coord = lambda x, y: ''
215
+
216
+ # add time display in top-right corner
217
+ self.timer = self.fig.text(0.85, 0.95, "")
218
+
219
+ # In inline notebook mode (notably JupyterLite), keeping this figure
220
+ # registered with pyplot can trigger repeated auto-display of blank
221
+ # Figure reprs. Detach it and drive rendering via _push_inline_frame().
222
+ if self.render_mode == "notebook-inline":
223
+ plt.close(self.fig)
224
+
225
+ if self.render_mode == "window":
226
+ plt.ion()
227
+ plt.show()
228
+ else:
229
+ if self.render_mode == "notebook-inline":
230
+ plt.ioff()
231
+ else:
232
+ plt.ion()
233
+ if self.render_mode != "notebook-inline":
234
+ self.fig.canvas.draw()
235
+
236
+ self.sim_time = 0
237
+
238
+ # # Set the signal handler and a 0.1 second plot updater
239
+ # signal.signal(signal.SIGALRM, self._plot_handler)
240
+ # signal.setitimer(signal.ITIMER_REAL, 0.1, 0.1)
241
+ # TODO still need to finish this, and get Jupyter animation working
242
+
243
+ def step(self, dt=0.05):
244
+ """
245
+ Update the graphical scene
246
+
247
+ :param dt: time step in seconds, defaults to 50 (0.05 s)
248
+ :type dt: int, optional
249
+
250
+ ``env.step(args)`` triggers an update of the 3D scene in the matplotlib
251
+ window referenced by ``env``.
252
+
253
+ .. note::
254
+
255
+ - Each robot in the scene is updated based on
256
+ their control type (position, velocity, acceleration, or torque).
257
+ - Upon acting, the other three of the four control types will be
258
+ updated in the internal state of the robot object.
259
+ - The control type is defined by the robot object, and not all
260
+ robot objects support all control types.
261
+ - Execution is blocked for the specified interval
262
+
263
+ """
264
+
265
+ super().step()
266
+
267
+ # update the robot's state
268
+ for rpl in self.robots:
269
+ robot = rpl.robot
270
+
271
+ if rpl.readonly or robot.control_mode == "p":
272
+ pass # pragma: no cover
273
+ elif robot.control_mode == "v":
274
+ for i in range(robot.n):
275
+ robot.q[i] += robot.qd[i] * (dt)
276
+ elif robot.control_mode == "a": # pragma: no cover
277
+ pass
278
+ else: # pragma: no cover
279
+ raise ValueError(
280
+ "Invalid robot.control_type. Must be one of 'p', 'v', or 'a'"
281
+ )
282
+
283
+ # plt.ioff()
284
+
285
+ # update all ellipses
286
+ for ellipse in self.ellipses:
287
+ ellipse.draw()
288
+
289
+ # update all shapes
290
+ for shape in self.shapes:
291
+ shape.draw()
292
+
293
+ # update all robots
294
+ for robot in self.robots:
295
+ robot.draw()
296
+
297
+ self._set_axes_equal()
298
+
299
+ # update time and display it on plot
300
+ if self.sim_time > 0:
301
+ self.timer.set_text(f"t = {self.sim_time:.2f}")
302
+ self.sim_time += dt
303
+
304
+ # plt.ion()
305
+
306
+ if self.render_mode == "window":
307
+ plt.draw()
308
+ plt.pause(dt)
309
+ elif self.render_mode == "notebook-widget":
310
+ plt.draw()
311
+ self.fig.canvas.draw_idle()
312
+ time.sleep(dt)
313
+ else:
314
+ if self._inline_step_count % self.inline_every_n == 0:
315
+ self._push_inline_frame()
316
+ self._inline_step_count += 1
317
+ time.sleep(dt)
318
+
319
+ def reset(self):
320
+ """
321
+ Reset the graphical scene
322
+
323
+ ``env.reset()`` triggers a reset of the 3D scene in the matplotlib
324
+ window referenced by ``env``. It is restored to the original state
325
+ defined by ``launch()``.
326
+ """
327
+ # TODO what does this actually do for matplotlib??
328
+
329
+ super().reset()
330
+
331
+ def restart(self):
332
+ """
333
+ Restart the graphics display
334
+
335
+ ``env.restart()`` triggers a restart of the matplotlib view referenced
336
+ by ``env``. It is closed and relaunched to the original state defined
337
+ by ``launch()``.
338
+
339
+ """
340
+ # TODO what does this actually do for matplotlib??
341
+
342
+ super().restart()
343
+
344
+ def close(self):
345
+ """
346
+ ``env.close()`` gracefully closes the matplotlib window
347
+ referenced by ``env``.
348
+ """
349
+ # TODO what does this actually do for matplotlib??
350
+
351
+ super().close()
352
+
353
+ # signal.setitimer(signal.ITIMER_REAL, 0)
354
+ plt.close(self.fig)
355
+
356
+ #
357
+ # Methods to interface with the robots created in other environments
358
+ #
359
+
360
+ def add(
361
+ self,
362
+ ob,
363
+ readonly=False,
364
+ display=True,
365
+ jointaxes=True,
366
+ jointlabels=False,
367
+ eeframe=True,
368
+ shadow=True,
369
+ name=True,
370
+ options=None,
371
+ ):
372
+ """
373
+ Add a robot to the graphical scene
374
+
375
+ :param ob: The object to add to the plot (robot or ellipse)
376
+ :type ob: DHRobot or EllipsePlot
377
+ :param readonly: Do not update the state of the object
378
+ (i.e. display not simulate), defaults to False
379
+ :type readonly: bool, optional
380
+ :param display: Display the object, defaults to True
381
+ :type display: bool, optional
382
+ :param jointaxes: Show the joint axes of the robot with arrows,
383
+ defaults to True
384
+ :type jointaxes: bool, optional
385
+ :param eeframe: Show the end-effector frame of the robot,
386
+ defaults to True
387
+ :type eeframe: bool, optional
388
+ :param shadow: Display a shadow of the robot on the x-y gound plane,
389
+ defaults to True
390
+ :type shadow: bool, optional
391
+ :param name: Display the name of the robot, defaults to True
392
+ :type name: bool, optional
393
+
394
+ ``id = env.add(robot)`` adds the ``robot`` to the graphical
395
+ environment.
396
+
397
+ .. note::
398
+
399
+ - ``robot`` must be of an appropriate class.
400
+ - Adds the robot object to a list of robots which will be updated
401
+ when the ``step()`` method is called.
402
+
403
+ """
404
+
405
+ super().add()
406
+
407
+ if (
408
+ isinstance(ob, rp.DHRobot)
409
+ or isinstance(ob, rp.ERobot)
410
+ or isinstance(ob, rp.Robot)
411
+ ):
412
+ self.robots.append(
413
+ RobotPlot(
414
+ ob,
415
+ self,
416
+ readonly,
417
+ display,
418
+ jointaxes,
419
+ jointlabels,
420
+ eeframe,
421
+ shadow,
422
+ name,
423
+ options,
424
+ )
425
+ )
426
+ self.robots[-1].draw()
427
+ id = len(self.robots)
428
+
429
+ elif isinstance(ob, EllipsePlot):
430
+ ob.ax = self.ax
431
+ self.ellipses.append(ob)
432
+ self.ellipses[-1].draw()
433
+ id = len(self.ellipses)
434
+
435
+ elif isinstance(ob, Shape):
436
+ # recreate the shape using matplotlib
437
+ self.shapes.append(ShapePlot(ob))
438
+ self.shapes[-1].draw(ax=self.ax)
439
+ id = len(self.shapes)
440
+
441
+ self._set_axes_equal()
442
+
443
+ if self.render_mode == "notebook-inline":
444
+ # In inline/JupyterLite mode, push a frame immediately so static
445
+ # plots (eg. plot_vellipse/plot_fellipse) are visible without step().
446
+ self._push_inline_frame()
447
+ else:
448
+ plt.draw() # matplotlib refresh
449
+ plt.show(block=False)
450
+
451
+ return id
452
+
453
+ def remove(self, id):
454
+ """
455
+ Remove a robot or shape from the graphical scene
456
+
457
+ :param id: The id of the robot to remove. Can be either the DHLink or
458
+ GraphicalRobot
459
+ :type id: class:`~roboticstoolbox.robot.DHRobot.DHRobot`,
460
+ class:`roboticstoolbox.backends.VPython.graphics_robot.GraphicalRobot`
461
+ :param fig_num: The canvas index to delete the robot from, defaults to
462
+ the initial one
463
+ :type fig_num: int, optional
464
+ :raises ValueError: Figure number must be between 0 and total number
465
+ of canvases
466
+ :raises TypeError: Input must be a DHLink or GraphicalRobot
467
+
468
+ ``env.remove(robot)`` removes the ``robot`` from the graphical
469
+ environment.
470
+ """
471
+ # TODO should be an id to remove?
472
+
473
+ super().remove()
474
+
475
+ def hold(self): # pragma: no cover
476
+ """
477
+ hold() keeps the plot open i.e. stops the plot from closing once
478
+ the main script has finished.
479
+
480
+ """
481
+
482
+ # signal.setitimer(signal.ITIMER_REAL, 0)
483
+ plt.ioff()
484
+
485
+ # keep stepping the environment while figure is open
486
+ while True:
487
+ if not plt.fignum_exists(self.fig.number):
488
+ break
489
+ self.step()
490
+
491
+ def getframe(self):
492
+ global _pil
493
+
494
+ if _pil is None:
495
+ try:
496
+ import PIL
497
+
498
+ _pil = PIL.Image.frombytes
499
+ except ImportError: # pragma nocover
500
+ pass
501
+
502
+ if _pil is None:
503
+ raise RuntimeError(
504
+ "to save movies PIL must be installed:\npip3 install PIL"
505
+ )
506
+
507
+ # make the background white, looks better than grey stipple
508
+ self.ax.xaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
509
+ self.ax.yaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
510
+ self.ax.zaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
511
+ plt.gcf().canvas.draw()
512
+
513
+ # render the frame and save as a PIL image in the list
514
+ canvas = self.fig.canvas
515
+ return _pil("RGB", canvas.get_width_height(), canvas.tostring_rgb())
516
+
517
+ def _push_inline_frame(self):
518
+ # Push a snapshot into notebook output for inline animation.
519
+ if _ipy_display is None:
520
+ return
521
+
522
+ buf = io.BytesIO()
523
+ if self.inline_format == "svg":
524
+ if _ipy_svg is None:
525
+ return
526
+ self.fig.savefig(buf, format="svg")
527
+ frame = _ipy_svg(data=buf.getvalue().decode("utf-8"))
528
+ else:
529
+ if _ipy_image is None:
530
+ return
531
+ self.fig.savefig(buf, format="png", dpi=self.inline_dpi)
532
+ frame = _ipy_image(data=buf.getvalue())
533
+
534
+ if self._inline_is_jl and _ipy_clear_output is not None:
535
+ _ipy_clear_output(wait=True)
536
+ _ipy_display(frame)
537
+ return
538
+
539
+ if self._inline_display_handle is None:
540
+ self._inline_display_handle = _ipy_display(frame, display_id=True)
541
+ elif hasattr(self._inline_display_handle, "update"):
542
+ self._inline_display_handle.update(frame)
543
+ else:
544
+ _ipy_display(frame)
545
+
546
+ #
547
+ # Private methods
548
+ #
549
+
550
+ # def _plot_handler(self, sig, frame):
551
+ # try:
552
+ # plt.pause(0.001)
553
+ # except(AttributeError):
554
+ # pass
555
+
556
+ def _set_axes_equal(self):
557
+ """
558
+ Make axes of 3D plot have equal scale so that spheres appear as
559
+ spheres, cubes as cubes, etc.. This is one possible solution to
560
+ Matplotlib's ax.set_aspect('equal') and ax.axis('equal') not
561
+ working for 3D.
562
+
563
+ """
564
+
565
+ if self.limits is not None:
566
+ return
567
+
568
+ self.ax.autoscale(enable=True, axis="both", tight=False)
569
+
570
+ x_limits = self.ax.get_xlim3d()
571
+ y_limits = self.ax.get_ylim3d()
572
+ z_limits = self.ax.get_zlim3d()
573
+
574
+ x_range = abs(x_limits[1] - x_limits[0])
575
+ x_middle = np.mean(x_limits)
576
+ y_range = abs(y_limits[1] - y_limits[0])
577
+ y_middle = np.mean(y_limits)
578
+ z_range = abs(z_limits[1] - z_limits[0])
579
+ z_middle = np.mean(z_limits)
580
+
581
+ # The plot bounding box is a sphere in the sense of the infinity
582
+ # norm, hence I call half the max range the plot radius.
583
+ plot_radius = 0.5 * max([x_range, y_range, z_range])
584
+
585
+ self.ax.set_xlim3d([x_middle - plot_radius, x_middle + plot_radius])
586
+ self.ax.set_ylim3d([y_middle - plot_radius, y_middle + plot_radius])
587
+ self.ax.set_zlim3d([z_middle - plot_radius, z_middle + plot_radius])
588
+
589
+ def _add_teach_panel(self, robot, q, handle=None, block=True):
590
+ # handle, block: unused here -- PyPlot has no AssemblyHandle
591
+ # concept (it drives the panel by mutating robot.q directly
592
+ # below), and matplotlib's own GUI mainloop (entered via this
593
+ # backend's env.hold()) already processes slider events on its
594
+ # own, unlike Swift's hold() which needs an active step() loop.
595
+ # Both params only meaningful for the Swift backend's own
596
+ # _add_teach_panel().
597
+
598
+ if _isnotebook():
599
+ raise RuntimeError("cannot use teach panel under Jupyter")
600
+
601
+ fig = self.fig
602
+
603
+ # Add text to the plots
604
+ def text_trans(text, q): # pragma: no cover
605
+ T = robot.fkine(q)
606
+ t = np.round(T.t, 3)
607
+ r = np.round(T.rpy("deg"), 3)
608
+ text[0].set_text("x: {0}".format(t[0]))
609
+ text[1].set_text("y: {0}".format(t[1]))
610
+ text[2].set_text("z: {0}".format(t[2]))
611
+ text[3].set_text("r: {0}".format(r[0]))
612
+ text[4].set_text("p: {0}".format(r[1]))
613
+ text[5].set_text("y: {0}".format(r[2]))
614
+
615
+ # Update the self state in mpl and the text
616
+ def update(val, text, robot): # pragma: no cover
617
+ for j in range(robot.n):
618
+ if robot.isrevolute(j):
619
+ robot.q[j] = np.radians(self.sjoint[j].val)
620
+ else:
621
+ robot.q[j] = self.sjoint[j].val
622
+
623
+ teach_vellipse = getattr(self, "_teach_vellipse", None)
624
+ if teach_vellipse is not None:
625
+ teach_vellipse.q = robot.q
626
+
627
+ teach_fellipse = getattr(self, "_teach_fellipse", None)
628
+ if teach_fellipse is not None:
629
+ teach_fellipse.q = robot.q
630
+
631
+ text_trans(text, robot.q)
632
+
633
+ fig.subplots_adjust(left=0.25)
634
+ text = []
635
+
636
+ x1 = 0.04
637
+ x2 = 0.22
638
+ yh = 0.04
639
+ ym = 0.5 - (robot.n * yh) / 2 + 0.17 / 2
640
+
641
+ self.axjoint = []
642
+ self.sjoint = []
643
+
644
+ qlim = robot.todegrees(robot.qlim)
645
+
646
+ # if np.all(qlim == 0): # pragma: no cover
647
+ # qlim[0, :] = -180
648
+ # qlim[1, :] = 180
649
+
650
+ # Set the pose text
651
+ T = robot.fkine(q)
652
+ t = np.round(T.t, 3)
653
+ r = np.round(T.rpy(), 3)
654
+
655
+ fig.text(
656
+ 0.02,
657
+ 1 - ym + 0.25,
658
+ "End-effector Pose",
659
+ fontsize=9,
660
+ weight="bold",
661
+ color="#4f4f4f",
662
+ )
663
+ text.append(
664
+ fig.text(
665
+ 0.03, 1 - ym + 0.20, "x: {0}".format(t[0]), fontsize=9, color="#2b2b2b"
666
+ )
667
+ )
668
+ text.append(
669
+ fig.text(
670
+ 0.03, 1 - ym + 0.16, "y: {0}".format(t[1]), fontsize=9, color="#2b2b2b"
671
+ )
672
+ )
673
+ text.append(
674
+ fig.text(
675
+ 0.03, 1 - ym + 0.12, "z: {0}".format(t[2]), fontsize=9, color="#2b2b2b"
676
+ )
677
+ )
678
+ text.append(
679
+ fig.text(
680
+ 0.15, 1 - ym + 0.20, "r: {0}".format(r[0]), fontsize=9, color="#2b2b2b"
681
+ )
682
+ )
683
+ text.append(
684
+ fig.text(
685
+ 0.15, 1 - ym + 0.16, "p: {0}".format(r[1]), fontsize=9, color="#2b2b2b"
686
+ )
687
+ )
688
+ text.append(
689
+ fig.text(
690
+ 0.15, 1 - ym + 0.12, "y: {0}".format(r[2]), fontsize=9, color="#2b2b2b"
691
+ )
692
+ )
693
+ fig.text(
694
+ 0.02,
695
+ 1 - ym + 0.06,
696
+ "Joint angles",
697
+ fontsize=9,
698
+ weight="bold",
699
+ color="#4f4f4f",
700
+ )
701
+
702
+ for j in range(robot.n):
703
+ ymin = (1 - ym) - j * yh
704
+ ax = fig.add_axes([x1, ymin, x2, 0.03], facecolor="#dbdbdb")
705
+ self.axjoint.append(ax)
706
+
707
+ if robot.isrevolute(j):
708
+ slider = Slider(
709
+ ax=ax,
710
+ label="q" + str(j),
711
+ valmin=qlim[0, j],
712
+ valmax=qlim[1, j],
713
+ valinit=np.degrees(q[j]),
714
+ valfmt="% .1f°",
715
+ )
716
+ else:
717
+ slider = Slider(
718
+ ax=ax,
719
+ label="q" + str(j),
720
+ valmin=qlim[0, j],
721
+ valmax=qlim[1, j],
722
+ valinit=robot.q[j],
723
+ valfmt="% .1f",
724
+ )
725
+
726
+ slider.on_changed(lambda x: update(x, text, robot))
727
+ self.sjoint.append(slider)
728
+ robot.q = q
729
+ self.step()
730
+
731
+
732
+ def _isnotebook():
733
+ """
734
+ Determine if code is being run from a Jupyter notebook or JupyterLite
735
+
736
+ ``_isnotebook`` is True if running Jupyter notebook, JupyterLite, or similar, else False
737
+
738
+ :references:
739
+
740
+ - https://stackoverflow.com/questions/15411967/how-can-i-check-if-code-
741
+ is-executed-in-the-ipython-notebook/39662359#39662359
742
+ """
743
+ import sys
744
+
745
+ # Check if running in Pyodide/JupyterLite
746
+ if sys.platform == "emscripten":
747
+ return True
748
+
749
+ # Fall back to checking IPython shell type
750
+ try:
751
+ shell = get_ipython().__class__.__name__
752
+ if shell == "ZMQInteractiveShell":
753
+ return True # Jupyter notebook or qtconsole
754
+ elif shell == "TerminalInteractiveShell":
755
+ return False # Terminal running IPython
756
+ else:
757
+ return False # Other type (?)
758
+ except NameError:
759
+ return False # Probably standard Python interpreter
760
+
761
+
762
+ def _resolve_render_mode(render_mode=None):
763
+ if render_mode is not None:
764
+ if render_mode not in ["window", "notebook-widget", "notebook-inline"]:
765
+ raise ValueError(
766
+ "render_mode must be one of 'window', "
767
+ "'notebook-widget', or 'notebook-inline'"
768
+ )
769
+ return render_mode
770
+
771
+ if not _isnotebook():
772
+ return "window"
773
+
774
+ backend = matplotlib.get_backend().lower()
775
+ if "ipympl" in backend or "widget" in backend or "nbagg" in backend:
776
+ return "notebook-widget"
777
+
778
+ return "notebook-inline"