roboticstoolbox-python 1.3.0__cp312-cp312-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (673) hide show
  1. roboticstoolbox/__init__.py +104 -0
  2. roboticstoolbox/backends/Connector.py +107 -0
  3. roboticstoolbox/backends/Dynamixel/README.md +9 -0
  4. roboticstoolbox/backends/Dynamixel/dynamixel.json +581 -0
  5. roboticstoolbox/backends/Dynamixel/dynamixel_io.py +450 -0
  6. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/LICENSE +201 -0
  7. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/README.md +28 -0
  8. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/ReleaseNote.md +181 -0
  9. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/__init__.py +27 -0
  10. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_bulk_read.py +163 -0
  11. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_bulk_write.py +109 -0
  12. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_sync_read.py +166 -0
  13. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/group_sync_write.py +99 -0
  14. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/packet_handler.py +33 -0
  15. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/port_handler.py +155 -0
  16. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/protocol1_packet_handler.py +548 -0
  17. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/protocol2_packet_handler.py +1080 -0
  18. roboticstoolbox/backends/Dynamixel/dynamixel_sdk/robotis_def.py +75 -0
  19. roboticstoolbox/backends/Dynamixel/dyndata.py +121 -0
  20. roboticstoolbox/backends/PyPlot/EllipsePlot.py +253 -0
  21. roboticstoolbox/backends/PyPlot/PyPlot.py +769 -0
  22. roboticstoolbox/backends/PyPlot/PyPlot2.py +526 -0
  23. roboticstoolbox/backends/PyPlot/README.md +67 -0
  24. roboticstoolbox/backends/PyPlot/RobotPlot.py +247 -0
  25. roboticstoolbox/backends/PyPlot/RobotPlot2.py +123 -0
  26. roboticstoolbox/backends/PyPlot/__init__.py +4 -0
  27. roboticstoolbox/backends/ROS/ROS.py +129 -0
  28. roboticstoolbox/backends/ROS/__init__.py +3 -0
  29. roboticstoolbox/backends/__init__.py +39 -0
  30. roboticstoolbox/backends/swift/__init__.py +26 -0
  31. roboticstoolbox/bin/__init__.py +0 -0
  32. roboticstoolbox/bin/rtbtool.py +307 -0
  33. roboticstoolbox/blocks/Icons/250x250/armplot.png +0 -0
  34. roboticstoolbox/blocks/Icons/250x250/bicycle.png +0 -0
  35. roboticstoolbox/blocks/Icons/250x250/camera.png +0 -0
  36. roboticstoolbox/blocks/Icons/250x250/circlepath.png +0 -0
  37. roboticstoolbox/blocks/Icons/250x250/coriolis.png +0 -0
  38. roboticstoolbox/blocks/Icons/250x250/ctraj.png +0 -0
  39. roboticstoolbox/blocks/Icons/250x250/delta2tr.png +0 -0
  40. roboticstoolbox/blocks/Icons/250x250/diffsteer.png +0 -0
  41. roboticstoolbox/blocks/Icons/250x250/fdyn.png +0 -0
  42. roboticstoolbox/blocks/Icons/250x250/fdynx.png +0 -0
  43. roboticstoolbox/blocks/Icons/250x250/fkine.png +0 -0
  44. roboticstoolbox/blocks/Icons/250x250/gravload.png +0 -0
  45. roboticstoolbox/blocks/Icons/250x250/idyn.png +0 -0
  46. roboticstoolbox/blocks/Icons/250x250/idynx.png +0 -0
  47. roboticstoolbox/blocks/Icons/250x250/ikine.png +0 -0
  48. roboticstoolbox/blocks/Icons/250x250/inertia.png +0 -0
  49. roboticstoolbox/blocks/Icons/250x250/jacobian.png +0 -0
  50. roboticstoolbox/blocks/Icons/250x250/jtraj.png +0 -0
  51. roboticstoolbox/blocks/Icons/250x250/lspb.png +0 -0
  52. roboticstoolbox/blocks/Icons/250x250/multirotor.png +0 -0
  53. roboticstoolbox/blocks/Icons/250x250/multirotormixer.png +0 -0
  54. roboticstoolbox/blocks/Icons/250x250/multirotorplot.png +0 -0
  55. roboticstoolbox/blocks/Icons/250x250/point2tr.png +0 -0
  56. roboticstoolbox/blocks/Icons/250x250/tr2delta.png +0 -0
  57. roboticstoolbox/blocks/Icons/250x250/tr2t.png +0 -0
  58. roboticstoolbox/blocks/Icons/250x250/unicycle.png +0 -0
  59. roboticstoolbox/blocks/Icons/250x250/vehicleplot.png +0 -0
  60. roboticstoolbox/blocks/Icons/50x50/armplot.png +0 -0
  61. roboticstoolbox/blocks/Icons/50x50/bicycle.png +0 -0
  62. roboticstoolbox/blocks/Icons/50x50/camera.png +0 -0
  63. roboticstoolbox/blocks/Icons/50x50/circlepath.png +0 -0
  64. roboticstoolbox/blocks/Icons/50x50/coriolis.png +0 -0
  65. roboticstoolbox/blocks/Icons/50x50/delta2tr.png +0 -0
  66. roboticstoolbox/blocks/Icons/50x50/diffsteer.png +0 -0
  67. roboticstoolbox/blocks/Icons/50x50/fdyn.png +0 -0
  68. roboticstoolbox/blocks/Icons/50x50/fdynx.png +0 -0
  69. roboticstoolbox/blocks/Icons/50x50/fkine.png +0 -0
  70. roboticstoolbox/blocks/Icons/50x50/gravload.png +0 -0
  71. roboticstoolbox/blocks/Icons/50x50/idyn.png +0 -0
  72. roboticstoolbox/blocks/Icons/50x50/idynx.png +0 -0
  73. roboticstoolbox/blocks/Icons/50x50/ikine.png +0 -0
  74. roboticstoolbox/blocks/Icons/50x50/inertia.png +0 -0
  75. roboticstoolbox/blocks/Icons/50x50/jacobian.png +0 -0
  76. roboticstoolbox/blocks/Icons/50x50/jtraj.png +0 -0
  77. roboticstoolbox/blocks/Icons/50x50/lspb.png +0 -0
  78. roboticstoolbox/blocks/Icons/50x50/multirotor.png +0 -0
  79. roboticstoolbox/blocks/Icons/50x50/multirotormixer.png +0 -0
  80. roboticstoolbox/blocks/Icons/50x50/multirotorplot.png +0 -0
  81. roboticstoolbox/blocks/Icons/50x50/point2tr.png +0 -0
  82. roboticstoolbox/blocks/Icons/50x50/tr2delta.png +0 -0
  83. roboticstoolbox/blocks/Icons/50x50/tr2t.png +0 -0
  84. roboticstoolbox/blocks/Icons/50x50/unicycle.png +0 -0
  85. roboticstoolbox/blocks/Icons/50x50/vehicleplot.png +0 -0
  86. roboticstoolbox/blocks/Icons/armplot.png +0 -0
  87. roboticstoolbox/blocks/Icons/bicycle.png +0 -0
  88. roboticstoolbox/blocks/Icons/camera.png +0 -0
  89. roboticstoolbox/blocks/Icons/circlepath.png +0 -0
  90. roboticstoolbox/blocks/Icons/coriolis.png +0 -0
  91. roboticstoolbox/blocks/Icons/ctraj.png +0 -0
  92. roboticstoolbox/blocks/Icons/delta2tr.png +0 -0
  93. roboticstoolbox/blocks/Icons/diffsteer.png +0 -0
  94. roboticstoolbox/blocks/Icons/fdyn.png +0 -0
  95. roboticstoolbox/blocks/Icons/fdynx.png +0 -0
  96. roboticstoolbox/blocks/Icons/fkine.png +0 -0
  97. roboticstoolbox/blocks/Icons/gravload.png +0 -0
  98. roboticstoolbox/blocks/Icons/idyn.png +0 -0
  99. roboticstoolbox/blocks/Icons/idynx.png +0 -0
  100. roboticstoolbox/blocks/Icons/ikine.png +0 -0
  101. roboticstoolbox/blocks/Icons/inertia.png +0 -0
  102. roboticstoolbox/blocks/Icons/jacobian.png +0 -0
  103. roboticstoolbox/blocks/Icons/jtraj.png +0 -0
  104. roboticstoolbox/blocks/Icons/lspb.png +0 -0
  105. roboticstoolbox/blocks/Icons/multirotor.png +0 -0
  106. roboticstoolbox/blocks/Icons/multirotormixer.png +0 -0
  107. roboticstoolbox/blocks/Icons/multirotorplot.png +0 -0
  108. roboticstoolbox/blocks/Icons/point2tr.png +0 -0
  109. roboticstoolbox/blocks/Icons/tr2delta.png +0 -0
  110. roboticstoolbox/blocks/Icons/tr2t.png +0 -0
  111. roboticstoolbox/blocks/Icons/unicycle.png +0 -0
  112. roboticstoolbox/blocks/Icons/vehicleplot.png +0 -0
  113. roboticstoolbox/blocks/README.md +43 -0
  114. roboticstoolbox/blocks/__init__.py +6 -0
  115. roboticstoolbox/blocks/arm.py +1587 -0
  116. roboticstoolbox/blocks/mobile.py +500 -0
  117. roboticstoolbox/blocks/quad_model.py +132 -0
  118. roboticstoolbox/blocks/spatial.py +245 -0
  119. roboticstoolbox/blocks/uav.py +949 -0
  120. roboticstoolbox/core/Eigen/Cholesky +45 -0
  121. roboticstoolbox/core/Eigen/CholmodSupport +48 -0
  122. roboticstoolbox/core/Eigen/Core +384 -0
  123. roboticstoolbox/core/Eigen/Dense +7 -0
  124. roboticstoolbox/core/Eigen/Eigen +2 -0
  125. roboticstoolbox/core/Eigen/Eigenvalues +60 -0
  126. roboticstoolbox/core/Eigen/Geometry +59 -0
  127. roboticstoolbox/core/Eigen/Householder +29 -0
  128. roboticstoolbox/core/Eigen/IterativeLinearSolvers +48 -0
  129. roboticstoolbox/core/Eigen/Jacobi +32 -0
  130. roboticstoolbox/core/Eigen/KLUSupport +41 -0
  131. roboticstoolbox/core/Eigen/LU +47 -0
  132. roboticstoolbox/core/Eigen/MetisSupport +35 -0
  133. roboticstoolbox/core/Eigen/OrderingMethods +70 -0
  134. roboticstoolbox/core/Eigen/PaStiXSupport +49 -0
  135. roboticstoolbox/core/Eigen/PardisoSupport +35 -0
  136. roboticstoolbox/core/Eigen/QR +50 -0
  137. roboticstoolbox/core/Eigen/QtAlignedMalloc +39 -0
  138. roboticstoolbox/core/Eigen/SPQRSupport +34 -0
  139. roboticstoolbox/core/Eigen/SVD +50 -0
  140. roboticstoolbox/core/Eigen/Sparse +34 -0
  141. roboticstoolbox/core/Eigen/SparseCholesky +37 -0
  142. roboticstoolbox/core/Eigen/SparseCore +69 -0
  143. roboticstoolbox/core/Eigen/SparseLU +50 -0
  144. roboticstoolbox/core/Eigen/SparseQR +36 -0
  145. roboticstoolbox/core/Eigen/StdDeque +27 -0
  146. roboticstoolbox/core/Eigen/StdList +26 -0
  147. roboticstoolbox/core/Eigen/StdVector +27 -0
  148. roboticstoolbox/core/Eigen/SuperLUSupport +64 -0
  149. roboticstoolbox/core/Eigen/UmfPackSupport +40 -0
  150. roboticstoolbox/core/Eigen/src/Cholesky/LDLT.h +688 -0
  151. roboticstoolbox/core/Eigen/src/Cholesky/LLT.h +558 -0
  152. roboticstoolbox/core/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  153. roboticstoolbox/core/Eigen/src/CholmodSupport/CholmodSupport.h +682 -0
  154. roboticstoolbox/core/Eigen/src/Core/ArithmeticSequence.h +413 -0
  155. roboticstoolbox/core/Eigen/src/Core/Array.h +417 -0
  156. roboticstoolbox/core/Eigen/src/Core/ArrayBase.h +226 -0
  157. roboticstoolbox/core/Eigen/src/Core/ArrayWrapper.h +209 -0
  158. roboticstoolbox/core/Eigen/src/Core/Assign.h +90 -0
  159. roboticstoolbox/core/Eigen/src/Core/AssignEvaluator.h +1010 -0
  160. roboticstoolbox/core/Eigen/src/Core/Assign_MKL.h +178 -0
  161. roboticstoolbox/core/Eigen/src/Core/BandMatrix.h +353 -0
  162. roboticstoolbox/core/Eigen/src/Core/Block.h +448 -0
  163. roboticstoolbox/core/Eigen/src/Core/BooleanRedux.h +162 -0
  164. roboticstoolbox/core/Eigen/src/Core/CommaInitializer.h +164 -0
  165. roboticstoolbox/core/Eigen/src/Core/ConditionEstimator.h +175 -0
  166. roboticstoolbox/core/Eigen/src/Core/CoreEvaluators.h +1741 -0
  167. roboticstoolbox/core/Eigen/src/Core/CoreIterators.h +132 -0
  168. roboticstoolbox/core/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  169. roboticstoolbox/core/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  170. roboticstoolbox/core/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  171. roboticstoolbox/core/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  172. roboticstoolbox/core/Eigen/src/Core/CwiseUnaryView.h +132 -0
  173. roboticstoolbox/core/Eigen/src/Core/DenseBase.h +701 -0
  174. roboticstoolbox/core/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  175. roboticstoolbox/core/Eigen/src/Core/DenseStorage.h +652 -0
  176. roboticstoolbox/core/Eigen/src/Core/Diagonal.h +258 -0
  177. roboticstoolbox/core/Eigen/src/Core/DiagonalMatrix.h +391 -0
  178. roboticstoolbox/core/Eigen/src/Core/DiagonalProduct.h +28 -0
  179. roboticstoolbox/core/Eigen/src/Core/Dot.h +318 -0
  180. roboticstoolbox/core/Eigen/src/Core/EigenBase.h +160 -0
  181. roboticstoolbox/core/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  182. roboticstoolbox/core/Eigen/src/Core/Fuzzy.h +155 -0
  183. roboticstoolbox/core/Eigen/src/Core/GeneralProduct.h +465 -0
  184. roboticstoolbox/core/Eigen/src/Core/GenericPacketMath.h +1040 -0
  185. roboticstoolbox/core/Eigen/src/Core/GlobalFunctions.h +194 -0
  186. roboticstoolbox/core/Eigen/src/Core/IO.h +258 -0
  187. roboticstoolbox/core/Eigen/src/Core/IndexedView.h +237 -0
  188. roboticstoolbox/core/Eigen/src/Core/Inverse.h +117 -0
  189. roboticstoolbox/core/Eigen/src/Core/Map.h +171 -0
  190. roboticstoolbox/core/Eigen/src/Core/MapBase.h +310 -0
  191. roboticstoolbox/core/Eigen/src/Core/MathFunctions.h +2057 -0
  192. roboticstoolbox/core/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  193. roboticstoolbox/core/Eigen/src/Core/Matrix.h +565 -0
  194. roboticstoolbox/core/Eigen/src/Core/MatrixBase.h +547 -0
  195. roboticstoolbox/core/Eigen/src/Core/NestByValue.h +85 -0
  196. roboticstoolbox/core/Eigen/src/Core/NoAlias.h +109 -0
  197. roboticstoolbox/core/Eigen/src/Core/NumTraits.h +335 -0
  198. roboticstoolbox/core/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  199. roboticstoolbox/core/Eigen/src/Core/PermutationMatrix.h +605 -0
  200. roboticstoolbox/core/Eigen/src/Core/PlainObjectBase.h +1128 -0
  201. roboticstoolbox/core/Eigen/src/Core/Product.h +191 -0
  202. roboticstoolbox/core/Eigen/src/Core/ProductEvaluators.h +1179 -0
  203. roboticstoolbox/core/Eigen/src/Core/Random.h +218 -0
  204. roboticstoolbox/core/Eigen/src/Core/Redux.h +515 -0
  205. roboticstoolbox/core/Eigen/src/Core/Ref.h +381 -0
  206. roboticstoolbox/core/Eigen/src/Core/Replicate.h +142 -0
  207. roboticstoolbox/core/Eigen/src/Core/Reshaped.h +454 -0
  208. roboticstoolbox/core/Eigen/src/Core/ReturnByValue.h +119 -0
  209. roboticstoolbox/core/Eigen/src/Core/Reverse.h +217 -0
  210. roboticstoolbox/core/Eigen/src/Core/Select.h +164 -0
  211. roboticstoolbox/core/Eigen/src/Core/SelfAdjointView.h +365 -0
  212. roboticstoolbox/core/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  213. roboticstoolbox/core/Eigen/src/Core/Solve.h +188 -0
  214. roboticstoolbox/core/Eigen/src/Core/SolveTriangular.h +235 -0
  215. roboticstoolbox/core/Eigen/src/Core/SolverBase.h +168 -0
  216. roboticstoolbox/core/Eigen/src/Core/StableNorm.h +251 -0
  217. roboticstoolbox/core/Eigen/src/Core/StlIterators.h +463 -0
  218. roboticstoolbox/core/Eigen/src/Core/Stride.h +116 -0
  219. roboticstoolbox/core/Eigen/src/Core/Swap.h +68 -0
  220. roboticstoolbox/core/Eigen/src/Core/Transpose.h +464 -0
  221. roboticstoolbox/core/Eigen/src/Core/Transpositions.h +386 -0
  222. roboticstoolbox/core/Eigen/src/Core/TriangularMatrix.h +1001 -0
  223. roboticstoolbox/core/Eigen/src/Core/VectorBlock.h +96 -0
  224. roboticstoolbox/core/Eigen/src/Core/VectorwiseOp.h +784 -0
  225. roboticstoolbox/core/Eigen/src/Core/Visitor.h +381 -0
  226. roboticstoolbox/core/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  227. roboticstoolbox/core/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  228. roboticstoolbox/core/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  229. roboticstoolbox/core/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  230. roboticstoolbox/core/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  231. roboticstoolbox/core/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  232. roboticstoolbox/core/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  233. roboticstoolbox/core/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  234. roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  235. roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  236. roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  237. roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  238. roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  239. roboticstoolbox/core/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  240. roboticstoolbox/core/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  241. roboticstoolbox/core/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  242. roboticstoolbox/core/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  243. roboticstoolbox/core/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  244. roboticstoolbox/core/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  245. roboticstoolbox/core/Eigen/src/Core/arch/Default/Half.h +942 -0
  246. roboticstoolbox/core/Eigen/src/Core/arch/Default/Settings.h +49 -0
  247. roboticstoolbox/core/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  248. roboticstoolbox/core/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  249. roboticstoolbox/core/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  250. roboticstoolbox/core/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  251. roboticstoolbox/core/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  252. roboticstoolbox/core/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  253. roboticstoolbox/core/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  254. roboticstoolbox/core/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  255. roboticstoolbox/core/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  256. roboticstoolbox/core/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  257. roboticstoolbox/core/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  258. roboticstoolbox/core/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  259. roboticstoolbox/core/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  260. roboticstoolbox/core/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  261. roboticstoolbox/core/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  262. roboticstoolbox/core/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  263. roboticstoolbox/core/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  264. roboticstoolbox/core/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  265. roboticstoolbox/core/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  266. roboticstoolbox/core/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  267. roboticstoolbox/core/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  268. roboticstoolbox/core/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  269. roboticstoolbox/core/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  270. roboticstoolbox/core/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  271. roboticstoolbox/core/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  272. roboticstoolbox/core/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  273. roboticstoolbox/core/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  274. roboticstoolbox/core/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  275. roboticstoolbox/core/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  276. roboticstoolbox/core/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  277. roboticstoolbox/core/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  278. roboticstoolbox/core/Eigen/src/Core/functors/StlFunctors.h +166 -0
  279. roboticstoolbox/core/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  280. roboticstoolbox/core/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  281. roboticstoolbox/core/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  282. roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  283. roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  284. roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  285. roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  286. roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  287. roboticstoolbox/core/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  288. roboticstoolbox/core/Eigen/src/Core/products/Parallelizer.h +180 -0
  289. roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  290. roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  291. roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  292. roboticstoolbox/core/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  293. roboticstoolbox/core/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  294. roboticstoolbox/core/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  295. roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  296. roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  297. roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  298. roboticstoolbox/core/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  299. roboticstoolbox/core/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  300. roboticstoolbox/core/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  301. roboticstoolbox/core/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  302. roboticstoolbox/core/Eigen/src/Core/util/BlasUtil.h +583 -0
  303. roboticstoolbox/core/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  304. roboticstoolbox/core/Eigen/src/Core/util/Constants.h +563 -0
  305. roboticstoolbox/core/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  306. roboticstoolbox/core/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  307. roboticstoolbox/core/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  308. roboticstoolbox/core/Eigen/src/Core/util/IntegralConstant.h +272 -0
  309. roboticstoolbox/core/Eigen/src/Core/util/MKL_support.h +137 -0
  310. roboticstoolbox/core/Eigen/src/Core/util/Macros.h +1464 -0
  311. roboticstoolbox/core/Eigen/src/Core/util/Memory.h +1163 -0
  312. roboticstoolbox/core/Eigen/src/Core/util/Meta.h +812 -0
  313. roboticstoolbox/core/Eigen/src/Core/util/NonMPL2.h +3 -0
  314. roboticstoolbox/core/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  315. roboticstoolbox/core/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  316. roboticstoolbox/core/Eigen/src/Core/util/StaticAssert.h +221 -0
  317. roboticstoolbox/core/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  318. roboticstoolbox/core/Eigen/src/Core/util/XprHelper.h +856 -0
  319. roboticstoolbox/core/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  320. roboticstoolbox/core/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  321. roboticstoolbox/core/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  322. roboticstoolbox/core/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  323. roboticstoolbox/core/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  324. roboticstoolbox/core/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  325. roboticstoolbox/core/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  326. roboticstoolbox/core/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  327. roboticstoolbox/core/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  328. roboticstoolbox/core/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  329. roboticstoolbox/core/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  330. roboticstoolbox/core/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  331. roboticstoolbox/core/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  332. roboticstoolbox/core/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  333. roboticstoolbox/core/Eigen/src/Geometry/AlignedBox.h +486 -0
  334. roboticstoolbox/core/Eigen/src/Geometry/AngleAxis.h +247 -0
  335. roboticstoolbox/core/Eigen/src/Geometry/EulerAngles.h +114 -0
  336. roboticstoolbox/core/Eigen/src/Geometry/Homogeneous.h +501 -0
  337. roboticstoolbox/core/Eigen/src/Geometry/Hyperplane.h +282 -0
  338. roboticstoolbox/core/Eigen/src/Geometry/OrthoMethods.h +235 -0
  339. roboticstoolbox/core/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  340. roboticstoolbox/core/Eigen/src/Geometry/Quaternion.h +870 -0
  341. roboticstoolbox/core/Eigen/src/Geometry/Rotation2D.h +199 -0
  342. roboticstoolbox/core/Eigen/src/Geometry/RotationBase.h +206 -0
  343. roboticstoolbox/core/Eigen/src/Geometry/Scaling.h +188 -0
  344. roboticstoolbox/core/Eigen/src/Geometry/Transform.h +1563 -0
  345. roboticstoolbox/core/Eigen/src/Geometry/Translation.h +202 -0
  346. roboticstoolbox/core/Eigen/src/Geometry/Umeyama.h +166 -0
  347. roboticstoolbox/core/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  348. roboticstoolbox/core/Eigen/src/Householder/BlockHouseholder.h +110 -0
  349. roboticstoolbox/core/Eigen/src/Householder/Householder.h +176 -0
  350. roboticstoolbox/core/Eigen/src/Householder/HouseholderSequence.h +545 -0
  351. roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +226 -0
  352. roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +212 -0
  353. roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +229 -0
  354. roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +394 -0
  355. roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +453 -0
  356. roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +444 -0
  357. roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +198 -0
  358. roboticstoolbox/core/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +117 -0
  359. roboticstoolbox/core/Eigen/src/Jacobi/Jacobi.h +483 -0
  360. roboticstoolbox/core/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  361. roboticstoolbox/core/Eigen/src/LU/Determinant.h +117 -0
  362. roboticstoolbox/core/Eigen/src/LU/FullPivLU.h +877 -0
  363. roboticstoolbox/core/Eigen/src/LU/InverseImpl.h +432 -0
  364. roboticstoolbox/core/Eigen/src/LU/PartialPivLU.h +624 -0
  365. roboticstoolbox/core/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  366. roboticstoolbox/core/Eigen/src/LU/arch/InverseSize4.h +351 -0
  367. roboticstoolbox/core/Eigen/src/MetisSupport/MetisSupport.h +137 -0
  368. roboticstoolbox/core/Eigen/src/OrderingMethods/Amd.h +435 -0
  369. roboticstoolbox/core/Eigen/src/OrderingMethods/Eigen_Colamd.h +1863 -0
  370. roboticstoolbox/core/Eigen/src/OrderingMethods/Ordering.h +153 -0
  371. roboticstoolbox/core/Eigen/src/PaStiXSupport/PaStiXSupport.h +678 -0
  372. roboticstoolbox/core/Eigen/src/PardisoSupport/PardisoSupport.h +545 -0
  373. roboticstoolbox/core/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  374. roboticstoolbox/core/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  375. roboticstoolbox/core/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  376. roboticstoolbox/core/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  377. roboticstoolbox/core/Eigen/src/QR/HouseholderQR.h +434 -0
  378. roboticstoolbox/core/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  379. roboticstoolbox/core/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +335 -0
  380. roboticstoolbox/core/Eigen/src/SVD/BDCSVD.h +1366 -0
  381. roboticstoolbox/core/Eigen/src/SVD/JacobiSVD.h +812 -0
  382. roboticstoolbox/core/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  383. roboticstoolbox/core/Eigen/src/SVD/SVDBase.h +376 -0
  384. roboticstoolbox/core/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  385. roboticstoolbox/core/Eigen/src/SparseCholesky/SimplicialCholesky.h +697 -0
  386. roboticstoolbox/core/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +174 -0
  387. roboticstoolbox/core/Eigen/src/SparseCore/AmbiVector.h +378 -0
  388. roboticstoolbox/core/Eigen/src/SparseCore/CompressedStorage.h +274 -0
  389. roboticstoolbox/core/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +352 -0
  390. roboticstoolbox/core/Eigen/src/SparseCore/MappedSparseMatrix.h +67 -0
  391. roboticstoolbox/core/Eigen/src/SparseCore/SparseAssign.h +270 -0
  392. roboticstoolbox/core/Eigen/src/SparseCore/SparseBlock.h +571 -0
  393. roboticstoolbox/core/Eigen/src/SparseCore/SparseColEtree.h +206 -0
  394. roboticstoolbox/core/Eigen/src/SparseCore/SparseCompressedBase.h +370 -0
  395. roboticstoolbox/core/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +722 -0
  396. roboticstoolbox/core/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +150 -0
  397. roboticstoolbox/core/Eigen/src/SparseCore/SparseDenseProduct.h +342 -0
  398. roboticstoolbox/core/Eigen/src/SparseCore/SparseDiagonalProduct.h +138 -0
  399. roboticstoolbox/core/Eigen/src/SparseCore/SparseDot.h +98 -0
  400. roboticstoolbox/core/Eigen/src/SparseCore/SparseFuzzy.h +29 -0
  401. roboticstoolbox/core/Eigen/src/SparseCore/SparseMap.h +305 -0
  402. roboticstoolbox/core/Eigen/src/SparseCore/SparseMatrix.h +1518 -0
  403. roboticstoolbox/core/Eigen/src/SparseCore/SparseMatrixBase.h +398 -0
  404. roboticstoolbox/core/Eigen/src/SparseCore/SparsePermutation.h +178 -0
  405. roboticstoolbox/core/Eigen/src/SparseCore/SparseProduct.h +181 -0
  406. roboticstoolbox/core/Eigen/src/SparseCore/SparseRedux.h +49 -0
  407. roboticstoolbox/core/Eigen/src/SparseCore/SparseRef.h +397 -0
  408. roboticstoolbox/core/Eigen/src/SparseCore/SparseSelfAdjointView.h +659 -0
  409. roboticstoolbox/core/Eigen/src/SparseCore/SparseSolverBase.h +124 -0
  410. roboticstoolbox/core/Eigen/src/SparseCore/SparseSparseProductWithPruning.h +198 -0
  411. roboticstoolbox/core/Eigen/src/SparseCore/SparseTranspose.h +92 -0
  412. roboticstoolbox/core/Eigen/src/SparseCore/SparseTriangularView.h +189 -0
  413. roboticstoolbox/core/Eigen/src/SparseCore/SparseUtil.h +186 -0
  414. roboticstoolbox/core/Eigen/src/SparseCore/SparseVector.h +478 -0
  415. roboticstoolbox/core/Eigen/src/SparseCore/SparseView.h +254 -0
  416. roboticstoolbox/core/Eigen/src/SparseCore/TriangularSolver.h +315 -0
  417. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU.h +923 -0
  418. roboticstoolbox/core/Eigen/src/SparseLU/SparseLUImpl.h +66 -0
  419. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_Memory.h +226 -0
  420. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_Structs.h +110 -0
  421. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +375 -0
  422. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_Utils.h +80 -0
  423. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_column_bmod.h +181 -0
  424. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_column_dfs.h +179 -0
  425. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h +107 -0
  426. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +280 -0
  427. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h +126 -0
  428. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_kernel_bmod.h +130 -0
  429. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_panel_bmod.h +223 -0
  430. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_panel_dfs.h +258 -0
  431. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_pivotL.h +137 -0
  432. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_pruneL.h +136 -0
  433. roboticstoolbox/core/Eigen/src/SparseLU/SparseLU_relax_snode.h +83 -0
  434. roboticstoolbox/core/Eigen/src/SparseQR/SparseQR.h +758 -0
  435. roboticstoolbox/core/Eigen/src/StlSupport/StdDeque.h +116 -0
  436. roboticstoolbox/core/Eigen/src/StlSupport/StdList.h +106 -0
  437. roboticstoolbox/core/Eigen/src/StlSupport/StdVector.h +131 -0
  438. roboticstoolbox/core/Eigen/src/StlSupport/details.h +84 -0
  439. roboticstoolbox/core/Eigen/src/SuperLUSupport/SuperLUSupport.h +1025 -0
  440. roboticstoolbox/core/Eigen/src/UmfPackSupport/UmfPackSupport.h +642 -0
  441. roboticstoolbox/core/Eigen/src/misc/Image.h +82 -0
  442. roboticstoolbox/core/Eigen/src/misc/Kernel.h +79 -0
  443. roboticstoolbox/core/Eigen/src/misc/RealSvd2x2.h +55 -0
  444. roboticstoolbox/core/Eigen/src/misc/blas.h +440 -0
  445. roboticstoolbox/core/Eigen/src/misc/lapack.h +152 -0
  446. roboticstoolbox/core/Eigen/src/misc/lapacke.h +16292 -0
  447. roboticstoolbox/core/Eigen/src/misc/lapacke_mangling.h +17 -0
  448. roboticstoolbox/core/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  449. roboticstoolbox/core/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  450. roboticstoolbox/core/Eigen/src/plugins/BlockMethods.h +1442 -0
  451. roboticstoolbox/core/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  452. roboticstoolbox/core/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  453. roboticstoolbox/core/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  454. roboticstoolbox/core/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  455. roboticstoolbox/core/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  456. roboticstoolbox/core/Eigen/src/plugins/ReshapedMethods.h +149 -0
  457. roboticstoolbox/core/fknm.cpp +1557 -0
  458. roboticstoolbox/core/fknm.h +55 -0
  459. roboticstoolbox/core/frne.c +351 -0
  460. roboticstoolbox/core/frne.h +96 -0
  461. roboticstoolbox/core/ik.cpp +301 -0
  462. roboticstoolbox/core/ik.h +59 -0
  463. roboticstoolbox/core/linalg.cpp +316 -0
  464. roboticstoolbox/core/linalg.h +64 -0
  465. roboticstoolbox/core/methods.cpp +372 -0
  466. roboticstoolbox/core/methods.h +32 -0
  467. roboticstoolbox/core/ne.c +493 -0
  468. roboticstoolbox/core/structs.cpp +24 -0
  469. roboticstoolbox/core/structs.h +62 -0
  470. roboticstoolbox/core/vmath.c +163 -0
  471. roboticstoolbox/core/vmath.h +32 -0
  472. roboticstoolbox/fknm.cp312-win_amd64.pyd +0 -0
  473. roboticstoolbox/frne.cp312-win_amd64.pyd +0 -0
  474. roboticstoolbox/mobile/Animations.py +485 -0
  475. roboticstoolbox/mobile/Bug2.py +455 -0
  476. roboticstoolbox/mobile/CurvaturePolyPlanner.py +179 -0
  477. roboticstoolbox/mobile/DistanceTransformPlanner.py +395 -0
  478. roboticstoolbox/mobile/DstarPlanner.py +591 -0
  479. roboticstoolbox/mobile/DubinsPlanner.py +474 -0
  480. roboticstoolbox/mobile/EKF.py +1617 -0
  481. roboticstoolbox/mobile/LatticePlanner.py +419 -0
  482. roboticstoolbox/mobile/OccGrid.py +613 -0
  483. roboticstoolbox/mobile/PRMPlanner.py +348 -0
  484. roboticstoolbox/mobile/ParticleFilter.py +706 -0
  485. roboticstoolbox/mobile/PlannerBase.py +1009 -0
  486. roboticstoolbox/mobile/PoseGraph.py +544 -0
  487. roboticstoolbox/mobile/QuinticPolyPlanner.py +349 -0
  488. roboticstoolbox/mobile/RRTPlanner.py +359 -0
  489. roboticstoolbox/mobile/ReedsSheppPlanner.py +545 -0
  490. roboticstoolbox/mobile/Vehicle.py +1909 -0
  491. roboticstoolbox/mobile/__init__.py +193 -0
  492. roboticstoolbox/mobile/drivers.py +390 -0
  493. roboticstoolbox/mobile/landmarkmap.py +181 -0
  494. roboticstoolbox/mobile/sensors.py +771 -0
  495. roboticstoolbox/models/DH/AL5D.py +121 -0
  496. roboticstoolbox/models/DH/Ball.py +87 -0
  497. roboticstoolbox/models/DH/Baxter.py +91 -0
  498. roboticstoolbox/models/DH/Cobra600.py +63 -0
  499. roboticstoolbox/models/DH/Coil.py +80 -0
  500. roboticstoolbox/models/DH/Hyper.py +83 -0
  501. roboticstoolbox/models/DH/Hyper3d.py +85 -0
  502. roboticstoolbox/models/DH/IRB140.py +159 -0
  503. roboticstoolbox/models/DH/Jaco.py +102 -0
  504. roboticstoolbox/models/DH/KR5.py +112 -0
  505. roboticstoolbox/models/DH/LWR4.py +85 -0
  506. roboticstoolbox/models/DH/Mico.py +102 -0
  507. roboticstoolbox/models/DH/Orion5.py +91 -0
  508. roboticstoolbox/models/DH/P8.py +80 -0
  509. roboticstoolbox/models/DH/Panda.py +178 -0
  510. roboticstoolbox/models/DH/Planar2.py +69 -0
  511. roboticstoolbox/models/DH/Planar3.py +51 -0
  512. roboticstoolbox/models/DH/Puma560.py +326 -0
  513. roboticstoolbox/models/DH/README.md +216 -0
  514. roboticstoolbox/models/DH/Sawyer.py +85 -0
  515. roboticstoolbox/models/DH/Stanford.py +147 -0
  516. roboticstoolbox/models/DH/TwoLink.py +109 -0
  517. roboticstoolbox/models/DH/UR10.py +124 -0
  518. roboticstoolbox/models/DH/UR3.py +98 -0
  519. roboticstoolbox/models/DH/UR5.py +98 -0
  520. roboticstoolbox/models/DH/Uprighttl.py +24 -0
  521. roboticstoolbox/models/DH/__init__.py +52 -0
  522. roboticstoolbox/models/ETS/Frankie.py +90 -0
  523. roboticstoolbox/models/ETS/GenericSeven.py +54 -0
  524. roboticstoolbox/models/ETS/Omni.py +74 -0
  525. roboticstoolbox/models/ETS/Panda.py +69 -0
  526. roboticstoolbox/models/ETS/Planar2.py +49 -0
  527. roboticstoolbox/models/ETS/Planar_Y.py +65 -0
  528. roboticstoolbox/models/ETS/Puma560.py +69 -0
  529. roboticstoolbox/models/ETS/XYPanda.py +84 -0
  530. roboticstoolbox/models/ETS/__init__.py +20 -0
  531. roboticstoolbox/models/README.md +9 -0
  532. roboticstoolbox/models/URDF/AL5D.py +54 -0
  533. roboticstoolbox/models/URDF/Fetch.py +70 -0
  534. roboticstoolbox/models/URDF/FetchCamera.py +71 -0
  535. roboticstoolbox/models/URDF/Frankie.py +75 -0
  536. roboticstoolbox/models/URDF/FrankieOmni.py +94 -0
  537. roboticstoolbox/models/URDF/KinovaGen3.py +71 -0
  538. roboticstoolbox/models/URDF/LBR.py +59 -0
  539. roboticstoolbox/models/URDF/Mico.py +68 -0
  540. roboticstoolbox/models/URDF/PR2.py +64 -0
  541. roboticstoolbox/models/URDF/Panda.py +67 -0
  542. roboticstoolbox/models/URDF/Puma560.py +97 -0
  543. roboticstoolbox/models/URDF/UR10.py +53 -0
  544. roboticstoolbox/models/URDF/UR3.py +53 -0
  545. roboticstoolbox/models/URDF/UR5.py +74 -0
  546. roboticstoolbox/models/URDF/Valkyrie.py +84 -0
  547. roboticstoolbox/models/URDF/YuMi.py +109 -0
  548. roboticstoolbox/models/URDF/__init__.py +53 -0
  549. roboticstoolbox/models/URDF/px100.py +56 -0
  550. roboticstoolbox/models/URDF/px150.py +56 -0
  551. roboticstoolbox/models/URDF/rx150.py +56 -0
  552. roboticstoolbox/models/URDF/rx200.py +56 -0
  553. roboticstoolbox/models/URDF/vx300.py +56 -0
  554. roboticstoolbox/models/URDF/vx300s.py +56 -0
  555. roboticstoolbox/models/URDF/wx200.py +56 -0
  556. roboticstoolbox/models/URDF/wx250.py +56 -0
  557. roboticstoolbox/models/URDF/wx250s.py +56 -0
  558. roboticstoolbox/models/__init__.py +7 -0
  559. roboticstoolbox/models/list.py +119 -0
  560. roboticstoolbox/robot/BaseRobot.py +3133 -0
  561. roboticstoolbox/robot/DHFactor.py +522 -0
  562. roboticstoolbox/robot/DHLink.py +981 -0
  563. roboticstoolbox/robot/DHRobot.py +2520 -0
  564. roboticstoolbox/robot/Dynamics.py +1620 -0
  565. roboticstoolbox/robot/ELink.py +23 -0
  566. roboticstoolbox/robot/ERobot.py +25 -0
  567. roboticstoolbox/robot/ET.py +1097 -0
  568. roboticstoolbox/robot/ETS.py +3542 -0
  569. roboticstoolbox/robot/Gripper.py +282 -0
  570. roboticstoolbox/robot/IK.py +1522 -0
  571. roboticstoolbox/robot/Link.py +1698 -0
  572. roboticstoolbox/robot/PoERobot.py +348 -0
  573. roboticstoolbox/robot/Robot.py +2100 -0
  574. roboticstoolbox/robot/RobotKinematics.py +1725 -0
  575. roboticstoolbox/robot/RobotProto.py +92 -0
  576. roboticstoolbox/robot/__init__.py +54 -0
  577. roboticstoolbox/tools/DHFactor.py +375 -0
  578. roboticstoolbox/tools/Ticker.py +53 -0
  579. roboticstoolbox/tools/__init__.py +54 -0
  580. roboticstoolbox/tools/data.py +187 -0
  581. roboticstoolbox/tools/jsingu.py +51 -0
  582. roboticstoolbox/tools/null.py +48 -0
  583. roboticstoolbox/tools/numerical.py +96 -0
  584. roboticstoolbox/tools/p_servo.py +106 -0
  585. roboticstoolbox/tools/params.py +11 -0
  586. roboticstoolbox/tools/plot.py +109 -0
  587. roboticstoolbox/tools/trajectory.py +1152 -0
  588. roboticstoolbox/tools/types.py +13 -0
  589. roboticstoolbox/tools/urdf/__init__.py +45 -0
  590. roboticstoolbox/tools/urdf/tests/data/ur5.urdf +341 -0
  591. roboticstoolbox/tools/urdf/tests/test_urdf.py +116 -0
  592. roboticstoolbox/tools/urdf/urdf.py +1976 -0
  593. roboticstoolbox/tools/urdf/utils.py +50 -0
  594. roboticstoolbox/tools/xacro/__init__.py +1148 -0
  595. roboticstoolbox/tools/xacro/cli.py +128 -0
  596. roboticstoolbox/tools/xacro/color.py +66 -0
  597. roboticstoolbox/tools/xacro/tests/CMakeLists.txt +4 -0
  598. roboticstoolbox/tools/xacro/tests/broken.xacro +1 -0
  599. roboticstoolbox/tools/xacro/tests/emoji.xacro +5 -0
  600. roboticstoolbox/tools/xacro/tests/include1.xacro +4 -0
  601. roboticstoolbox/tools/xacro/tests/include1.xml +1 -0
  602. roboticstoolbox/tools/xacro/tests/include2.xacro +4 -0
  603. roboticstoolbox/tools/xacro/tests/include2.xml +1 -0
  604. roboticstoolbox/tools/xacro/tests/robots/README +4 -0
  605. roboticstoolbox/tools/xacro/tests/robots/pr2/base_v0/base.gazebo.xacro +59 -0
  606. roboticstoolbox/tools/xacro/tests/robots/pr2/base_v0/base.transmission.xacro +24 -0
  607. roboticstoolbox/tools/xacro/tests/robots/pr2/base_v0/base.urdf.xacro +264 -0
  608. roboticstoolbox/tools/xacro/tests/robots/pr2/common.xacro +71 -0
  609. roboticstoolbox/tools/xacro/tests/robots/pr2/forearm_v0/forearm.gazebo.xacro +36 -0
  610. roboticstoolbox/tools/xacro/tests/robots/pr2/forearm_v0/forearm.transmission.xacro +20 -0
  611. roboticstoolbox/tools/xacro/tests/robots/pr2/forearm_v0/forearm.urdf.xacro +130 -0
  612. roboticstoolbox/tools/xacro/tests/robots/pr2/gazebo/gazebo.urdf.xacro +24 -0
  613. roboticstoolbox/tools/xacro/tests/robots/pr2/gripper_v0/gripper.gazebo.xacro +288 -0
  614. roboticstoolbox/tools/xacro/tests/robots/pr2/gripper_v0/gripper.transmission.xacro +50 -0
  615. roboticstoolbox/tools/xacro/tests/robots/pr2/gripper_v0/gripper.urdf.xacro +374 -0
  616. roboticstoolbox/tools/xacro/tests/robots/pr2/head_v0/head.gazebo.xacro +16 -0
  617. roboticstoolbox/tools/xacro/tests/robots/pr2/head_v0/head.transmission.xacro +34 -0
  618. roboticstoolbox/tools/xacro/tests/robots/pr2/head_v0/head.urdf.xacro +147 -0
  619. roboticstoolbox/tools/xacro/tests/robots/pr2/materials.urdf.xacro +52 -0
  620. roboticstoolbox/tools/xacro/tests/robots/pr2/pr2.urdf.xacro +157 -0
  621. roboticstoolbox/tools/xacro/tests/robots/pr2/pr2_1.11.4.xml +3781 -0
  622. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/double_stereo_camera.gazebo.xacro +16 -0
  623. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/double_stereo_camera.urdf.xacro +61 -0
  624. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/head_sensor_package.gazebo.xacro +20 -0
  625. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/head_sensor_package.urdf.xacro +63 -0
  626. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/hokuyo_lx30_laser.gazebo.xacro +39 -0
  627. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/hokuyo_lx30_laser.urdf.xacro +27 -0
  628. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_camera.gazebo.xacro +87 -0
  629. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_camera.urdf.xacro +55 -0
  630. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_prosilica_camera.gazebo.xacro +193 -0
  631. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/kinect_prosilica_camera.urdf.xacro +181 -0
  632. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/microstrain_3dmgx2_imu.gazebo.xacro +20 -0
  633. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/microstrain_3dmgx2_imu.urdf.xacro +25 -0
  634. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/projector_wg6802418.gazebo.xacro +31 -0
  635. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/projector_wg6802418.urdf.xacro +42 -0
  636. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/prosilica_gc2450_camera.gazebo.xacro +43 -0
  637. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/prosilica_gc2450_camera.urdf.xacro +49 -0
  638. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/stereo_camera.gazebo.xacro +23 -0
  639. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/stereo_camera.urdf.xacro +71 -0
  640. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/wge100_camera.gazebo.xacro +46 -0
  641. roboticstoolbox/tools/xacro/tests/robots/pr2/sensors/wge100_camera.urdf.xacro +47 -0
  642. roboticstoolbox/tools/xacro/tests/robots/pr2/shoulder_v0/shoulder.gazebo.xacro +40 -0
  643. roboticstoolbox/tools/xacro/tests/robots/pr2/shoulder_v0/shoulder.transmission.xacro +35 -0
  644. roboticstoolbox/tools/xacro/tests/robots/pr2/shoulder_v0/shoulder.urdf.xacro +167 -0
  645. roboticstoolbox/tools/xacro/tests/robots/pr2/tilting_laser_v0/tilting_laser.gazebo.xacro +11 -0
  646. roboticstoolbox/tools/xacro/tests/robots/pr2/tilting_laser_v0/tilting_laser.transmission.xacro +14 -0
  647. roboticstoolbox/tools/xacro/tests/robots/pr2/tilting_laser_v0/tilting_laser.urdf.xacro +60 -0
  648. roboticstoolbox/tools/xacro/tests/robots/pr2/torso_v0/torso.gazebo.xacro +37 -0
  649. roboticstoolbox/tools/xacro/tests/robots/pr2/torso_v0/torso.transmission.xacro +22 -0
  650. roboticstoolbox/tools/xacro/tests/robots/pr2/torso_v0/torso.urdf.xacro +122 -0
  651. roboticstoolbox/tools/xacro/tests/robots/pr2/upper_arm_v0/upper_arm.gazebo.xacro +39 -0
  652. roboticstoolbox/tools/xacro/tests/robots/pr2/upper_arm_v0/upper_arm.transmission.xacro +28 -0
  653. roboticstoolbox/tools/xacro/tests/robots/pr2/upper_arm_v0/upper_arm.urdf.xacro +173 -0
  654. roboticstoolbox/tools/xacro/tests/settings.yaml +9 -0
  655. roboticstoolbox/tools/xacro/tests/subdir/foo.xacro +3 -0
  656. roboticstoolbox/tools/xacro/tests/subdir/include-recursive.xacro +5 -0
  657. roboticstoolbox/tools/xacro/tests/subdir/include1.xml +1 -0
  658. roboticstoolbox/tools/xacro/tests/test_xacro.py +1418 -0
  659. roboticstoolbox/tools/xacro/xmlutils.py +152 -0
  660. roboticstoolbox_python-1.3.0.dist-info/METADATA +552 -0
  661. roboticstoolbox_python-1.3.0.dist-info/RECORD +673 -0
  662. roboticstoolbox_python-1.3.0.dist-info/WHEEL +5 -0
  663. roboticstoolbox_python-1.3.0.dist-info/entry_points.txt +6 -0
  664. roboticstoolbox_python-1.3.0.dist-info/licenses/LICENSE +21 -0
  665. spatialgeometry/__init__.py +32 -0
  666. spatialgeometry/geom/CollisionShape.py +419 -0
  667. spatialgeometry/geom/SceneGroup.py +26 -0
  668. spatialgeometry/geom/SceneNode.py +315 -0
  669. spatialgeometry/geom/Shape.py +420 -0
  670. spatialgeometry/geom/__init__.py +26 -0
  671. spatialgeometry/scene.py +107 -0
  672. spatialgeometry/tools/__init__.py +0 -0
  673. spatialgeometry/tools/stdout_supress.py +302 -0
