viam-sdk 0.45.2__py3-none-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.

Potentially problematic release.


This version of viam-sdk might be problematic. Click here for more details.

Files changed (476) hide show
  1. viam/__init__.py +71 -0
  2. viam/app/__init__.py +0 -0
  3. viam/app/_logs.py +34 -0
  4. viam/app/app_client.py +2525 -0
  5. viam/app/billing_client.py +143 -0
  6. viam/app/data_client.py +1715 -0
  7. viam/app/ml_training_client.py +251 -0
  8. viam/app/provisioning_client.py +95 -0
  9. viam/app/viam_client.py +260 -0
  10. viam/components/__init__.py +0 -0
  11. viam/components/arm/__init__.py +16 -0
  12. viam/components/arm/arm.py +223 -0
  13. viam/components/arm/client.py +124 -0
  14. viam/components/arm/service.py +123 -0
  15. viam/components/audio_input/__init__.py +18 -0
  16. viam/components/audio_input/audio_input.py +81 -0
  17. viam/components/audio_input/client.py +70 -0
  18. viam/components/audio_input/service.py +114 -0
  19. viam/components/base/__init__.py +13 -0
  20. viam/components/base/base.py +260 -0
  21. viam/components/base/client.py +153 -0
  22. viam/components/base/service.py +138 -0
  23. viam/components/board/__init__.py +9 -0
  24. viam/components/board/board.py +414 -0
  25. viam/components/board/client.py +241 -0
  26. viam/components/board/service.py +223 -0
  27. viam/components/button/__init__.py +10 -0
  28. viam/components/button/button.py +41 -0
  29. viam/components/button/client.py +52 -0
  30. viam/components/button/service.py +46 -0
  31. viam/components/camera/__init__.py +22 -0
  32. viam/components/camera/camera.py +138 -0
  33. viam/components/camera/client.py +98 -0
  34. viam/components/camera/service.py +105 -0
  35. viam/components/component_base.py +65 -0
  36. viam/components/encoder/__init__.py +18 -0
  37. viam/components/encoder/client.py +83 -0
  38. viam/components/encoder/encoder.py +118 -0
  39. viam/components/encoder/service.py +72 -0
  40. viam/components/gantry/__init__.py +11 -0
  41. viam/components/gantry/client.py +115 -0
  42. viam/components/gantry/gantry.py +156 -0
  43. viam/components/gantry/service.py +113 -0
  44. viam/components/generic/__init__.py +18 -0
  45. viam/components/generic/client.py +62 -0
  46. viam/components/generic/generic.py +76 -0
  47. viam/components/generic/service.py +40 -0
  48. viam/components/gripper/__init__.py +11 -0
  49. viam/components/gripper/client.py +85 -0
  50. viam/components/gripper/gripper.py +114 -0
  51. viam/components/gripper/service.py +81 -0
  52. viam/components/input/__init__.py +15 -0
  53. viam/components/input/client.py +194 -0
  54. viam/components/input/input.py +297 -0
  55. viam/components/input/service.py +175 -0
  56. viam/components/motor/__init__.py +11 -0
  57. viam/components/motor/client.py +168 -0
  58. viam/components/motor/motor.py +301 -0
  59. viam/components/motor/service.py +150 -0
  60. viam/components/movement_sensor/__init__.py +21 -0
  61. viam/components/movement_sensor/client.py +161 -0
  62. viam/components/movement_sensor/movement_sensor.py +253 -0
  63. viam/components/movement_sensor/service.py +146 -0
  64. viam/components/pose_tracker/__init__.py +17 -0
  65. viam/components/pose_tracker/client.py +50 -0
  66. viam/components/pose_tracker/pose_tracker.py +40 -0
  67. viam/components/pose_tracker/service.py +45 -0
  68. viam/components/power_sensor/__init__.py +17 -0
  69. viam/components/power_sensor/client.py +86 -0
  70. viam/components/power_sensor/power_sensor.py +104 -0
  71. viam/components/power_sensor/service.py +72 -0
  72. viam/components/sensor/__init__.py +18 -0
  73. viam/components/sensor/client.py +49 -0
  74. viam/components/sensor/sensor.py +48 -0
  75. viam/components/sensor/service.py +51 -0
  76. viam/components/servo/__init__.py +11 -0
  77. viam/components/servo/client.py +86 -0
  78. viam/components/servo/service.py +80 -0
  79. viam/components/servo/servo.py +114 -0
  80. viam/components/switch/__init__.py +10 -0
  81. viam/components/switch/client.py +83 -0
  82. viam/components/switch/service.py +72 -0
  83. viam/components/switch/switch.py +95 -0
  84. viam/errors.py +105 -0
  85. viam/gen/__init__.py +0 -0
  86. viam/gen/app/__init__.py +0 -0
  87. viam/gen/app/agent/__init__.py +0 -0
  88. viam/gen/app/agent/v1/__init__.py +0 -0
  89. viam/gen/app/agent/v1/agent_grpc.py +29 -0
  90. viam/gen/app/agent/v1/agent_pb2.py +47 -0
  91. viam/gen/app/agent/v1/agent_pb2.pyi +280 -0
  92. viam/gen/app/cloudslam/__init__.py +0 -0
  93. viam/gen/app/cloudslam/v1/__init__.py +0 -0
  94. viam/gen/app/cloudslam/v1/cloud_slam_grpc.py +70 -0
  95. viam/gen/app/cloudslam/v1/cloud_slam_pb2.py +54 -0
  96. viam/gen/app/cloudslam/v1/cloud_slam_pb2.pyi +384 -0
  97. viam/gen/app/data/__init__.py +0 -0
  98. viam/gen/app/data/v1/__init__.py +0 -0
  99. viam/gen/app/data/v1/data_grpc.py +206 -0
  100. viam/gen/app/data/v1/data_pb2.py +178 -0
  101. viam/gen/app/data/v1/data_pb2.pyi +1485 -0
  102. viam/gen/app/datapipelines/__init__.py +0 -0
  103. viam/gen/app/datapipelines/v1/__init__.py +0 -0
  104. viam/gen/app/datapipelines/v1/data_pipelines_grpc.py +84 -0
  105. viam/gen/app/datapipelines/v1/data_pipelines_pb2.py +56 -0
  106. viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi +370 -0
  107. viam/gen/app/dataset/__init__.py +0 -0
  108. viam/gen/app/dataset/v1/__init__.py +0 -0
  109. viam/gen/app/dataset/v1/dataset_grpc.py +60 -0
  110. viam/gen/app/dataset/v1/dataset_pb2.py +40 -0
  111. viam/gen/app/dataset/v1/dataset_pb2.pyi +179 -0
  112. viam/gen/app/datasync/__init__.py +0 -0
  113. viam/gen/app/datasync/v1/__init__.py +0 -0
  114. viam/gen/app/datasync/v1/data_sync_grpc.py +47 -0
  115. viam/gen/app/datasync/v1/data_sync_pb2.py +70 -0
  116. viam/gen/app/datasync/v1/data_sync_pb2.pyi +425 -0
  117. viam/gen/app/mlinference/__init__.py +0 -0
  118. viam/gen/app/mlinference/v1/__init__.py +0 -0
  119. viam/gen/app/mlinference/v1/ml_inference_grpc.py +28 -0
  120. viam/gen/app/mlinference/v1/ml_inference_pb2.py +23 -0
  121. viam/gen/app/mlinference/v1/ml_inference_pb2.pyi +63 -0
  122. viam/gen/app/mltraining/__init__.py +0 -0
  123. viam/gen/app/mltraining/v1/__init__.py +0 -0
  124. viam/gen/app/mltraining/v1/ml_training_grpc.py +78 -0
  125. viam/gen/app/mltraining/v1/ml_training_pb2.py +124 -0
  126. viam/gen/app/mltraining/v1/ml_training_pb2.pyi +415 -0
  127. viam/gen/app/packages/__init__.py +0 -0
  128. viam/gen/app/packages/v1/__init__.py +0 -0
  129. viam/gen/app/packages/v1/packages_grpc.py +54 -0
  130. viam/gen/app/packages/v1/packages_pb2.py +52 -0
  131. viam/gen/app/packages/v1/packages_pb2.pyi +311 -0
  132. viam/gen/app/v1/__init__.py +0 -0
  133. viam/gen/app/v1/app_grpc.py +863 -0
  134. viam/gen/app/v1/app_pb2.py +649 -0
  135. viam/gen/app/v1/app_pb2.pyi +5279 -0
  136. viam/gen/app/v1/billing_grpc.py +76 -0
  137. viam/gen/app/v1/billing_pb2.py +92 -0
  138. viam/gen/app/v1/billing_pb2.pyi +463 -0
  139. viam/gen/app/v1/end_user_grpc.py +59 -0
  140. viam/gen/app/v1/end_user_pb2.py +55 -0
  141. viam/gen/app/v1/end_user_pb2.pyi +181 -0
  142. viam/gen/app/v1/robot_grpc.py +55 -0
  143. viam/gen/app/v1/robot_pb2.py +127 -0
  144. viam/gen/app/v1/robot_pb2.pyi +1202 -0
  145. viam/gen/common/__init__.py +0 -0
  146. viam/gen/common/v1/__init__.py +0 -0
  147. viam/gen/common/v1/common_grpc.py +0 -0
  148. viam/gen/common/v1/common_pb2.py +78 -0
  149. viam/gen/common/v1/common_pb2.pyi +687 -0
  150. viam/gen/component/__init__.py +0 -0
  151. viam/gen/component/arm/__init__.py +0 -0
  152. viam/gen/component/arm/v1/__init__.py +0 -0
  153. viam/gen/component/arm/v1/arm_grpc.py +102 -0
  154. viam/gen/component/arm/v1/arm_pb2.py +74 -0
  155. viam/gen/component/arm/v1/arm_pb2.pyi +344 -0
  156. viam/gen/component/audioinput/__init__.py +0 -0
  157. viam/gen/component/audioinput/v1/__init__.py +0 -0
  158. viam/gen/component/audioinput/v1/audioinput_grpc.py +63 -0
  159. viam/gen/component/audioinput/v1/audioinput_pb2.py +45 -0
  160. viam/gen/component/audioinput/v1/audioinput_pb2.pyi +179 -0
  161. viam/gen/component/base/__init__.py +0 -0
  162. viam/gen/component/base/v1/__init__.py +0 -0
  163. viam/gen/component/base/v1/base_grpc.py +94 -0
  164. viam/gen/component/base/v1/base_pb2.py +66 -0
  165. viam/gen/component/base/v1/base_pb2.pyi +258 -0
  166. viam/gen/component/board/__init__.py +0 -0
  167. viam/gen/component/board/v1/__init__.py +0 -0
  168. viam/gen/component/board/v1/board_grpc.py +127 -0
  169. viam/gen/component/board/v1/board_pb2.py +103 -0
  170. viam/gen/component/board/v1/board_pb2.pyi +496 -0
  171. viam/gen/component/button/__init__.py +0 -0
  172. viam/gen/component/button/v1/__init__.py +0 -0
  173. viam/gen/component/button/v1/button_grpc.py +38 -0
  174. viam/gen/component/button/v1/button_pb2.py +28 -0
  175. viam/gen/component/button/v1/button_pb2.pyi +39 -0
  176. viam/gen/component/camera/__init__.py +0 -0
  177. viam/gen/component/camera/v1/__init__.py +0 -0
  178. viam/gen/component/camera/v1/camera_grpc.py +79 -0
  179. viam/gen/component/camera/v1/camera_pb2.py +67 -0
  180. viam/gen/component/camera/v1/camera_pb2.pyi +373 -0
  181. viam/gen/component/encoder/__init__.py +0 -0
  182. viam/gen/component/encoder/v1/__init__.py +0 -0
  183. viam/gen/component/encoder/v1/encoder_grpc.py +62 -0
  184. viam/gen/component/encoder/v1/encoder_pb2.py +44 -0
  185. viam/gen/component/encoder/v1/encoder_pb2.pyi +147 -0
  186. viam/gen/component/gantry/__init__.py +0 -0
  187. viam/gen/component/gantry/v1/__init__.py +0 -0
  188. viam/gen/component/gantry/v1/gantry_grpc.py +86 -0
  189. viam/gen/component/gantry/v1/gantry_pb2.py +62 -0
  190. viam/gen/component/gantry/v1/gantry_pb2.pyi +239 -0
  191. viam/gen/component/generic/__init__.py +0 -0
  192. viam/gen/component/generic/v1/__init__.py +0 -0
  193. viam/gen/component/generic/v1/generic_grpc.py +37 -0
  194. viam/gen/component/generic/v1/generic_pb2.py +23 -0
  195. viam/gen/component/generic/v1/generic_pb2.pyi +6 -0
  196. viam/gen/component/gripper/__init__.py +0 -0
  197. viam/gen/component/gripper/v1/__init__.py +0 -0
  198. viam/gen/component/gripper/v1/gripper_grpc.py +70 -0
  199. viam/gen/component/gripper/v1/gripper_pb2.py +48 -0
  200. viam/gen/component/gripper/v1/gripper_pb2.pyi +137 -0
  201. viam/gen/component/inputcontroller/__init__.py +0 -0
  202. viam/gen/component/inputcontroller/v1/__init__.py +0 -0
  203. viam/gen/component/inputcontroller/v1/input_controller_grpc.py +71 -0
  204. viam/gen/component/inputcontroller/v1/input_controller_pb2.py +55 -0
  205. viam/gen/component/inputcontroller/v1/input_controller_pb2.pyi +243 -0
  206. viam/gen/component/motor/__init__.py +0 -0
  207. viam/gen/component/motor/v1/__init__.py +0 -0
  208. viam/gen/component/motor/v1/motor_grpc.py +118 -0
  209. viam/gen/component/motor/v1/motor_pb2.py +86 -0
  210. viam/gen/component/motor/v1/motor_pb2.pyi +368 -0
  211. viam/gen/component/movementsensor/__init__.py +0 -0
  212. viam/gen/component/movementsensor/v1/__init__.py +0 -0
  213. viam/gen/component/movementsensor/v1/movementsensor_grpc.py +110 -0
  214. viam/gen/component/movementsensor/v1/movementsensor_pb2.py +78 -0
  215. viam/gen/component/movementsensor/v1/movementsensor_pb2.pyi +384 -0
  216. viam/gen/component/posetracker/__init__.py +0 -0
  217. viam/gen/component/posetracker/v1/__init__.py +0 -0
  218. viam/gen/component/posetracker/v1/pose_tracker_grpc.py +46 -0
  219. viam/gen/component/posetracker/v1/pose_tracker_pb2.py +34 -0
  220. viam/gen/component/posetracker/v1/pose_tracker_pb2.pyi +79 -0
  221. viam/gen/component/powersensor/__init__.py +0 -0
  222. viam/gen/component/powersensor/v1/__init__.py +0 -0
  223. viam/gen/component/powersensor/v1/powersensor_grpc.py +62 -0
  224. viam/gen/component/powersensor/v1/powersensor_pb2.py +42 -0
  225. viam/gen/component/powersensor/v1/powersensor_pb2.pyi +124 -0
  226. viam/gen/component/sensor/__init__.py +0 -0
  227. viam/gen/component/sensor/v1/__init__.py +0 -0
  228. viam/gen/component/sensor/v1/sensor_grpc.py +45 -0
  229. viam/gen/component/sensor/v1/sensor_pb2.py +25 -0
  230. viam/gen/component/sensor/v1/sensor_pb2.pyi +6 -0
  231. viam/gen/component/servo/__init__.py +0 -0
  232. viam/gen/component/servo/v1/__init__.py +0 -0
  233. viam/gen/component/servo/v1/servo_grpc.py +70 -0
  234. viam/gen/component/servo/v1/servo_pb2.py +50 -0
  235. viam/gen/component/servo/v1/servo_pb2.pyi +150 -0
  236. viam/gen/component/switch/__init__.py +0 -0
  237. viam/gen/component/switch/v1/__init__.py +0 -0
  238. viam/gen/component/switch/v1/switch_grpc.py +54 -0
  239. viam/gen/component/switch/v1/switch_pb2.py +40 -0
  240. viam/gen/component/switch/v1/switch_pb2.pyi +109 -0
  241. viam/gen/component/testecho/__init__.py +0 -0
  242. viam/gen/component/testecho/v1/__init__.py +0 -0
  243. viam/gen/component/testecho/v1/testecho_grpc.py +52 -0
  244. viam/gen/component/testecho/v1/testecho_pb2.py +36 -0
  245. viam/gen/component/testecho/v1/testecho_pb2.pyi +114 -0
  246. viam/gen/module/__init__.py +0 -0
  247. viam/gen/module/v1/__init__.py +0 -0
  248. viam/gen/module/v1/module_grpc.py +61 -0
  249. viam/gen/module/v1/module_pb2.py +43 -0
  250. viam/gen/module/v1/module_pb2.pyi +211 -0
  251. viam/gen/proto/__init__.py +0 -0
  252. viam/gen/proto/rpc/__init__.py +0 -0
  253. viam/gen/proto/rpc/examples/__init__.py +0 -0
  254. viam/gen/proto/rpc/examples/echo/__init__.py +0 -0
  255. viam/gen/proto/rpc/examples/echo/v1/__init__.py +0 -0
  256. viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py +44 -0
  257. viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py +32 -0
  258. viam/gen/proto/rpc/examples/echo/v1/echo_pb2.pyi +87 -0
  259. viam/gen/proto/rpc/examples/echoresource/__init__.py +0 -0
  260. viam/gen/proto/rpc/examples/echoresource/v1/__init__.py +0 -0
  261. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_grpc.py +43 -0
  262. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py +29 -0
  263. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.pyi +93 -0
  264. viam/gen/proto/rpc/v1/__init__.py +0 -0
  265. viam/gen/proto/rpc/v1/auth_grpc.py +47 -0
  266. viam/gen/proto/rpc/v1/auth_pb2.py +34 -0
  267. viam/gen/proto/rpc/v1/auth_pb2.pyi +92 -0
  268. viam/gen/proto/rpc/webrtc/__init__.py +0 -0
  269. viam/gen/proto/rpc/webrtc/v1/__init__.py +0 -0
  270. viam/gen/proto/rpc/webrtc/v1/grpc_grpc.py +0 -0
  271. viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py +43 -0
  272. viam/gen/proto/rpc/webrtc/v1/grpc_pb2.pyi +304 -0
  273. viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py +54 -0
  274. viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py +70 -0
  275. viam/gen/proto/rpc/webrtc/v1/signaling_pb2.pyi +496 -0
  276. viam/gen/provisioning/__init__.py +0 -0
  277. viam/gen/provisioning/v1/__init__.py +0 -0
  278. viam/gen/provisioning/v1/provisioning_grpc.py +51 -0
  279. viam/gen/provisioning/v1/provisioning_pb2.py +39 -0
  280. viam/gen/provisioning/v1/provisioning_pb2.pyi +188 -0
  281. viam/gen/robot/__init__.py +0 -0
  282. viam/gen/robot/v1/__init__.py +0 -0
  283. viam/gen/robot/v1/robot_grpc.py +208 -0
  284. viam/gen/robot/v1/robot_pb2.py +188 -0
  285. viam/gen/robot/v1/robot_pb2.pyi +1020 -0
  286. viam/gen/service/__init__.py +0 -0
  287. viam/gen/service/datamanager/__init__.py +0 -0
  288. viam/gen/service/datamanager/v1/__init__.py +0 -0
  289. viam/gen/service/datamanager/v1/data_manager_grpc.py +38 -0
  290. viam/gen/service/datamanager/v1/data_manager_pb2.py +28 -0
  291. viam/gen/service/datamanager/v1/data_manager_pb2.pyi +39 -0
  292. viam/gen/service/discovery/__init__.py +0 -0
  293. viam/gen/service/discovery/v1/__init__.py +0 -0
  294. viam/gen/service/discovery/v1/discovery_grpc.py +39 -0
  295. viam/gen/service/discovery/v1/discovery_pb2.py +29 -0
  296. viam/gen/service/discovery/v1/discovery_pb2.pyi +51 -0
  297. viam/gen/service/generic/__init__.py +0 -0
  298. viam/gen/service/generic/v1/__init__.py +0 -0
  299. viam/gen/service/generic/v1/generic_grpc.py +29 -0
  300. viam/gen/service/generic/v1/generic_pb2.py +21 -0
  301. viam/gen/service/generic/v1/generic_pb2.pyi +6 -0
  302. viam/gen/service/mlmodel/__init__.py +0 -0
  303. viam/gen/service/mlmodel/v1/__init__.py +0 -0
  304. viam/gen/service/mlmodel/v1/mlmodel_grpc.py +37 -0
  305. viam/gen/service/mlmodel/v1/mlmodel_pb2.py +83 -0
  306. viam/gen/service/mlmodel/v1/mlmodel_pb2.pyi +480 -0
  307. viam/gen/service/motion/__init__.py +0 -0
  308. viam/gen/service/motion/v1/__init__.py +0 -0
  309. viam/gen/service/motion/v1/motion_grpc.py +87 -0
  310. viam/gen/service/motion/v1/motion_pb2.py +97 -0
  311. viam/gen/service/motion/v1/motion_pb2.pyi +838 -0
  312. viam/gen/service/navigation/__init__.py +0 -0
  313. viam/gen/service/navigation/v1/__init__.py +0 -0
  314. viam/gen/service/navigation/v1/navigation_grpc.py +102 -0
  315. viam/gen/service/navigation/v1/navigation_pb2.py +84 -0
  316. viam/gen/service/navigation/v1/navigation_pb2.pyi +419 -0
  317. viam/gen/service/sensors/__init__.py +0 -0
  318. viam/gen/service/sensors/v1/__init__.py +0 -0
  319. viam/gen/service/sensors/v1/sensors_grpc.py +46 -0
  320. viam/gen/service/sensors/v1/sensors_pb2.py +68 -0
  321. viam/gen/service/sensors/v1/sensors_pb2.pyi +137 -0
  322. viam/gen/service/shell/__init__.py +0 -0
  323. viam/gen/service/shell/v1/__init__.py +0 -0
  324. viam/gen/service/shell/v1/shell_grpc.py +55 -0
  325. viam/gen/service/shell/v1/shell_pb2.py +45 -0
  326. viam/gen/service/shell/v1/shell_pb2.pyi +307 -0
  327. viam/gen/service/slam/__init__.py +0 -0
  328. viam/gen/service/slam/v1/__init__.py +0 -0
  329. viam/gen/service/slam/v1/slam_grpc.py +61 -0
  330. viam/gen/service/slam/v1/slam_pb2.py +51 -0
  331. viam/gen/service/slam/v1/slam_pb2.pyi +213 -0
  332. viam/gen/service/vision/__init__.py +0 -0
  333. viam/gen/service/vision/v1/__init__.py +0 -0
  334. viam/gen/service/vision/v1/vision_grpc.py +87 -0
  335. viam/gen/service/vision/v1/vision_pb2.py +69 -0
  336. viam/gen/service/vision/v1/vision_pb2.pyi +454 -0
  337. viam/gen/stream/__init__.py +0 -0
  338. viam/gen/stream/v1/__init__.py +0 -0
  339. viam/gen/stream/v1/stream_grpc.py +59 -0
  340. viam/gen/stream/v1/stream_pb2.py +39 -0
  341. viam/gen/stream/v1/stream_pb2.pyi +161 -0
  342. viam/gen/tagger/__init__.py +0 -0
  343. viam/gen/tagger/v1/__init__.py +0 -0
  344. viam/gen/tagger/v1/tagger_grpc.py +0 -0
  345. viam/gen/tagger/v1/tagger_pb2.py +16 -0
  346. viam/gen/tagger/v1/tagger_pb2.pyi +15 -0
  347. viam/logging.py +216 -0
  348. viam/media/__init__.py +0 -0
  349. viam/media/audio.py +16 -0
  350. viam/media/utils/__init__.py +0 -0
  351. viam/media/utils/pil/__init__.py +51 -0
  352. viam/media/utils/pil/viam_rgba_plugin.py +73 -0
  353. viam/media/viam_rgba.py +10 -0
  354. viam/media/video.py +217 -0
  355. viam/module/__init__.py +5 -0
  356. viam/module/module.py +281 -0
  357. viam/module/service.py +66 -0
  358. viam/module/types.py +23 -0
  359. viam/operations.py +124 -0
  360. viam/proto/__init__.py +0 -0
  361. viam/proto/app/__init__.py +554 -0
  362. viam/proto/app/agent/__init__.py +28 -0
  363. viam/proto/app/billing.py +58 -0
  364. viam/proto/app/cloudslam/__init__.py +48 -0
  365. viam/proto/app/data/__init__.py +138 -0
  366. viam/proto/app/datapipelines/__init__.py +56 -0
  367. viam/proto/app/dataset/__init__.py +36 -0
  368. viam/proto/app/datasync/__init__.py +44 -0
  369. viam/proto/app/end_user.py +34 -0
  370. viam/proto/app/mlinference/__init__.py +15 -0
  371. viam/proto/app/mltraining/__init__.py +52 -0
  372. viam/proto/app/packages/__init__.py +38 -0
  373. viam/proto/app/robot.py +84 -0
  374. viam/proto/common/__init__.py +66 -0
  375. viam/proto/component/__init__.py +0 -0
  376. viam/proto/component/arm/__init__.py +48 -0
  377. viam/proto/component/audioinput/__init__.py +30 -0
  378. viam/proto/component/base/__init__.py +42 -0
  379. viam/proto/component/board/__init__.py +62 -0
  380. viam/proto/component/button/__init__.py +15 -0
  381. viam/proto/component/camera/__init__.py +46 -0
  382. viam/proto/component/encoder/__init__.py +28 -0
  383. viam/proto/component/gantry/__init__.py +40 -0
  384. viam/proto/component/generic/__init__.py +12 -0
  385. viam/proto/component/gripper/__init__.py +30 -0
  386. viam/proto/component/inputcontroller/__init__.py +38 -0
  387. viam/proto/component/motor/__init__.py +56 -0
  388. viam/proto/component/movementsensor/__init__.py +50 -0
  389. viam/proto/component/posetracker/__init__.py +19 -0
  390. viam/proto/component/powersensor/__init__.py +30 -0
  391. viam/proto/component/sensor/__init__.py +12 -0
  392. viam/proto/component/servo/__init__.py +32 -0
  393. viam/proto/component/switch/__init__.py +26 -0
  394. viam/proto/component/testecho/__init__.py +30 -0
  395. viam/proto/module/__init__.py +38 -0
  396. viam/proto/provisioning/__init__.py +36 -0
  397. viam/proto/robot/__init__.py +130 -0
  398. viam/proto/rpc/__init__.py +0 -0
  399. viam/proto/rpc/auth.py +34 -0
  400. viam/proto/rpc/examples/__init__.py +0 -0
  401. viam/proto/rpc/examples/echo/__init__.py +26 -0
  402. viam/proto/rpc/examples/echoresource/__init__.py +30 -0
  403. viam/proto/rpc/webrtc/__init__.py +0 -0
  404. viam/proto/rpc/webrtc/grpc.py +36 -0
  405. viam/proto/rpc/webrtc/signaling.py +58 -0
  406. viam/proto/service/__init__.py +0 -0
  407. viam/proto/service/datamanager/__init__.py +19 -0
  408. viam/proto/service/discovery/__init__.py +15 -0
  409. viam/proto/service/generic/__init__.py +12 -0
  410. viam/proto/service/mlmodel/__init__.py +54 -0
  411. viam/proto/service/motion/__init__.py +68 -0
  412. viam/proto/service/navigation/__init__.py +58 -0
  413. viam/proto/service/sensors/__init__.py +18 -0
  414. viam/proto/service/shell/__init__.py +36 -0
  415. viam/proto/service/slam/__init__.py +36 -0
  416. viam/proto/service/vision/__init__.py +46 -0
  417. viam/proto/stream/__init__.py +36 -0
  418. viam/proto/tagger/__init__.py +6 -0
  419. viam/py.typed +0 -0
  420. viam/resource/__init__.py +0 -0
  421. viam/resource/base.py +123 -0
  422. viam/resource/easy_resource.py +153 -0
  423. viam/resource/manager.py +126 -0
  424. viam/resource/registry.py +199 -0
  425. viam/resource/rpc_client_base.py +65 -0
  426. viam/resource/rpc_service_base.py +48 -0
  427. viam/resource/types.py +213 -0
  428. viam/robot/__init__.py +0 -0
  429. viam/robot/client.py +909 -0
  430. viam/robot/service.py +69 -0
  431. viam/rpc/__init__.py +0 -0
  432. viam/rpc/dial.py +420 -0
  433. viam/rpc/libviam_rust_utils.dll +0 -0
  434. viam/rpc/server.py +201 -0
  435. viam/rpc/signaling.py +29 -0
  436. viam/rpc/types.py +22 -0
  437. viam/services/__init__.py +0 -0
  438. viam/services/discovery/__init__.py +12 -0
  439. viam/services/discovery/client.py +55 -0
  440. viam/services/discovery/discovery.py +52 -0
  441. viam/services/discovery/service.py +43 -0
  442. viam/services/generic/__init__.py +18 -0
  443. viam/services/generic/client.py +58 -0
  444. viam/services/generic/generic.py +58 -0
  445. viam/services/generic/service.py +29 -0
  446. viam/services/mlmodel/__init__.py +24 -0
  447. viam/services/mlmodel/client.py +37 -0
  448. viam/services/mlmodel/mlmodel.py +78 -0
  449. viam/services/mlmodel/service.py +38 -0
  450. viam/services/mlmodel/utils.py +101 -0
  451. viam/services/motion/__init__.py +17 -0
  452. viam/services/motion/client.py +215 -0
  453. viam/services/motion/motion.py +378 -0
  454. viam/services/motion/service.py +132 -0
  455. viam/services/navigation/__init__.py +11 -0
  456. viam/services/navigation/client.py +99 -0
  457. viam/services/navigation/navigation.py +250 -0
  458. viam/services/navigation/service.py +137 -0
  459. viam/services/service_base.py +78 -0
  460. viam/services/service_client_base.py +46 -0
  461. viam/services/slam/__init__.py +17 -0
  462. viam/services/slam/client.py +62 -0
  463. viam/services/slam/service.py +75 -0
  464. viam/services/slam/slam.py +111 -0
  465. viam/services/vision/__init__.py +15 -0
  466. viam/services/vision/client.py +206 -0
  467. viam/services/vision/service.py +146 -0
  468. viam/services/vision/vision.py +315 -0
  469. viam/sessions_client.py +245 -0
  470. viam/streams.py +44 -0
  471. viam/utils.py +365 -0
  472. viam/version_metadata.py +4 -0
  473. viam_sdk-0.45.2.dist-info/METADATA +157 -0
  474. viam_sdk-0.45.2.dist-info/RECORD +476 -0
  475. viam_sdk-0.45.2.dist-info/WHEEL +4 -0
  476. viam_sdk-0.45.2.dist-info/licenses/LICENSE +202 -0
