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,789 @@
1
+ from abc import ABC
2
+ import warnings
3
+ import numpy as np
4
+ import scipy as sp
5
+ from math import pi, sin, cos
6
+ import matplotlib.pyplot as plt
7
+ from spatialmath import base
8
+ import roboticstoolbox as rtb
9
+ from collections.abc import Iterable
10
+
11
+ """
12
+ Sensor Sensor superclass
13
+
14
+ An abstract superclass to represent robot navigation sensorself.
15
+
16
+ Methods::
17
+ plot plot a line from robot to map feature
18
+ display print the parameters in human readable form
19
+ char convert to string
20
+
21
+ Properties::
22
+ robot The Vehicle object on which the sensor is mounted
23
+ map The PointMap object representing the landmarks around the robot
24
+
25
+ Reference::
26
+
27
+ Robotics, Vision & Control,
28
+ Peter Corke,
29
+ Springer 2011
30
+
31
+ See also RangeBearingSensor, EKF, Vehicle, Landmarkself.
32
+
33
+ """
34
+
35
+
36
+ class SensorBase(ABC):
37
+ # TODO, pose option, wrt vehicle
38
+
39
+ # robot
40
+ # map
41
+
42
+ # verbose
43
+
44
+ # ls
45
+ # animate # animate sensor measurements
46
+ # interval # measurement return subsample factor
47
+ # fail
48
+ # delay
49
+
50
+ def __init__(
51
+ self,
52
+ robot,
53
+ map,
54
+ every=1,
55
+ fail=[],
56
+ plot=False,
57
+ delay=0.1,
58
+ seed=0,
59
+ verbose=False,
60
+ **kwargs,
61
+ ):
62
+ """Sensor.Sensor Sensor object constructor
63
+ %
64
+ # S = Sensor(VEHICLE, MAP, OPTIONS) is a sensor mounted on a vehicle
65
+ # described by the Vehicle subclass object VEHICLE and observing landmarks
66
+ # in a map described by the LandmarkMap class object self.
67
+ %
68
+ # Options::
69
+ # 'animate' animate the action of the laser scanner
70
+ # 'ls',LS laser scan lines drawn with style ls (default 'r-')
71
+ # 'skip', I return a valid reading on every I'th call
72
+ # 'fail',T sensor simulates failure between timesteps T=[TMIN,TMAX]
73
+ %
74
+ # Notes::
75
+ # - Animation shows a ray from the vehicle position to the selected
76
+ # landmark.
77
+ """
78
+ if kwargs:
79
+ raise TypeError(
80
+ f"SensorBase.__init__() got unexpected keyword argument(s): "
81
+ f"{', '.join(kwargs)}"
82
+ )
83
+
84
+ self._robot = robot
85
+ self._map = map
86
+ self._every = every
87
+ self._fail = fail
88
+
89
+ self._verbose = verbose
90
+
91
+ self.delay = 0.1
92
+
93
+ self._animate = plot
94
+
95
+ self._seed = seed
96
+ self.init()
97
+
98
+ def init(self):
99
+ """
100
+ Initialize sensor (superclass)
101
+
102
+ - reseed the random number generator
103
+ - reset the counter for handling the ``every`` and ``fail`` options
104
+ """
105
+ self._random = np.random.default_rng(self._seed)
106
+ self._count = 0
107
+
108
+ def __str__(self):
109
+ """
110
+ Convert sensor parameters to a string (superclass)
111
+ %
112
+ # s = self.char() is a string showing sensor parameters in
113
+ # a compact human readable format.
114
+ """
115
+ s = f"{self.__class__.__name__} sensor class\n"
116
+ s += " " + str(self.map)
117
+ return s
118
+
119
+ def __repr__(self):
120
+ return str(self)
121
+
122
+ @property
123
+ def robot(self):
124
+ """
125
+ Robot associated with sensor (superclass)
126
+
127
+ :return: robot
128
+ :rtype: :class:`VehicleBase` subclass
129
+ """
130
+ return self._robot
131
+
132
+ @property
133
+ def map(self):
134
+ """
135
+ Landmark map associated with sensor (superclass)
136
+
137
+ :return: robot
138
+ :rtype: :class:`LandmarkMap`
139
+ """
140
+ return self._map
141
+
142
+ @property
143
+ def random(self):
144
+ """
145
+ Get private random number generator (superclass)
146
+
147
+ :return: NumPy random number generator
148
+ :rtype: :class:`numpy.random.Generator`
149
+
150
+ Has methods including:
151
+
152
+ - :meth:`integers(low, high, size, endpoint) <numpy.random.Generator.integers>`
153
+ - :meth:`random(size) <numpy.random.Generator.random>`
154
+ - :meth:`uniform(low, high, size) <numpy.random.Generator.uniform>`
155
+ - :meth:`normal(mean, std, size) <numpy.random.Generator.normal>`
156
+ - :meth:`multivariate_normal(mean, covar, size) <numpy.random.Generator.multivariate_normal>`
157
+
158
+ The generator is initialized with the seed provided at constructor
159
+ time every time :meth:`init` is called.
160
+
161
+ :seealso: :meth:`init`
162
+ """
163
+ return self._random
164
+
165
+ @property
166
+ def verbose(self):
167
+ """
168
+ Get verbosity state
169
+
170
+ :return: verbosity
171
+ :rtype: bool
172
+ """
173
+ return self._verbose
174
+
175
+ def plot(self, id):
176
+ """
177
+ Plot sensor observation
178
+
179
+ :param id: landmark id
180
+ :type id: int
181
+
182
+ Draws a line from the robot to landmark ``id``.
183
+
184
+ .. note::
185
+ - The line is drawn using the ``line_style`` given at constructor time
186
+
187
+ """
188
+ pass
189
+
190
+ # if isempty(self.ls)
191
+ # return
192
+ # end
193
+
194
+ # h = findobj(gca, 'tag', 'sensor')
195
+ # if isempty(h)
196
+ # # no sensor line, create one
197
+ # h = plot(0, 0, self.ls, 'tag', 'sensor')
198
+ # end
199
+
200
+ # # there is a sensor line animate it
201
+
202
+ # if lm_id == 0
203
+ # set(h, 'Visible', 'off')
204
+ # else
205
+ # xi = self.self.map(:,lm_id)
206
+ # set(h, 'Visible', 'on', 'XData', [self.robot.x[0], xi[0]], 'YData', [self.robot.x[1], xi[1]])
207
+ # end
208
+ # pause(self.delay)
209
+
210
+ # drawnow
211
+
212
+
213
+ # ======================================================================== #
214
+
215
+
216
+ # visibility function, for one id, or return list of visible
217
+ # covar can be 2x2 or (2,)
218
+ # .W property
219
+ class RangeBearingSensor(SensorBase):
220
+ def __init__(
221
+ self,
222
+ robot,
223
+ map,
224
+ line_style=None,
225
+ poly_style=None,
226
+ covar=None,
227
+ range=None,
228
+ angle=None,
229
+ plot=False,
230
+ seed=0,
231
+ **kwargs,
232
+ ):
233
+ r"""
234
+ Range and bearing angle sensor
235
+
236
+ :param robot: model of robot carrying the sensor
237
+ :type robot: :class:`VehicleBase` subclass
238
+ :param map: map of landmarks
239
+ :type map: :class:`LandmarkMap` instance
240
+ :param polygon: polygon style for sensing region, see :class:`~spatialmath.base.graphics.plot_polygon`, defaults to None
241
+ :type polygon: dict, optional
242
+ :param covar: covariance matrix for sensor readings, defaults to None
243
+ :type covar: ndarray(2,2), optional
244
+ :param range: maximum range :math:`r_{max}` or range span :math:`[r_{min}, r_{max}]`, defaults to None
245
+ :type range: float or array_like(2), optional
246
+ :param angle: angular field of view, from :math:`[-\theta, \theta]` defaults to None
247
+ :type angle: float, optional
248
+ :param plot: animate the sensor beams, defaults to False
249
+ :type plot: bool, optional
250
+ :param seed: random number seed, defaults to 0
251
+ :type seed: int, optional
252
+ :param kwargs: arguments passed to :class:`SensorBase`
253
+
254
+ Sensor object that returns the range and bearing angle :math:`(r,
255
+ \beta)` to a point landmark from a robot-mounted sensor. The sensor
256
+ measurements are corrupted with zero-mean Gaussian noise with covariance
257
+ ``covar``.
258
+
259
+ The sensor can have a maximum range, or a minimum and maximum range. The
260
+ sensor can also have a restricted angular field of view.
261
+
262
+ The sensing region can be displayed by setting the polygon parameter
263
+ which can show an outline or a filled polygon. This is updated every
264
+ time :meth:`reading` is called, based on the current configuration of
265
+ the ``robot``.
266
+
267
+ .. runblock:: pycon
268
+
269
+ >>> from roboticstoolbox import Bicycle, LandmarkMap, RangeBearingSensor
270
+ >>> from math import pi
271
+ >>> robot = Bicycle()
272
+ >>> map = LandmarkMap(20)
273
+ >>> sensor = RangeBearingSensor(robot, map, range=(0.5, 20), angle=pi/4)
274
+ >>> print(sensor)
275
+
276
+ :seealso: :class:`~roboticstoolbox.mobile.LandmarkMap` :class:`~roboticstoolbox.mobile.EKF`
277
+
278
+ .. deprecated:: the ``animate`` keyword is deprecated, use ``plot``
279
+ instead.
280
+ """
281
+
282
+ animate = kwargs.pop("animate", None)
283
+ if animate is not None:
284
+ warnings.warn(
285
+ "animate is deprecated, use plot instead",
286
+ DeprecationWarning,
287
+ stacklevel=2,
288
+ )
289
+ plot = animate
290
+
291
+ # call the superclass constructor
292
+ super().__init__(robot, map, **kwargs)
293
+
294
+ self._line_style = line_style
295
+ self._poly_style = poly_style
296
+
297
+ if covar is None:
298
+ self._W = np.zeros((2, 2))
299
+ elif base.isvector(covar, 2):
300
+ self._W = np.diag(covar)
301
+ elif base.ismatrix(covar, (2, 2)):
302
+ self._W = covar
303
+ else:
304
+ raise ValueError("bad value for covar, must have shape (2,) or (2,2)")
305
+
306
+ if range is None:
307
+ self._r_range = None
308
+ elif isinstance(range, Iterable):
309
+ self._r_range = base.getvector(range, 2)
310
+ else:
311
+ self._r_range = [0, range]
312
+
313
+ if angle is None:
314
+ self._theta_range = None
315
+ elif isinstance(angle, Iterable):
316
+ self._theta_range = base.getvector(angle, 2)
317
+ else:
318
+ self._theta_range = [-angle, angle]
319
+
320
+ self._animate = plot
321
+ self._landmarklog = []
322
+
323
+ self._random = np.random.default_rng(seed)
324
+
325
+ def __str__(self):
326
+ s = super().__str__()
327
+ s += f"\n W = {base.array2str(self._W)}\n"
328
+
329
+ s += f" sampled every {self._every} samples\n"
330
+ if self._r_range is not None:
331
+ s += f" range: ({self._r_range[0]}: {self._r_range[1]})\n"
332
+ if self._theta_range is not None:
333
+ s += f" angle: ({self._theta_range[0]:.3g}: {self._theta_range[1]:.3g})\n"
334
+ return s.rstrip()
335
+
336
+ def init(self):
337
+ """
338
+ Initialize sensor
339
+
340
+ - reseed the random number generator
341
+ - reset the counter for handling the ``every`` and ``fail`` options
342
+ - reset the landmark log
343
+ - initalize plots
344
+
345
+ :seealso: :meth:`SensorBase.init`
346
+ """
347
+ super().init()
348
+ self._landmarklog = []
349
+
350
+ if self._animate:
351
+ self.map.plot()
352
+
353
+ @property
354
+ def W(self):
355
+ """
356
+ Get sensor covariance
357
+
358
+ :return: sensor covariance
359
+ :rtype: ndarray(2,2)
360
+
361
+ Returns the value of the sensor covariance matrix passed to
362
+ the constructor.
363
+ """
364
+ return self._covar
365
+
366
+ def reading(self):
367
+ r"""
368
+ Choose landmark and return observation
369
+
370
+ :return: range and bearing angle to a landmark, and landmark id
371
+ :rtype: ndarray(2), int
372
+
373
+ Returns an observation of a random visible landmark (range, bearing) and
374
+ the ``id`` of that landmark. The landmark is chosen randomly from the
375
+ set of all visible landmarks, those within the angular field of view and
376
+ range limit.
377
+
378
+ If constructor argument ``every`` is set then only return a valid
379
+ reading on every ``every`` calls.
380
+
381
+ If constructor argument ``fail`` is set then do not return a reading
382
+ during that specified time interval.
383
+
384
+ If no valid reading is available then return (None, None)
385
+
386
+ .. runblock:: pycon
387
+
388
+ >>> from roboticstoolbox import Bicycle, LandmarkMap, RangeBearingSensor
389
+ >>> from math import pi
390
+ >>> robot = Bicycle()
391
+ >>> map = LandmarkMap(20)
392
+ >>> sensor = RangeBearingSensor(robot, map, range=(0.5, 20), angle=pi/4)
393
+ >>> print(sensor.reading())
394
+
395
+ .. note::
396
+
397
+ - Noise with covariance ``W`` (set by constructor) is added to the
398
+ reading
399
+ - If ``animate`` option is set then show a line from the vehicle to
400
+ the landmark
401
+ - If ``animate`` option set and the angular and distance limits
402
+ are set then display the sensor field of view as a polygon.
403
+
404
+ :seealso: :meth:`h`
405
+ """
406
+
407
+ # TODO probably should return K=0 to indicated invalid
408
+
409
+ # model a sensor that emits readings every interval samples
410
+ self._count += 1
411
+
412
+ # check conditions for NOT returning a value
413
+ z = []
414
+ lm_id = -1
415
+ # sample interval
416
+ if self._count % self._every != 0:
417
+ self._landmarklog.append(lm_id)
418
+ return (None, None)
419
+
420
+ # simulated failure, fail is a list of 2-tuples giving (start,end) times
421
+ # for a sensor failure
422
+ if self._fail is not None:
423
+ if any([start <= self._count < end for start, end in self._fail]):
424
+ self._landmarklog.append(lm_id)
425
+ return (None, None)
426
+
427
+ # create a polygon to indicate the active sensing area based on range+angle limits
428
+ # if self.animate && ~isempty(self.theta_range) && ~isempty(self.r_range)
429
+ # h = findobj(gca, 'tag', 'sensor-area')
430
+ # if isempty(h)
431
+
432
+ # th=linspace(self.theta_range[0], self.theta_range[1], 20)
433
+ # x = self.r_range[1] * cos(th)
434
+ # y = self.r_range[1] * sin(th)
435
+ # if self.r_range[0] > 0
436
+ # th = flip(th)
437
+ # x = [x self.r_range[0] * cos(th)]
438
+ # y = [y self.r_range[0] * sin(th)]
439
+ # else
440
+ # x = [x 0]
441
+ # y = [y 0]
442
+ # end
443
+ # # no sensor zone, create one
444
+ # plot_poly([x; y], 'fillcolor', 'r', 'alpha', 0.1, 'edgecolor', 'none', 'animate', 'tag', 'sensor-area')
445
+ # else
446
+ # hg = get(h, 'Parent')
447
+ # plot_poly(h, self.robot.x)
448
+
449
+ zk = self.visible()
450
+ if len(zk) > 1:
451
+ # more than 1 visible landmark, pick a random one
452
+ i = self._random.integers(len(zk))
453
+ z = zk[i][0]
454
+ lm_id = zk[i][1]
455
+ if self.verbose:
456
+ print(f"Sensor:: feature {lm_id}: ({z[0]}, {z[1]})")
457
+ elif len(zk) == 1:
458
+ # just 1 visible landmark
459
+ z = zk[0][0]
460
+ lm_id = zk[0][1]
461
+ if self.verbose:
462
+ print(f"Sensor:: feature {lm_id}: ({z[0]}, {z[1]})")
463
+ else:
464
+ if self.verbose:
465
+ print("Sensor:: no features\n")
466
+ self._landmarklog.append(lm_id)
467
+ return (None, None)
468
+
469
+ # compute the range and bearing from robot to feature
470
+ # z = self.h(self.robot.x, lm_id)
471
+
472
+ if self._animate:
473
+ self.plot(lm_id)
474
+
475
+ # add the reading to the landmark log
476
+ self._landmarklog.append(lm_id)
477
+
478
+ # add noise with covariance W
479
+ z += self._random.multivariate_normal((0, 0), self._W)
480
+
481
+ return z, lm_id
482
+
483
+ def visible(self):
484
+ """
485
+ List of all visible landmarks
486
+
487
+ :return: list of visible landmarks
488
+ :rtype: list of int
489
+
490
+ Return a list of the id of all landmarks that are visible, that is, it
491
+ lies with the sensing range and field of view of the sensor at the
492
+ robot's current configuration.
493
+
494
+ :seealso: :meth:`isvisible` :meth:`h`
495
+ """
496
+ # get range/bearing to all landmarks
497
+ z = self.h(self.robot.x)
498
+ zk = [(z, k) for k, z in enumerate(z)]
499
+ # a list of tuples, each tuple is ((range, bearing), k)
500
+
501
+ if self._r_range is not None:
502
+ zk = filter(lambda zk: self._r_range[0] <= zk[0][0] <= self._r_range[1], zk)
503
+
504
+ if self._theta_range is not None:
505
+ # find all within angular range as well
506
+ zk = filter(
507
+ lambda zk: self._theta_range[0] <= zk[0][1] <= self._theta_range[1], zk
508
+ )
509
+
510
+ return list(zk)
511
+
512
+ def isvisible(self, id):
513
+ """
514
+ Test if landmark is visible
515
+
516
+ :param id: landmark id
517
+ :type id: int
518
+ :return: visibility
519
+ :rtype: bool
520
+
521
+ The landmark ``id`` is visible if it lies with the sensing range and
522
+ field of view of the sensor at the robot's current configuration.
523
+
524
+ :seealso: :meth:`visible` :meth:`h`
525
+ """
526
+ z = self.h(self.robot.x, id)
527
+
528
+ return (
529
+ (self._r_range is None) or self._r_range[0] <= z[0] <= self._r_range[1]
530
+ ) and (
531
+ (self._theta_range is None)
532
+ or self._theta_range[0] <= z[1] <= self._theta_range[1]
533
+ )
534
+
535
+ def h(self, x, landmark=None):
536
+ r"""
537
+ Landmark observation function
538
+
539
+ :param x: vehicle state :math:`(x, y, \theta)`
540
+ :type x: array_like(3), array_like(N,3)
541
+ :param landmark: landmark id or position, defaults to None
542
+ :type landmark: int or array_like(2), optional
543
+ :return: range and bearing angle to landmark math:`(r,\beta)`
544
+ :rtype: ndarray(2) or ndarray(N,2)
545
+
546
+ Return the range and bearing to a landmark:
547
+
548
+ - ``.h(x)`` is range and bearing to all landmarks, one row per landmark
549
+ - ``.h(x, id)`` is range and bearing to landmark ``id``
550
+ - ``.h(x, p)`` is range and bearing to landmark with coordinates ``p``
551
+
552
+ .. runblock:: pycon
553
+
554
+ >>> from roboticstoolbox import Bicycle, LandmarkMap, RangeBearingSensor
555
+ >>> from math import pi
556
+ >>> robot = Bicycle()
557
+ >>> map = LandmarkMap(20)
558
+ >>> sensor = RangeBearingSensor(robot, map, range=(0.5, 20), angle=pi/4)
559
+ >>> z = sensor.h((1, 2, pi/2), 3)
560
+ >>> print(z)
561
+
562
+ .. note::
563
+ - Noise with covariance (property ``W``) is added to each row of ``z``.
564
+ - Performs fast vectorized operation where ``x`` is an ndarray(n,3).
565
+ - The landmark is assumed to be visible, field of view and range limits are not
566
+ applied.
567
+
568
+ :seealso: :meth:`reading` :meth:`Hx` :meth:`Hw` :meth:`Hp`
569
+ """
570
+ # get the landmarks, one per row
571
+
572
+ if isinstance(x, np.ndarray) and x.ndim == 2:
573
+ # x is Nx3 set of vehicle states, do vectorized form
574
+ # used by particle filter
575
+ x, y, t = x.T
576
+ else:
577
+ x, y, t = x
578
+
579
+ if landmark is None:
580
+ # self.h(XV) all landmarks
581
+ dx = self.map.landmarks[0, :] - x
582
+ dy = self.map.landmarks[1, :] - y
583
+ elif base.isinteger(landmark):
584
+ # landmark id
585
+ # self.h(XV, JF)
586
+ xlm = self.map[landmark]
587
+ dx = xlm[0] - x
588
+ dy = xlm[1] - y
589
+ else:
590
+ # landmark position
591
+ # self.h(XV, XF)
592
+ xlm = base.getvector(landmark, 2)
593
+ dx = xlm[0] - x
594
+ dy = xlm[1] - y
595
+
596
+ # compute range and bearing (Vectorized code)
597
+
598
+ z = np.c_[
599
+ np.sqrt(dx**2 + dy**2), base.angdiff(np.arctan2(dy, dx), t)
600
+ ] # range & bearing as columns
601
+
602
+ if z.shape[0] == 1:
603
+ return z[0]
604
+ else:
605
+ return z
606
+
607
+ def Hx(self, x, landmark):
608
+ r"""
609
+ Jacobian dh/dx
610
+
611
+ :param x: vehicle state :math:`(x, y, \theta)`
612
+ :type x: array_like(3)
613
+ :param arg: landmark id or coordinate
614
+ :type arg: int or array_like(2)
615
+ :return: Jacobian matrix
616
+ :rtype: ndarray(2,3)
617
+
618
+ Compute the Jacobian of the observation function with respect to vehicle
619
+ configuration :math:`\partial h/\partial x`
620
+
621
+ - ``sensor.Hx(q, id)`` is Jacobian for landmark ``id``
622
+ - ``sensor.h(q, p)`` is Jacobian for landmark with coordinates ``p``
623
+
624
+ :seealso: :meth:`h` :meth:`Hp` :meth:`Hw`
625
+ """
626
+
627
+ if base.isinteger(landmark):
628
+ # landmark index provided
629
+ xf = self.map[landmark]
630
+ else:
631
+ # assume it is a coordinate
632
+ xf = base.getvector(landmark, 2)
633
+
634
+ Delta = xf - x[:2]
635
+ r = base.norm(Delta)
636
+ # fmt: off
637
+ return np.array([
638
+ [-Delta[0] / r, -Delta[1] / r, 0],
639
+ [ Delta[1] / r**2, -Delta[0] / r**2, -1],
640
+ ])
641
+ # fmt: on
642
+
643
+ def Hp(self, x, landmark):
644
+ r"""
645
+ Jacobian dh/dp
646
+
647
+ :param x: vehicle state :math:`(x, y, \theta)`
648
+ :type x: array_like(3)
649
+ :param arg: landmark id or coordinate
650
+ :type arg: int or array_like(2)
651
+ :return: Jacobian matrix
652
+ :rtype: ndarray(2,2)
653
+
654
+ Compute the Jacobian of the observation function with respect
655
+ to landmark position :math:`\partial h/\partial p`
656
+
657
+ - ``sensor.Hp(x, id)`` is Jacobian for landmark ``id``
658
+ - ``sensor.Hp(x, p)`` is Jacobian for landmark with coordinates ``p``
659
+
660
+ :seealso: :meth:`h` :meth:`Hx` :meth:`Hw`
661
+ """
662
+ if base.isinteger(landmark):
663
+ xf = self.map.landmark(landmark)
664
+ else:
665
+ xf = landmark
666
+ x = base.getvector(x, 3)
667
+
668
+ Delta = xf - x[:2]
669
+ r = base.norm(Delta)
670
+ # fmt: off
671
+ return np.array([
672
+ [ Delta[0] / r, Delta[1] / r],
673
+ [-Delta[1] / r**2, Delta[0] / r**2],
674
+ ])
675
+ # fmt: on
676
+
677
+ def Hw(self, x, landmark):
678
+ r"""
679
+ Jacobian dh/dw
680
+
681
+ :param x: vehicle state :math:`(x, y, \theta)`
682
+ :type x: array_like(3)
683
+ :param arg: landmark id or coordinate
684
+ :type arg: int or array_like(2)
685
+ :return: Jacobian matrix
686
+ :rtype: ndarray(2,2)
687
+
688
+ Compute the Jacobian of the observation function with respect
689
+ to sensor noise :math:`\partial h/\partial w`
690
+
691
+ - ``sensor.Hw(x, id)`` is Jacobian for landmark ``id``
692
+ - ``sensor.Hw(x, p)`` is Jacobian for landmark with coordinates ``p``
693
+
694
+ .. note:: ``x`` and ``landmark`` are not used to compute this.
695
+
696
+ :seealso: :meth:`h` :meth:`Hx` :meth:`Hp`
697
+ """
698
+ return np.eye(2)
699
+
700
+ def g(self, x, z):
701
+ r"""
702
+ Landmark position from sensor observation
703
+
704
+ :param x: vehicle state :math:`(x, y, \theta)`
705
+ :type x: array_like(3)
706
+ :param z: landmark observation :math:`(r, \beta)`
707
+ :type z: array_like(2)
708
+ :return: landmark position :math:`(x, y)`
709
+ :rtype: ndarray(2)
710
+
711
+ Compute the world coordinate of a landmark given
712
+ the observation ``z`` from a vehicle state with ``x``.
713
+
714
+ :seealso: :meth:`h` :meth:`Gx` :meth:`Gz`
715
+ """
716
+
717
+ range = z[0]
718
+ bearing = z[1] + x[2] # bearing angle in vehicle frame
719
+
720
+ # fmt: off
721
+ return np.r_[
722
+ x[0] + range * cos(bearing),
723
+ x[1] + range * sin(bearing)
724
+ ]
725
+ # fmt: on
726
+
727
+ def Gx(self, x, z):
728
+ r"""
729
+ Jacobian dg/dx
730
+
731
+ :param x: vehicle state :math:`(x, y, \theta)`
732
+ :type x: array_like(3)
733
+ :param z: landmark observation :math:`(r, \beta)`
734
+ :type z: array_like(2)
735
+ :return: Jacobian matrix
736
+ :rtype: ndarray(2,3)
737
+
738
+ Compute the Jacobian of the landmark position function with respect
739
+ to landmark position :math:`\partial g/\partial x`
740
+
741
+ :seealso: :meth:`g`
742
+ """
743
+ theta = x[2]
744
+ r, bearing = z
745
+
746
+ # fmt: off
747
+ return np.array([
748
+ [1, 0, -r*sin(theta + bearing)],
749
+ [0, 1, r*cos(theta + bearing)],
750
+ ])
751
+ # fmt: on
752
+
753
+ def Gz(self, x, z):
754
+ r"""
755
+ Jacobian dg/dz
756
+
757
+ :param x: vehicle state :math:`(x, y, \theta)`
758
+ :type x: array_like(3)
759
+ :param z: landmark observation :math:`(r, \beta)`
760
+ :type z: array_like(2)
761
+ :return: Jacobian matrix
762
+ :rtype: ndarray(2,2)
763
+
764
+ Compute the Jacobian of the landmark position function with respect
765
+ to sensor observation :math:`\partial g/\partial z`
766
+
767
+ :seealso: :meth:`g`
768
+ """
769
+ theta = x[2]
770
+ r, bearing = z
771
+ # fmt: off
772
+ return np.array([
773
+ [cos(theta + bearing), -r * sin(theta + bearing)],
774
+ [sin(theta + bearing), r * cos(theta + bearing)],
775
+ ])
776
+ # fmt: on
777
+
778
+
779
+ if __name__ == "__main__":
780
+ from roboticstoolbox import Bicycle, LandmarkMap, RangeBearingSensor
781
+ from math import pi
782
+
783
+ robot = Bicycle()
784
+ map = LandmarkMap(20)
785
+ sensor = RangeBearingSensor(robot, map, range=(0.5, 20), angle=pi / 4)
786
+ print(sensor.reading())
787
+ print(sensor.visible())
788
+ print(sensor.isvisible(3))
789
+ print(sensor.isvisible(4))