@@ -0,0 +1,769 @@
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
+ def __init__(self):
83
+
84
+ super(PyPlot, self).__init__()
85
+ self.robots = []
86
+ self.ellipses = []
87
+ self.shapes = []
88
+ self.render_mode = "window"
89
+ self.inline_every_n = 1
90
+ self.inline_format = "svg"
91
+ self.inline_dpi = None
92
+ self._inline_step_count = 0
93
+ self._inline_display_handle = None
94
+ self._inline_is_jl = False
95
+
96
+ if not _mpl: # pragma nocover
97
+ raise ImportError(
98
+ "\n\nYou do not have matplotlib installed, do:\n"
99
+ "pip install matplotlib\n\n"
100
+ )
101
+
102
+ def __repr__(self):
103
+ s = ""
104
+ for robot in self.robots:
105
+ s += f" robot: {robot.name}\n"
106
+ for ellipse in self.ellipses:
107
+ s += f" ellipse: {ellipse}\n"
108
+ for shape in self.shapes:
109
+ s += f" shape: {shape}\n"
110
+
111
+ if s == "":
112
+ return f"PyPlot3D backend, t = {self.sim_time}, empty scene"
113
+ else:
114
+ return f"PyPlot3D backend, t = {self.sim_time}, scene:\n" + s
115
+
116
+ def launch(self, name=None, fig=None, ax=None, limits=None, **kwargs):
117
+ """
118
+ Launch a graphical interface
119
+
120
+ ```env = launch()``` creates a blank 3D matplotlib figure and returns
121
+ a reference to the backend.
122
+
123
+ Optional keyword arguments
124
+ --------------------------
125
+ ax
126
+ Existing Matplotlib 3D axes to render into.
127
+ render_mode
128
+ One of ``'window'``, ``'notebook-widget'``, or ``'notebook-inline'``.
129
+ inline_every_n
130
+ Push one inline frame every N simulation steps (inline mode only).
131
+ inline_format
132
+ Inline frame format: ``'svg'`` (default) or ``'png'``.
133
+ inline_dpi
134
+ DPI for PNG inline frames only. Ignored for SVG.
135
+ """
136
+
137
+ super().launch()
138
+
139
+ self.render_mode = _resolve_render_mode(kwargs.get("render_mode"))
140
+ self.inline_every_n = max(1, int(kwargs.get("inline_every_n", 1)))
141
+ self.inline_format = kwargs.get("inline_format", "svg")
142
+ if self.inline_format not in ["png", "svg"]:
143
+ raise ValueError("inline_format must be either 'png' or 'svg'")
144
+ inline_dpi = kwargs.get("inline_dpi", None)
145
+ if inline_dpi is not None:
146
+ inline_dpi = float(inline_dpi)
147
+ if inline_dpi <= 0:
148
+ raise ValueError("inline_dpi must be > 0")
149
+ self.inline_dpi = inline_dpi
150
+ self._inline_step_count = 0
151
+ self._inline_display_handle = None
152
+ self._inline_is_jl = sys.platform == "emscripten"
153
+
154
+ self.limits = limits
155
+ if limits is not None:
156
+ self.limits = getvector(limits, 6)
157
+
158
+ projection = "ortho"
159
+ labels = ["X", "Y", "Z"]
160
+
161
+ if name is None:
162
+ name = "Robotics Toolbox for Python"
163
+
164
+ if ax is not None:
165
+ if fig is not None and ax.figure is not fig:
166
+ raise ValueError("ax does not belong to fig")
167
+
168
+ # Caller supplied axes; reuse its parent figure.
169
+ self.ax = ax
170
+ self.fig = ax.figure
171
+ else:
172
+ if fig is None:
173
+ self.fig = plt.figure(name)
174
+ else:
175
+ self.fig = fig
176
+ manager = getattr(self.fig.canvas, "manager", None)
177
+ if manager is not None and hasattr(manager, "set_window_title"):
178
+ manager.set_window_title(name)
179
+
180
+ # Create a 3D axes
181
+ self.ax = self.fig.add_subplot(111, projection="3d", proj_type=projection)
182
+
183
+ if not hasattr(self.ax, "set_zbound"):
184
+ raise ValueError("ax must be a 3D matplotlib axes")
185
+
186
+ if ax is None:
187
+ self.fig.subplots_adjust(left=-0.09, bottom=0, top=1, right=0.99)
188
+
189
+ self.ax.set_facecolor("white")
190
+ manager = getattr(self.ax.figure.canvas, "manager", None)
191
+ if manager is not None and hasattr(manager, "set_window_title"):
192
+ manager.set_window_title(
193
+ f"Robotics Toolbox for Python (Figure {self.ax.figure.number})"
194
+ )
195
+
196
+ self.ax.set_xbound(-0.5, 0.5)
197
+ self.ax.set_ybound(-0.5, 0.5)
198
+ self.ax.set_zbound(0.0, 0.5)
199
+
200
+ self.ax.set_xlabel(labels[0])
201
+ self.ax.set_ylabel(labels[1])
202
+ self.ax.set_zlabel(labels[2])
203
+
204
+ if limits is not None:
205
+ self.ax.set_xlim3d([limits[0], limits[1]])
206
+ self.ax.set_ylim3d([limits[2], limits[3]])
207
+ self.ax.set_zlim3d([limits[4], limits[5]])
208
+
209
+ self.limits = limits
210
+
211
+ # disable the display of value under cursor
212
+ # self.ax.format_coord = lambda x, y: ''
213
+
214
+ # add time display in top-right corner
215
+ self.timer = self.fig.text(0.85, 0.95, "")
216
+
217
+ # In inline notebook mode (notably JupyterLite), keeping this figure
218
+ # registered with pyplot can trigger repeated auto-display of blank
219
+ # Figure reprs. Detach it and drive rendering via _push_inline_frame().
220
+ if self.render_mode == "notebook-inline":
221
+ plt.close(self.fig)
222
+
223
+ if self.render_mode == "window":
224
+ plt.ion()
225
+ plt.show()
226
+ else:
227
+ if self.render_mode == "notebook-inline":
228
+ plt.ioff()
229
+ else:
230
+ plt.ion()
231
+ if self.render_mode != "notebook-inline":
232
+ self.fig.canvas.draw()
233
+
234
+ self.sim_time = 0
235
+
236
+ # # Set the signal handler and a 0.1 second plot updater
237
+ # signal.signal(signal.SIGALRM, self._plot_handler)
238
+ # signal.setitimer(signal.ITIMER_REAL, 0.1, 0.1)
239
+ # TODO still need to finish this, and get Jupyter animation working
240
+
241
+ def step(self, dt=0.05):
242
+ """
243
+ Update the graphical scene
244
+
245
+ :param dt: time step in seconds, defaults to 50 (0.05 s)
246
+ :type dt: int, optional
247
+
248
+ ``env.step(args)`` triggers an update of the 3D scene in the matplotlib
249
+ window referenced by ``env``.
250
+
251
+ .. note::
252
+
253
+ - Each robot in the scene is updated based on
254
+ their control type (position, velocity, acceleration, or torque).
255
+ - Upon acting, the other three of the four control types will be
256
+ updated in the internal state of the robot object.
257
+ - The control type is defined by the robot object, and not all
258
+ robot objects support all control types.
259
+ - Execution is blocked for the specified interval
260
+
261
+ """
262
+
263
+ super().step()
264
+
265
+ # update the robot's state
266
+ for rpl in self.robots:
267
+ robot = rpl.robot
268
+
269
+ if rpl.readonly or robot.control_mode == "p":
270
+ pass # pragma: no cover
271
+ elif robot.control_mode == "v":
272
+ for i in range(robot.n):
273
+ robot.q[i] += robot.qd[i] * (dt)
274
+ elif robot.control_mode == "a": # pragma: no cover
275
+ pass
276
+ else: # pragma: no cover
277
+ raise ValueError(
278
+ "Invalid robot.control_type. Must be one of 'p', 'v', or 'a'"
279
+ )
280
+
281
+ # plt.ioff()
282
+
283
+ # update all ellipses
284
+ for ellipse in self.ellipses:
285
+ ellipse.draw()
286
+
287
+ # update all shapes
288
+ for shape in self.shapes:
289
+ shape.draw()
290
+
291
+ # update all robots
292
+ for robot in self.robots:
293
+ robot.draw()
294
+
295
+ self._set_axes_equal()
296
+
297
+ # update time and display it on plot
298
+ if self.sim_time > 0:
299
+ self.timer.set_text(f"t = {self.sim_time:.2f}")
300
+ self.sim_time += dt
301
+
302
+ # plt.ion()
303
+
304
+ if self.render_mode == "window":
305
+ plt.draw()
306
+ plt.pause(dt)
307
+ elif self.render_mode == "notebook-widget":
308
+ plt.draw()
309
+ self.fig.canvas.draw_idle()
310
+ time.sleep(dt)
311
+ else:
312
+ if self._inline_step_count % self.inline_every_n == 0:
313
+ self._push_inline_frame()
314
+ self._inline_step_count += 1
315
+ time.sleep(dt)
316
+
317
+ def reset(self):
318
+ """
319
+ Reset the graphical scene
320
+
321
+ ``env.reset()`` triggers a reset of the 3D scene in the matplotlib
322
+ window referenced by ``env``. It is restored to the original state
323
+ defined by ``launch()``.
324
+ """
325
+ # TODO what does this actually do for matplotlib??
326
+
327
+ super().reset()
328
+
329
+ def restart(self):
330
+ """
331
+ Restart the graphics display
332
+
333
+ ``env.restart()`` triggers a restart of the matplotlib view referenced
334
+ by ``env``. It is closed and relaunched to the original state defined
335
+ by ``launch()``.
336
+
337
+ """
338
+ # TODO what does this actually do for matplotlib??
339
+
340
+ super().restart()
341
+
342
+ def close(self):
343
+ """
344
+ ``env.close()`` gracefully closes the matplotlib window
345
+ referenced by ``env``.
346
+ """
347
+ # TODO what does this actually do for matplotlib??
348
+
349
+ super().close()
350
+
351
+ # signal.setitimer(signal.ITIMER_REAL, 0)
352
+ plt.close(self.fig)
353
+
354
+ #
355
+ # Methods to interface with the robots created in other environments
356
+ #
357
+
358
+ def add(
359
+ self,
360
+ ob,
361
+ readonly=False,
362
+ display=True,
363
+ jointaxes=True,
364
+ jointlabels=False,
365
+ eeframe=True,
366
+ shadow=True,
367
+ name=True,
368
+ options=None,
369
+ ):
370
+ """
371
+ Add a robot to the graphical scene
372
+
373
+ :param ob: The object to add to the plot (robot or ellipse)
374
+ :type ob: DHRobot or EllipsePlot
375
+ :param readonly: Do not update the state of the object
376
+ (i.e. display not simulate), defaults to False
377
+ :type readonly: bool, optional
378
+ :param display: Display the object, defaults to True
379
+ :type display: bool, optional
380
+ :param jointaxes: Show the joint axes of the robot with arrows,
381
+ defaults to True
382
+ :type jointaxes: bool, optional
383
+ :param eeframe: Show the end-effector frame of the robot,
384
+ defaults to True
385
+ :type eeframe: bool, optional
386
+ :param shadow: Display a shadow of the robot on the x-y gound plane,
387
+ defaults to True
388
+ :type shadow: bool, optional
389
+ :param name: Display the name of the robot, defaults to True
390
+ :type name: bool, optional
391
+
392
+ ``id = env.add(robot)`` adds the ``robot`` to the graphical
393
+ environment.
394
+
395
+ .. note::
396
+
397
+ - ``robot`` must be of an appropriate class.
398
+ - Adds the robot object to a list of robots which will be updated
399
+ when the ``step()`` method is called.
400
+
401
+ """
402
+
403
+ super().add()
404
+
405
+ if (
406
+ isinstance(ob, rp.DHRobot)
407
+ or isinstance(ob, rp.ERobot)
408
+ or isinstance(ob, rp.Robot)
409
+ ):
410
+ self.robots.append(
411
+ RobotPlot(
412
+ ob,
413
+ self,
414
+ readonly,
415
+ display,
416
+ jointaxes,
417
+ jointlabels,
418
+ eeframe,
419
+ shadow,
420
+ name,
421
+ options,
422
+ )
423
+ )
424
+ self.robots[-1].draw()
425
+ id = len(self.robots)
426
+
427
+ elif isinstance(ob, EllipsePlot):
428
+ ob.ax = self.ax
429
+ self.ellipses.append(ob)
430
+ self.ellipses[-1].draw()
431
+ id = len(self.ellipses)
432
+
433
+ elif isinstance(ob, Shape):
434
+ # recreate the shape using matplotlib
435
+ self.shapes.append(ShapePlot(ob))
436
+ self.shapes[-1].draw(ax=self.ax)
437
+ id = len(self.shapes)
438
+
439
+ self._set_axes_equal()
440
+
441
+ if self.render_mode == "notebook-inline":
442
+ # In inline/JupyterLite mode, push a frame immediately so static
443
+ # plots (eg. plot_vellipse/plot_fellipse) are visible without step().
444
+ self._push_inline_frame()
445
+ else:
446
+ plt.draw() # matplotlib refresh
447
+ plt.show(block=False)
448
+
449
+ return id
450
+
451
+ def remove(self, id):
452
+ """
453
+ Remove a robot or shape from the graphical scene
454
+
455
+ :param id: The id of the robot to remove. Can be either the DHLink or
456
+ GraphicalRobot
457
+ :type id: class:`~roboticstoolbox.robot.DHRobot.DHRobot`,
458
+ class:`roboticstoolbox.backends.VPython.graphics_robot.GraphicalRobot`
459
+ :param fig_num: The canvas index to delete the robot from, defaults to
460
+ the initial one
461
+ :type fig_num: int, optional
462
+ :raises ValueError: Figure number must be between 0 and total number
463
+ of canvases
464
+ :raises TypeError: Input must be a DHLink or GraphicalRobot
465
+
466
+ ``env.remove(robot)`` removes the ``robot`` from the graphical
467
+ environment.
468
+ """
469
+ # TODO should be an id to remove?
470
+
471
+ super().remove()
472
+
473
+ def hold(self): # pragma: no cover
474
+ """
475
+ hold() keeps the plot open i.e. stops the plot from closing once
476
+ the main script has finished.
477
+
478
+ """
479
+
480
+ # signal.setitimer(signal.ITIMER_REAL, 0)
481
+ plt.ioff()
482
+
483
+ # keep stepping the environment while figure is open
484
+ while True:
485
+ if not plt.fignum_exists(self.fig.number):
486
+ break
487
+ self.step()
488
+
489
+ def getframe(self):
490
+ global _pil
491
+
492
+ if _pil is None:
493
+ try:
494
+ import PIL
495
+
496
+ _pil = PIL.Image.frombytes
497
+ except ImportError: # pragma nocover
498
+ pass
499
+
500
+ if _pil is None:
501
+ raise RuntimeError(
502
+ "to save movies PIL must be installed:\npip3 install PIL"
503
+ )
504
+
505
+ # make the background white, looks better than grey stipple
506
+ self.ax.xaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
507
+ self.ax.yaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
508
+ self.ax.zaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
509
+ plt.gcf().canvas.draw()
510
+
511
+ # render the frame and save as a PIL image in the list
512
+ canvas = self.fig.canvas
513
+ return _pil("RGB", canvas.get_width_height(), canvas.tostring_rgb())
514
+
515
+ def _push_inline_frame(self):
516
+ # Push a snapshot into notebook output for inline animation.
517
+ if _ipy_display is None:
518
+ return
519
+
520
+ buf = io.BytesIO()
521
+ if self.inline_format == "svg":
522
+ if _ipy_svg is None:
523
+ return
524
+ self.fig.savefig(buf, format="svg")
525
+ frame = _ipy_svg(data=buf.getvalue().decode("utf-8"))
526
+ else:
527
+ if _ipy_image is None:
528
+ return
529
+ self.fig.savefig(buf, format="png", dpi=self.inline_dpi)
530
+ frame = _ipy_image(data=buf.getvalue())
531
+
532
+ if self._inline_is_jl and _ipy_clear_output is not None:
533
+ _ipy_clear_output(wait=True)
534
+ _ipy_display(frame)
535
+ return
536
+
537
+ if self._inline_display_handle is None:
538
+ self._inline_display_handle = _ipy_display(frame, display_id=True)
539
+ elif hasattr(self._inline_display_handle, "update"):
540
+ self._inline_display_handle.update(frame)
541
+ else:
542
+ _ipy_display(frame)
543
+
544
+ #
545
+ # Private methods
546
+ #
547
+
548
+ # def _plot_handler(self, sig, frame):
549
+ # try:
550
+ # plt.pause(0.001)
551
+ # except(AttributeError):
552
+ # pass
553
+
554
+ def _set_axes_equal(self):
555
+ """
556
+ Make axes of 3D plot have equal scale so that spheres appear as
557
+ spheres, cubes as cubes, etc.. This is one possible solution to
558
+ Matplotlib's ax.set_aspect('equal') and ax.axis('equal') not
559
+ working for 3D.
560
+
561
+ """
562
+
563
+ if self.limits is not None:
564
+ return
565
+
566
+ self.ax.autoscale(enable=True, axis="both", tight=False)
567
+
568
+ x_limits = self.ax.get_xlim3d()
569
+ y_limits = self.ax.get_ylim3d()
570
+ z_limits = self.ax.get_zlim3d()
571
+
572
+ x_range = abs(x_limits[1] - x_limits[0])
573
+ x_middle = np.mean(x_limits)
574
+ y_range = abs(y_limits[1] - y_limits[0])
575
+ y_middle = np.mean(y_limits)
576
+ z_range = abs(z_limits[1] - z_limits[0])
577
+ z_middle = np.mean(z_limits)
578
+
579
+ # The plot bounding box is a sphere in the sense of the infinity
580
+ # norm, hence I call half the max range the plot radius.
581
+ plot_radius = 0.5 * max([x_range, y_range, z_range])
582
+
583
+ self.ax.set_xlim3d([x_middle - plot_radius, x_middle + plot_radius])
584
+ self.ax.set_ylim3d([y_middle - plot_radius, y_middle + plot_radius])
585
+ self.ax.set_zlim3d([z_middle - plot_radius, z_middle + plot_radius])
586
+
587
+ def _add_teach_panel(self, robot, q):
588
+
589
+ if _isnotebook():
590
+ raise RuntimeError("cannot use teach panel under Jupyter")
591
+
592
+ fig = self.fig
593
+
594
+ # Add text to the plots
595
+ def text_trans(text, q): # pragma: no cover
596
+ T = robot.fkine(q)
597
+ t = np.round(T.t, 3)
598
+ r = np.round(T.rpy("deg"), 3)
599
+ text[0].set_text("x: {0}".format(t[0]))
600
+ text[1].set_text("y: {0}".format(t[1]))
601
+ text[2].set_text("z: {0}".format(t[2]))
602
+ text[3].set_text("r: {0}".format(r[0]))
603
+ text[4].set_text("p: {0}".format(r[1]))
604
+ text[5].set_text("y: {0}".format(r[2]))
605
+
606
+ # Update the self state in mpl and the text
607
+ def update(val, text, robot): # pragma: no cover
608
+ for j in range(robot.n):
609
+ if robot.isrevolute(j):
610
+ robot.q[j] = np.radians(self.sjoint[j].val)
611
+ else:
612
+ robot.q[j] = self.sjoint[j].val
613
+
614
+ teach_vellipse = getattr(self, "_teach_vellipse", None)
615
+ if teach_vellipse is not None:
616
+ teach_vellipse.q = robot.q
617
+
618
+ teach_fellipse = getattr(self, "_teach_fellipse", None)
619
+ if teach_fellipse is not None:
620
+ teach_fellipse.q = robot.q
621
+
622
+ text_trans(text, robot.q)
623
+
624
+ fig.subplots_adjust(left=0.25)
625
+ text = []
626
+
627
+ x1 = 0.04
628
+ x2 = 0.22
629
+ yh = 0.04
630
+ ym = 0.5 - (robot.n * yh) / 2 + 0.17 / 2
631
+
632
+ self.axjoint = []
633
+ self.sjoint = []
634
+
635
+ qlim = robot.todegrees(robot.qlim)
636
+
637
+ # if np.all(qlim == 0): # pragma: no cover
638
+ # qlim[0, :] = -180
639
+ # qlim[1, :] = 180
640
+
641
+ # Set the pose text
642
+ T = robot.fkine(q)
643
+ t = np.round(T.t, 3)
644
+ r = np.round(T.rpy(), 3)
645
+
646
+ fig.text(
647
+ 0.02,
648
+ 1 - ym + 0.25,
649
+ "End-effector Pose",
650
+ fontsize=9,
651
+ weight="bold",
652
+ color="#4f4f4f",
653
+ )
654
+ text.append(
655
+ fig.text(
656
+ 0.03, 1 - ym + 0.20, "x: {0}".format(t[0]), fontsize=9, color="#2b2b2b"
657
+ )
658
+ )
659
+ text.append(
660
+ fig.text(
661
+ 0.03, 1 - ym + 0.16, "y: {0}".format(t[1]), fontsize=9, color="#2b2b2b"
662
+ )
663
+ )
664
+ text.append(
665
+ fig.text(
666
+ 0.03, 1 - ym + 0.12, "z: {0}".format(t[2]), fontsize=9, color="#2b2b2b"
667
+ )
668
+ )
669
+ text.append(
670
+ fig.text(
671
+ 0.15, 1 - ym + 0.20, "r: {0}".format(r[0]), fontsize=9, color="#2b2b2b"
672
+ )
673
+ )
674
+ text.append(
675
+ fig.text(
676
+ 0.15, 1 - ym + 0.16, "p: {0}".format(r[1]), fontsize=9, color="#2b2b2b"
677
+ )
678
+ )
679
+ text.append(
680
+ fig.text(
681
+ 0.15, 1 - ym + 0.12, "y: {0}".format(r[2]), fontsize=9, color="#2b2b2b"
682
+ )
683
+ )
684
+ fig.text(
685
+ 0.02,
686
+ 1 - ym + 0.06,
687
+ "Joint angles",
688
+ fontsize=9,
689
+ weight="bold",
690
+ color="#4f4f4f",
691
+ )
692
+
693
+ for j in range(robot.n):
694
+ ymin = (1 - ym) - j * yh
695
+ ax = fig.add_axes([x1, ymin, x2, 0.03], facecolor="#dbdbdb")
696
+ self.axjoint.append(ax)
697
+
698
+ if robot.isrevolute(j):
699
+ slider = Slider(
700
+ ax=ax,
701
+ label="q" + str(j),
702
+ valmin=qlim[0, j],
703
+ valmax=qlim[1, j],
704
+ valinit=np.degrees(q[j]),
705
+ valfmt="% .1f°",
706
+ )
707
+ else:
708
+ slider = Slider(
709
+ ax=ax,
710
+ label="q" + str(j),
711
+ valmin=qlim[0, j],
712
+ valmax=qlim[1, j],
713
+ valinit=robot.q[j],
714
+ valfmt="% .1f",
715
+ )
716
+
717
+ slider.on_changed(lambda x: update(x, text, robot))
718
+ self.sjoint.append(slider)
719
+ robot.q = q
720
+ self.step()
721
+
722
+
723
+ def _isnotebook():
724
+ """
725
+ Determine if code is being run from a Jupyter notebook or JupyterLite
726
+
727
+ ``_isnotebook`` is True if running Jupyter notebook, JupyterLite, or similar, else False
728
+
729
+ :references:
730
+
731
+ - https://stackoverflow.com/questions/15411967/how-can-i-check-if-code-
732
+ is-executed-in-the-ipython-notebook/39662359#39662359
733
+ """
734
+ import sys
735
+
736
+ # Check if running in Pyodide/JupyterLite
737
+ if sys.platform == "emscripten":
738
+ return True
739
+
740
+ # Fall back to checking IPython shell type
741
+ try:
742
+ shell = get_ipython().__class__.__name__
743
+ if shell == "ZMQInteractiveShell":
744
+ return True # Jupyter notebook or qtconsole
745
+ elif shell == "TerminalInteractiveShell":
746
+ return False # Terminal running IPython
747
+ else:
748
+ return False # Other type (?)
749
+ except NameError:
750
+ return False # Probably standard Python interpreter
751
+
752
+
753
+ def _resolve_render_mode(render_mode=None):
754
+ if render_mode is not None:
755
+ if render_mode not in ["window", "notebook-widget", "notebook-inline"]:
756
+ raise ValueError(
757
+ "render_mode must be one of 'window', "
758
+ "'notebook-widget', or 'notebook-inline'"
759
+ )
760
+ return render_mode
761
+
762
+ if not _isnotebook():
763
+ return "window"
764
+
765
+ backend = matplotlib.get_backend().lower()
766
+ if "ipympl" in backend or "widget" in backend or "nbagg" in backend:
767
+ return "notebook-widget"
768
+
769
+ return "notebook-inline"