@@ -0,0 +1,150 @@
1
+ from grpclib.server import Stream
2
+
3
+ from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse
4
+ from viam.proto.component.motor import (
5
+ GetPositionRequest,
6
+ GetPositionResponse,
7
+ GetPropertiesRequest,
8
+ GetPropertiesResponse,
9
+ GoForRequest,
10
+ GoForResponse,
11
+ GoToRequest,
12
+ GoToResponse,
13
+ IsMovingRequest,
14
+ IsMovingResponse,
15
+ IsPoweredRequest,
16
+ IsPoweredResponse,
17
+ ResetZeroPositionRequest,
18
+ ResetZeroPositionResponse,
19
+ SetPowerRequest,
20
+ SetPowerResponse,
21
+ SetRPMRequest,
22
+ SetRPMResponse,
23
+ StopRequest,
24
+ StopResponse,
25
+ UnimplementedMotorServiceBase,
26
+ )
27
+ from viam.resource.rpc_service_base import ResourceRPCServiceBase
28
+ from viam.utils import dict_to_struct, struct_to_dict
29
+
30
+ from .motor import Motor
31
+
32
+
33
+ class MotorRPCService(UnimplementedMotorServiceBase, ResourceRPCServiceBase[Motor]):
34
+ """
35
+ gRPC Service for a Motor
36
+ """
37
+
38
+ RESOURCE_TYPE = Motor
39
+
40
+ async def SetPower(self, stream: Stream[SetPowerRequest, SetPowerResponse]) -> None:
41
+ request = await stream.recv_message()
42
+ assert request is not None
43
+ name = request.name
44
+ motor = self.get_resource(name)
45
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
46
+ await motor.set_power(request.power_pct, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
47
+ await stream.send_message(SetPowerResponse())
48
+
49
+ async def GoFor(self, stream: Stream[GoForRequest, GoForResponse]) -> None:
50
+ request = await stream.recv_message()
51
+ assert request is not None
52
+ name = request.name
53
+ motor = self.get_resource(name)
54
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
55
+ await motor.go_for(request.rpm, request.revolutions, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
56
+ await stream.send_message(GoForResponse())
57
+
58
+ async def GoTo(self, stream: Stream[GoToRequest, GoToResponse]) -> None:
59
+ request = await stream.recv_message()
60
+ assert request is not None
61
+ name = request.name
62
+ motor = self.get_resource(name)
63
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
64
+ await motor.go_to(
65
+ request.rpm, request.position_revolutions, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata
66
+ )
67
+ await stream.send_message(GoToResponse())
68
+
69
+ async def SetRPM(self, stream: Stream[SetRPMRequest, SetRPMResponse]) -> None:
70
+ request = await stream.recv_message()
71
+ assert request is not None
72
+ name = request.name
73
+ motor = self.get_resource(name)
74
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
75
+ await motor.set_rpm(request.rpm, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
76
+ await stream.send_message(SetRPMResponse())
77
+
78
+ async def ResetZeroPosition(self, stream: Stream[ResetZeroPositionRequest, ResetZeroPositionResponse]) -> None:
79
+ request = await stream.recv_message()
80
+ assert request is not None
81
+ name = request.name
82
+ motor = self.get_resource(name)
83
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
84
+ await motor.reset_zero_position(request.offset, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
85
+ await stream.send_message(ResetZeroPositionResponse())
86
+
87
+ async def GetPosition(self, stream: Stream[GetPositionRequest, GetPositionResponse]) -> None:
88
+ request = await stream.recv_message()
89
+ assert request is not None
90
+ name = request.name
91
+ motor = self.get_resource(name)
92
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
93
+ position = await motor.get_position(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
94
+ await stream.send_message(GetPositionResponse(position=position))
95
+
96
+ async def GetProperties(self, stream: Stream[GetPropertiesRequest, GetPropertiesResponse]) -> None:
97
+ request = await stream.recv_message()
98
+ assert request is not None
99
+ name = request.name
100
+ motor = self.get_resource(name)
101
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
102
+ properties = await motor.get_properties(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
103
+ response = GetPropertiesResponse(**properties.__dict__)
104
+ await stream.send_message(response)
105
+
106
+ async def Stop(self, stream: Stream[StopRequest, StopResponse]) -> None:
107
+ request = await stream.recv_message()
108
+ assert request is not None
109
+ name = request.name
110
+ motor = self.get_resource(name)
111
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
112
+ await motor.stop(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
113
+ response = StopResponse()
114
+ await stream.send_message(response)
115
+
116
+ async def IsPowered(self, stream: Stream[IsPoweredRequest, IsPoweredResponse]) -> None:
117
+ request = await stream.recv_message()
118
+ assert request is not None
119
+ name = request.name
120
+ motor = self.get_resource(name)
121
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
122
+ is_powered, power_pct = await motor.is_powered(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
123
+ await stream.send_message(IsPoweredResponse(is_on=is_powered, power_pct=power_pct))
124
+
125
+ async def IsMoving(self, stream: Stream[IsMovingRequest, IsMovingResponse]) -> None:
126
+ request = await stream.recv_message()
127
+ assert request is not None
128
+ name = request.name
129
+ motor = self.get_resource(name)
130
+ is_moving = await motor.is_moving()
131
+ response = IsMovingResponse(is_moving=is_moving)
132
+ await stream.send_message(response)
133
+
134
+ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
135
+ request = await stream.recv_message()
136
+ assert request is not None
137
+ motor = self.get_resource(request.name)
138
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
139
+ result = await motor.do_command(command=struct_to_dict(request.command), timeout=timeout, metadata=stream.metadata)
140
+ response = DoCommandResponse(result=dict_to_struct(result))
141
+ await stream.send_message(response)
142
+
143
+ async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
144
+ request = await stream.recv_message()
145
+ assert request is not None
146
+ motor = self.get_resource(request.name)
147
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
148
+ geometries = await motor.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
149
+ response = GetGeometriesResponse(geometries=geometries)
150
+ await stream.send_message(response)
@@ -0,0 +1,21 @@
1
+ from viam.proto.common import GeoPoint, Orientation, Vector3
2
+ from viam.resource.registry import Registry, ResourceRegistration
3
+
4
+ from .client import MovementSensorClient
5
+ from .movement_sensor import MovementSensor
6
+ from .service import MovementSensorRPCService
7
+
8
+ __all__ = [
9
+ "MovementSensor",
10
+ "GeoPoint",
11
+ "Orientation",
12
+ "Vector3",
13
+ ]
14
+
15
+ Registry.register_api(
16
+ ResourceRegistration(
17
+ MovementSensor,
18
+ MovementSensorRPCService,
19
+ lambda name, channel: MovementSensorClient(name, channel),
20
+ )
21
+ )
@@ -0,0 +1,161 @@
1
+ from typing import Any, Dict, List, Mapping, Optional, Tuple
2
+
3
+ from grpclib.client import Channel
4
+
5
+ from viam.components.movement_sensor.movement_sensor import MovementSensor
6
+ from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetReadingsRequest, GetReadingsResponse
7
+ from viam.proto.component.movementsensor import (
8
+ GetAccuracyRequest,
9
+ GetAngularVelocityRequest,
10
+ GetAngularVelocityResponse,
11
+ GetCompassHeadingRequest,
12
+ GetCompassHeadingResponse,
13
+ GetLinearAccelerationRequest,
14
+ GetLinearAccelerationResponse,
15
+ GetLinearVelocityRequest,
16
+ GetLinearVelocityResponse,
17
+ GetOrientationRequest,
18
+ GetOrientationResponse,
19
+ GetPositionRequest,
20
+ GetPositionResponse,
21
+ GetPropertiesRequest,
22
+ GetPropertiesResponse,
23
+ MovementSensorServiceStub,
24
+ )
25
+ from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
26
+ from viam.utils import SensorReading, ValueTypes, dict_to_struct, get_geometries, sensor_readings_value_to_native, struct_to_dict
27
+
28
+ from . import GeoPoint, Orientation, Vector3
29
+
30
+
31
+ class MovementSensorClient(MovementSensor, ReconfigurableResourceRPCClientBase):
32
+ """gRPC client for the MovementSensor component."""
33
+
34
+ def __init__(self, name: str, channel: Channel):
35
+ self.channel = channel
36
+ self.client = MovementSensorServiceStub(channel)
37
+ super().__init__(name)
38
+
39
+ async def get_position(
40
+ self,
41
+ *,
42
+ extra: Optional[Dict[str, Any]] = None,
43
+ timeout: Optional[float] = None,
44
+ **kwargs,
45
+ ) -> Tuple[GeoPoint, float]:
46
+ md = kwargs.get("metadata", self.Metadata()).proto
47
+ request = GetPositionRequest(name=self.name, extra=dict_to_struct(extra))
48
+ response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md)
49
+ return response.coordinate, response.altitude_m
50
+
51
+ async def get_linear_velocity(
52
+ self,
53
+ *,
54
+ extra: Optional[Dict[str, Any]] = None,
55
+ timeout: Optional[float] = None,
56
+ **kwargs,
57
+ ) -> Vector3:
58
+ md = kwargs.get("metadata", self.Metadata()).proto
59
+ request = GetLinearVelocityRequest(name=self.name, extra=dict_to_struct(extra))
60
+ response: GetLinearVelocityResponse = await self.client.GetLinearVelocity(request, timeout=timeout, metadata=md)
61
+ return response.linear_velocity
62
+
63
+ async def get_angular_velocity(
64
+ self,
65
+ *,
66
+ extra: Optional[Dict[str, Any]] = None,
67
+ timeout: Optional[float] = None,
68
+ **kwargs,
69
+ ) -> Vector3:
70
+ md = kwargs.get("metadata", self.Metadata()).proto
71
+ request = GetAngularVelocityRequest(name=self.name, extra=dict_to_struct(extra))
72
+ response: GetAngularVelocityResponse = await self.client.GetAngularVelocity(request, timeout=timeout, metadata=md)
73
+ return response.angular_velocity
74
+
75
+ async def get_linear_acceleration(
76
+ self,
77
+ *,
78
+ extra: Optional[Dict[str, Any]] = None,
79
+ timeout: Optional[float] = None,
80
+ **kwargs,
81
+ ) -> Vector3:
82
+ md = kwargs.get("metadata", self.Metadata()).proto
83
+ request = GetLinearAccelerationRequest(name=self.name, extra=dict_to_struct(extra))
84
+ response: GetLinearAccelerationResponse = await self.client.GetLinearAcceleration(request, timeout=timeout, metadata=md)
85
+ return response.linear_acceleration
86
+
87
+ async def get_compass_heading(
88
+ self,
89
+ *,
90
+ extra: Optional[Dict[str, Any]] = None,
91
+ timeout: Optional[float] = None,
92
+ **kwargs,
93
+ ) -> float:
94
+ md = kwargs.get("metadata", self.Metadata()).proto
95
+ request = GetCompassHeadingRequest(name=self.name, extra=dict_to_struct(extra))
96
+ response: GetCompassHeadingResponse = await self.client.GetCompassHeading(request, timeout=timeout, metadata=md)
97
+ return response.value
98
+
99
+ async def get_orientation(
100
+ self,
101
+ *,
102
+ extra: Optional[Dict[str, Any]] = None,
103
+ timeout: Optional[float] = None,
104
+ **kwargs,
105
+ ) -> Orientation:
106
+ md = kwargs.get("metadata", self.Metadata()).proto
107
+ request = GetOrientationRequest(name=self.name, extra=dict_to_struct(extra))
108
+ response: GetOrientationResponse = await self.client.GetOrientation(request, timeout=timeout, metadata=md)
109
+ return response.orientation
110
+
111
+ async def get_properties(
112
+ self,
113
+ *,
114
+ extra: Optional[Dict[str, Any]] = None,
115
+ timeout: Optional[float] = None,
116
+ **kwargs,
117
+ ) -> MovementSensor.Properties:
118
+ md = kwargs.get("metadata", self.Metadata()).proto
119
+ request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra))
120
+ response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md)
121
+ return MovementSensor.Properties.from_proto(response)
122
+
123
+ async def get_accuracy(
124
+ self,
125
+ *,
126
+ extra: Optional[Dict[str, Any]] = None,
127
+ timeout: Optional[float] = None,
128
+ **kwargs,
129
+ ) -> MovementSensor.Accuracy:
130
+ md = kwargs.get("metadata", self.Metadata()).proto
131
+ request = GetAccuracyRequest(name=self.name, extra=dict_to_struct(extra))
132
+ return await self.client.GetAccuracy(request, timeout=timeout, metadata=md)
133
+
134
+ async def get_readings(
135
+ self,
136
+ *,
137
+ extra: Optional[Dict[str, Any]] = None,
138
+ timeout: Optional[float] = None,
139
+ **kwargs,
140
+ ) -> Mapping[str, SensorReading]:
141
+ md = kwargs.get("metadata", self.Metadata()).proto
142
+ request = GetReadingsRequest(name=self.name, extra=dict_to_struct(extra))
143
+ response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout, metadata=md)
144
+
145
+ return sensor_readings_value_to_native(response.readings)
146
+
147
+ async def do_command(
148
+ self,
149
+ command: Mapping[str, ValueTypes],
150
+ *,
151
+ timeout: Optional[float] = None,
152
+ **kwargs,
153
+ ) -> Mapping[str, ValueTypes]:
154
+ md = kwargs.get("metadata", self.Metadata()).proto
155
+ request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
156
+ response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
157
+ return struct_to_dict(response.result)
158
+
159
+ async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
160
+ md = kwargs.get("metadata", self.Metadata())
161
+ return await get_geometries(self.client, self.name, extra, timeout, md)
@@ -0,0 +1,253 @@
1
+ import abc
2
+ import sys
3
+ from dataclasses import dataclass
4
+ from typing import Any, Dict, Final, Mapping, Optional, Tuple
5
+
6
+ from typing_extensions import Self
7
+
8
+ from viam.components.component_base import ComponentBase
9
+ from viam.proto.component.movementsensor import GetAccuracyResponse, GetPropertiesResponse
10
+ from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
11
+ from viam.utils import SensorReading
12
+
13
+ from . import GeoPoint, Orientation, Vector3
14
+
15
+ if sys.version_info >= (3, 10):
16
+ from typing import TypeAlias
17
+ else:
18
+ from typing_extensions import TypeAlias
19
+
20
+
21
+ class MovementSensor(ComponentBase):
22
+ """MovementSensor reports information about the robot's direction, position and speed.
23
+
24
+ This acts as an abstract base class for any sensors that can provide data regarding the robot's direction, position, and speed.
25
+ This cannot be used on its own. If the ``__init__()`` function is overridden, it must call the ``super().__init__()`` function.
26
+
27
+ ::
28
+
29
+ from viam.components.movement_sensor import MovementSensor
30
+
31
+ For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/>`_.
32
+ """
33
+
34
+ API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
35
+ RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "movement_sensor"
36
+ )
37
+
38
+ Accuracy: "TypeAlias" = GetAccuracyResponse
39
+
40
+ @dataclass
41
+ class Properties:
42
+ linear_acceleration_supported: bool
43
+ angular_velocity_supported: bool
44
+ orientation_supported: bool
45
+ position_supported: bool
46
+ compass_heading_supported: bool
47
+ linear_velocity_supported: bool
48
+
49
+ @property
50
+ def proto(self) -> GetPropertiesResponse:
51
+ return GetPropertiesResponse(
52
+ linear_acceleration_supported=self.linear_acceleration_supported,
53
+ angular_velocity_supported=self.angular_velocity_supported,
54
+ orientation_supported=self.orientation_supported,
55
+ position_supported=self.position_supported,
56
+ compass_heading_supported=self.compass_heading_supported,
57
+ linear_velocity_supported=self.linear_velocity_supported,
58
+ )
59
+
60
+ @classmethod
61
+ def from_proto(cls, proto: GetPropertiesResponse) -> Self:
62
+ return cls(
63
+ linear_acceleration_supported=proto.linear_acceleration_supported,
64
+ angular_velocity_supported=proto.angular_velocity_supported,
65
+ orientation_supported=proto.orientation_supported,
66
+ position_supported=proto.position_supported,
67
+ compass_heading_supported=proto.compass_heading_supported,
68
+ linear_velocity_supported=proto.linear_velocity_supported,
69
+ )
70
+
71
+ @abc.abstractmethod
72
+ async def get_position(
73
+ self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
74
+ ) -> Tuple[GeoPoint, float]:
75
+ """Get the current GeoPoint (latitude, longitude) and altitude (m)
76
+
77
+ ::
78
+
79
+ my_movement_sensor = MovementSensor.from_robot(
80
+ robot=robot,
81
+ name="my_movement_sensor")
82
+
83
+ # Get the current position of the movement sensor.
84
+ position = await my_movement_sensor.get_position()
85
+
86
+ Returns:
87
+ Tuple[GeoPoint, float]: The current lat/long, along with the altitude in m
88
+
89
+ For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getposition>`_.
90
+ """
91
+ ...
92
+
93
+ @abc.abstractmethod
94
+ async def get_linear_velocity(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Vector3:
95
+ """Get the current linear velocity as a ``Vector3`` with x, y, and z axes represented in m/sec
96
+
97
+ ::
98
+
99
+ my_movement_sensor = MovementSensor.from_robot(
100
+ robot=robot, name="my_movement_sensor")
101
+
102
+ # Get the current linear velocity of the movement sensor.
103
+ lin_vel = await my_movement_sensor.get_linear_velocity()
104
+
105
+ Returns:
106
+ Vector3: The linear velocity in m/sec
107
+
108
+ For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getlinearvelocity>`_.
109
+ """
110
+ ...
111
+
112
+ @abc.abstractmethod
113
+ async def get_angular_velocity(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Vector3:
114
+ """Get the current angular velocity as a ``Vector3`` with x, y, and z axes represented in degrees/sec
115
+
116
+ ::
117
+
118
+ my_movement_sensor = MovementSensor.from_robot(
119
+ robot=robot, name="my_movement_sensor")
120
+
121
+ # Get the current angular velocity of the movement sensor.
122
+ ang_vel = await my_movement_sensor.get_angular_velocity()
123
+
124
+ # Get the y component of angular velocity.
125
+ y_ang_vel = ang_vel.y
126
+
127
+ Returns:
128
+ Vector3: The angular velocity in degrees/sec
129
+
130
+ For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getangularvelocity>`_.
131
+ """
132
+ ...
133
+
134
+ @abc.abstractmethod
135
+ async def get_linear_acceleration(
136
+ self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
137
+ ) -> Vector3:
138
+ """Get the current linear acceleration as a ``Vector3`` with x, y, and z axes represented in m/sec^2
139
+
140
+ ::
141
+
142
+ my_movement_sensor = MovementSensor.from_robot(
143
+ robot=robot, name="my_movement_sensor")
144
+
145
+ # Get the current linear acceleration of the movement sensor.
146
+ lin_accel = await my_movement_sensor.get_linear_acceleration()
147
+
148
+ # Get the x component of linear acceleration.
149
+ x_lin_accel = lin_accel.x
150
+
151
+ Returns:
152
+ Vector3: The linear acceleration in m/sec^2
153
+
154
+ For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getlinearacceleration>`_.
155
+ """
156
+ ...
157
+
158
+ @abc.abstractmethod
159
+ async def get_compass_heading(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> float:
160
+ """Get the current compass heading in degrees
161
+
162
+ ::
163
+
164
+ my_movement_sensor = MovementSensor.from_robot(
165
+ robot=robot, name="my_movement_sensor")
166
+
167
+ # Get the current compass heading of the movement sensor.
168
+ heading = await my_movement_sensor.get_compass_heading()
169
+
170
+ Returns:
171
+ float: The compass heading in degrees
172
+
173
+ For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getcompassheading>`_.
174
+ """
175
+ ...
176
+
177
+ @abc.abstractmethod
178
+ async def get_orientation(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Orientation:
179
+ """Get the current orientation
180
+
181
+ ::
182
+
183
+ my_movement_sensor = MovementSensor.from_robot(
184
+ robot=robot, name="my_movement_sensor")
185
+
186
+ # Get the current orientation vector of the movement sensor.
187
+ orientation = await my_movement_sensor.get_orientation()
188
+
189
+ Returns:
190
+ Orientation: The orientation
191
+
192
+ For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getorientation>`_.
193
+ """
194
+ ...
195
+
196
+ @abc.abstractmethod
197
+ async def get_properties(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Properties:
198
+ """Get the supported properties of this sensor
199
+
200
+ ::
201
+
202
+ my_movement_sensor = MovementSensor.from_robot(
203
+ robot=robot, name="my_movement_sensor")
204
+
205
+ # Get the supported properties of the movement sensor.
206
+ properties = await my_movement_sensor.get_properties()
207
+
208
+ Returns:
209
+ MovementSensor.Properties: The properties
210
+
211
+ For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getproperties>`_.
212
+ """
213
+ ...
214
+
215
+ @abc.abstractmethod
216
+ async def get_accuracy(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Accuracy:
217
+ """Get the accuracy of the various sensors
218
+
219
+ ::
220
+
221
+ my_movement_sensor = MovementSensor.from_robot(
222
+ robot=robot, name="my_movement_sensor")
223
+
224
+ # Get the accuracy of the movement sensor.
225
+ accuracy = await my_movement_sensor.get_accuracy()
226
+
227
+ Returns:
228
+ MovementSensor.Accuracy: The accuracies of the movement sensor
229
+
230
+ For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getaccuracy>`_.
231
+ """
232
+ ...
233
+
234
+ async def get_readings(
235
+ self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
236
+ ) -> Mapping[str, SensorReading]:
237
+ """Obtain the measurements/data specific to this sensor.
238
+ If a sensor is not configured to have a measurement or fails to read a piece of data, it will not appear in the readings dictionary.
239
+
240
+ ::
241
+
242
+ my_movement_sensor = MovementSensor.from_robot(
243
+ robot=robot, name="my_movement_sensor")
244
+
245
+ # Get the latest readings from the movement sensor.
246
+ readings = await my_movement_sensor.get_readings()
247
+
248
+ Returns:
249
+ Mapping[str, Any]: The readings for the MovementSensor. Can be of any type.
250
+
251
+ For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getreadings>`_.
252
+ """
253
+ ...