viam-sdk 0.3.0__py3-none-linux_armv6l.whl → 0.66.0__py3-none-linux_armv6l.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 (452) hide show
  1. viam/__init__.py +29 -2
  2. viam/app/_logs.py +34 -0
  3. viam/app/app_client.py +2696 -0
  4. viam/app/billing_client.py +185 -0
  5. viam/app/data_client.py +2231 -0
  6. viam/app/ml_training_client.py +249 -0
  7. viam/app/provisioning_client.py +93 -0
  8. viam/app/viam_client.py +275 -0
  9. viam/components/arm/__init__.py +3 -26
  10. viam/components/arm/arm.py +123 -8
  11. viam/components/arm/client.py +37 -24
  12. viam/components/arm/service.py +35 -32
  13. viam/components/audio_in/__init__.py +24 -0
  14. viam/components/audio_in/audio_in.py +74 -0
  15. viam/components/audio_in/client.py +76 -0
  16. viam/components/audio_in/service.py +83 -0
  17. viam/components/audio_out/__init__.py +21 -0
  18. viam/components/audio_out/audio_out.py +72 -0
  19. viam/components/audio_out/client.py +67 -0
  20. viam/components/audio_out/service.py +63 -0
  21. viam/components/base/__init__.py +6 -11
  22. viam/components/base/base.py +134 -8
  23. viam/components/base/client.py +51 -23
  24. viam/components/base/service.py +33 -30
  25. viam/components/board/__init__.py +3 -12
  26. viam/components/board/board.py +247 -91
  27. viam/components/board/client.py +149 -83
  28. viam/components/board/service.py +63 -33
  29. viam/components/button/__init__.py +10 -0
  30. viam/components/button/button.py +41 -0
  31. viam/components/button/client.py +52 -0
  32. viam/components/button/service.py +46 -0
  33. viam/components/camera/__init__.py +3 -3
  34. viam/components/camera/camera.py +62 -27
  35. viam/components/camera/client.py +59 -27
  36. viam/components/camera/service.py +42 -65
  37. viam/components/component_base.py +28 -5
  38. viam/components/encoder/__init__.py +1 -1
  39. viam/components/encoder/client.py +25 -14
  40. viam/components/encoder/encoder.py +48 -10
  41. viam/components/encoder/service.py +14 -18
  42. viam/components/gantry/__init__.py +1 -13
  43. viam/components/gantry/client.py +80 -25
  44. viam/components/gantry/gantry.py +123 -9
  45. viam/components/gantry/service.py +51 -29
  46. viam/components/generic/__init__.py +1 -1
  47. viam/components/generic/client.py +21 -8
  48. viam/components/generic/generic.py +10 -2
  49. viam/components/generic/service.py +12 -7
  50. viam/components/gripper/__init__.py +3 -13
  51. viam/components/gripper/client.py +69 -21
  52. viam/components/gripper/gripper.py +123 -3
  53. viam/components/gripper/service.py +44 -22
  54. viam/components/input/__init__.py +1 -14
  55. viam/components/input/client.py +55 -23
  56. viam/components/input/input.py +106 -3
  57. viam/components/input/service.py +16 -21
  58. viam/components/motor/__init__.py +1 -21
  59. viam/components/motor/client.py +56 -33
  60. viam/components/motor/motor.py +127 -4
  61. viam/components/motor/service.py +33 -44
  62. viam/components/movement_sensor/__init__.py +1 -1
  63. viam/components/movement_sensor/client.py +102 -45
  64. viam/components/movement_sensor/movement_sensor.py +130 -61
  65. viam/components/movement_sensor/service.py +38 -41
  66. viam/components/pose_tracker/__init__.py +1 -1
  67. viam/components/pose_tracker/client.py +18 -7
  68. viam/components/pose_tracker/pose_tracker.py +4 -2
  69. viam/components/pose_tracker/service.py +12 -10
  70. viam/components/power_sensor/__init__.py +17 -0
  71. viam/components/power_sensor/client.py +86 -0
  72. viam/components/power_sensor/power_sensor.py +104 -0
  73. viam/components/power_sensor/service.py +72 -0
  74. viam/components/sensor/__init__.py +2 -1
  75. viam/components/sensor/client.py +26 -10
  76. viam/components/sensor/sensor.py +22 -4
  77. viam/components/sensor/service.py +20 -11
  78. viam/components/servo/__init__.py +1 -13
  79. viam/components/servo/client.py +47 -21
  80. viam/components/servo/service.py +15 -22
  81. viam/components/servo/servo.py +61 -2
  82. viam/components/switch/__init__.py +10 -0
  83. viam/components/switch/client.py +83 -0
  84. viam/components/switch/service.py +72 -0
  85. viam/components/switch/switch.py +98 -0
  86. viam/errors.py +10 -0
  87. viam/gen/app/agent/v1/agent_grpc.py +29 -0
  88. viam/gen/app/agent/v1/agent_pb2.py +47 -0
  89. viam/gen/app/agent/v1/agent_pb2.pyi +280 -0
  90. viam/gen/app/cloudslam/v1/__init__.py +0 -0
  91. viam/gen/app/cloudslam/v1/cloud_slam_grpc.py +70 -0
  92. viam/gen/app/cloudslam/v1/cloud_slam_pb2.py +54 -0
  93. viam/gen/app/cloudslam/v1/cloud_slam_pb2.pyi +384 -0
  94. viam/gen/app/data/v1/data_grpc.py +197 -8
  95. viam/gen/app/data/v1/data_pb2.py +238 -99
  96. viam/gen/app/data/v1/data_pb2.pyi +1222 -259
  97. viam/gen/app/datapipelines/__init__.py +0 -0
  98. viam/gen/app/datapipelines/v1/__init__.py +0 -0
  99. viam/gen/app/datapipelines/v1/data_pipelines_grpc.py +84 -0
  100. viam/gen/app/datapipelines/v1/data_pipelines_pb2.py +57 -0
  101. viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi +387 -0
  102. viam/gen/app/dataset/__init__.py +0 -0
  103. viam/gen/app/dataset/v1/__init__.py +0 -0
  104. viam/gen/app/dataset/v1/dataset_grpc.py +68 -0
  105. viam/gen/app/dataset/v1/dataset_pb2.py +44 -0
  106. viam/gen/app/dataset/v1/dataset_pb2.pyi +214 -0
  107. viam/gen/app/datasync/v1/data_sync_grpc.py +21 -4
  108. viam/gen/app/datasync/v1/data_sync_pb2.py +62 -128
  109. viam/gen/app/datasync/v1/data_sync_pb2.pyi +156 -199
  110. viam/gen/app/mlinference/__init__.py +0 -0
  111. viam/gen/app/mlinference/v1/__init__.py +0 -0
  112. viam/gen/app/mlinference/v1/ml_inference_grpc.py +28 -0
  113. viam/gen/app/mlinference/v1/ml_inference_pb2.py +23 -0
  114. viam/gen/app/mlinference/v1/ml_inference_pb2.pyi +63 -0
  115. viam/gen/app/mltraining/v1/ml_training_grpc.py +51 -3
  116. viam/gen/app/mltraining/v1/ml_training_pb2.py +135 -58
  117. viam/gen/app/mltraining/v1/ml_training_pb2.pyi +328 -39
  118. viam/gen/app/packages/v1/packages_grpc.py +15 -1
  119. viam/gen/app/packages/v1/packages_pb2.py +44 -64
  120. viam/gen/app/packages/v1/packages_pb2.pyi +75 -85
  121. viam/gen/app/v1/app_grpc.py +644 -3
  122. viam/gen/app/v1/app_pb2.py +695 -295
  123. viam/gen/app/v1/app_pb2.pyi +4488 -635
  124. viam/gen/app/v1/billing_grpc.py +53 -11
  125. viam/gen/app/v1/billing_pb2.py +94 -39
  126. viam/gen/app/v1/billing_pb2.pyi +391 -191
  127. viam/gen/app/v1/end_user_grpc.py +59 -0
  128. viam/gen/app/v1/end_user_pb2.py +55 -0
  129. viam/gen/app/v1/end_user_pb2.pyi +181 -0
  130. viam/gen/app/v1/robot_grpc.py +16 -1
  131. viam/gen/app/v1/robot_pb2.py +122 -94
  132. viam/gen/app/v1/robot_pb2.pyi +463 -123
  133. viam/gen/common/v1/common_pb2.py +87 -58
  134. viam/gen/common/v1/common_pb2.pyi +456 -149
  135. viam/gen/component/arm/v1/arm_grpc.py +58 -2
  136. viam/gen/component/arm/v1/arm_pb2.py +68 -51
  137. viam/gen/component/arm/v1/arm_pb2.pyi +108 -42
  138. viam/gen/component/audioin/__init__.py +0 -0
  139. viam/gen/component/audioin/v1/__init__.py +0 -0
  140. viam/gen/component/audioin/v1/audioin_grpc.py +54 -0
  141. viam/gen/component/audioin/v1/audioin_pb2.py +34 -0
  142. viam/gen/component/audioin/v1/audioin_pb2.pyi +94 -0
  143. viam/gen/component/audioinput/v1/audioinput_grpc.py +25 -2
  144. viam/gen/component/audioinput/v1/audioinput_pb2.py +36 -31
  145. viam/gen/component/audioinput/v1/audioinput_pb2.pyi +22 -22
  146. viam/gen/component/audioout/__init__.py +0 -0
  147. viam/gen/component/audioout/v1/__init__.py +0 -0
  148. viam/gen/component/audioout/v1/audioout_grpc.py +54 -0
  149. viam/gen/component/audioout/v1/audioout_pb2.py +32 -0
  150. viam/gen/component/audioout/v1/audioout_pb2.pyi +47 -0
  151. viam/gen/component/base/v1/base_grpc.py +42 -2
  152. viam/gen/component/base/v1/base_pb2.py +58 -47
  153. viam/gen/component/base/v1/base_pb2.pyi +65 -30
  154. viam/gen/component/board/v1/board_grpc.py +59 -7
  155. viam/gen/component/board/v1/board_pb2.py +94 -73
  156. viam/gen/component/board/v1/board_pb2.pyi +165 -68
  157. viam/gen/component/button/__init__.py +0 -0
  158. viam/gen/component/button/v1/__init__.py +0 -0
  159. viam/gen/component/button/v1/button_grpc.py +38 -0
  160. viam/gen/component/button/v1/button_pb2.py +28 -0
  161. viam/gen/component/button/v1/button_pb2.pyi +39 -0
  162. viam/gen/component/camera/v1/camera_grpc.py +38 -2
  163. viam/gen/component/camera/v1/camera_pb2.py +60 -43
  164. viam/gen/component/camera/v1/camera_pb2.pyi +191 -37
  165. viam/gen/component/encoder/v1/encoder_grpc.py +25 -2
  166. viam/gen/component/encoder/v1/encoder_pb2.py +36 -31
  167. viam/gen/component/encoder/v1/encoder_pb2.pyi +15 -15
  168. viam/gen/component/gantry/v1/gantry_grpc.py +47 -2
  169. viam/gen/component/gantry/v1/gantry_pb2.py +56 -43
  170. viam/gen/component/gantry/v1/gantry_pb2.pyi +67 -31
  171. viam/gen/component/generic/v1/generic_grpc.py +16 -2
  172. viam/gen/component/generic/v1/generic_pb2.py +16 -11
  173. viam/gen/component/gripper/v1/gripper_grpc.py +44 -2
  174. viam/gen/component/gripper/v1/gripper_pb2.py +48 -35
  175. viam/gen/component/gripper/v1/gripper_pb2.pyi +62 -24
  176. viam/gen/component/inputcontroller/v1/input_controller_grpc.py +28 -2
  177. viam/gen/component/inputcontroller/v1/input_controller_pb2.py +46 -41
  178. viam/gen/component/inputcontroller/v1/input_controller_pb2.pyi +32 -36
  179. viam/gen/component/motor/v1/motor_grpc.py +51 -2
  180. viam/gen/component/motor/v1/motor_pb2.py +78 -67
  181. viam/gen/component/motor/v1/motor_pb2.pyi +75 -46
  182. viam/gen/component/movementsensor/v1/movementsensor_grpc.py +48 -2
  183. viam/gen/component/movementsensor/v1/movementsensor_pb2.py +70 -63
  184. viam/gen/component/movementsensor/v1/movementsensor_pb2.pyi +84 -57
  185. viam/gen/component/posetracker/v1/pose_tracker_grpc.py +19 -2
  186. viam/gen/component/posetracker/v1/pose_tracker_pb2.py +26 -21
  187. viam/gen/component/posetracker/v1/pose_tracker_pb2.pyi +9 -13
  188. viam/gen/component/powersensor/__init__.py +0 -0
  189. viam/gen/component/powersensor/v1/__init__.py +0 -0
  190. viam/gen/component/powersensor/v1/powersensor_grpc.py +62 -0
  191. viam/gen/component/powersensor/v1/powersensor_pb2.py +42 -0
  192. viam/gen/component/powersensor/v1/powersensor_pb2.pyi +124 -0
  193. viam/gen/component/sensor/v1/sensor_grpc.py +21 -5
  194. viam/gen/component/sensor/v1/sensor_pb2.py +18 -22
  195. viam/gen/component/sensor/v1/sensor_pb2.pyi +1 -69
  196. viam/gen/component/servo/v1/servo_grpc.py +28 -2
  197. viam/gen/component/servo/v1/servo_pb2.py +42 -37
  198. viam/gen/component/servo/v1/servo_pb2.pyi +22 -26
  199. viam/gen/component/switch/__init__.py +0 -0
  200. viam/gen/component/switch/v1/__init__.py +0 -0
  201. viam/gen/component/switch/v1/switch_grpc.py +54 -0
  202. viam/gen/component/switch/v1/switch_pb2.py +40 -0
  203. viam/gen/component/switch/v1/switch_pb2.pyi +116 -0
  204. viam/gen/component/testecho/v1/testecho_grpc.py +15 -0
  205. viam/gen/component/testecho/v1/testecho_pb2.py +29 -26
  206. viam/gen/component/testecho/v1/testecho_pb2.pyi +16 -20
  207. viam/gen/module/v1/module_grpc.py +18 -0
  208. viam/gen/module/v1/module_pb2.py +36 -33
  209. viam/gen/module/v1/module_pb2.pyi +39 -34
  210. viam/gen/opentelemetry/__init__.py +0 -0
  211. viam/gen/opentelemetry/proto/__init__.py +0 -0
  212. viam/gen/opentelemetry/proto/common/__init__.py +0 -0
  213. viam/gen/opentelemetry/proto/common/v1/__init__.py +0 -0
  214. viam/gen/opentelemetry/proto/common/v1/common_grpc.py +0 -0
  215. viam/gen/opentelemetry/proto/common/v1/common_pb2.py +27 -0
  216. viam/gen/opentelemetry/proto/common/v1/common_pb2.pyi +208 -0
  217. viam/gen/opentelemetry/proto/resource/__init__.py +0 -0
  218. viam/gen/opentelemetry/proto/resource/v1/__init__.py +0 -0
  219. viam/gen/opentelemetry/proto/resource/v1/resource_grpc.py +0 -0
  220. viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py +18 -0
  221. viam/gen/opentelemetry/proto/resource/v1/resource_pb2.pyi +59 -0
  222. viam/gen/opentelemetry/proto/trace/__init__.py +0 -0
  223. viam/gen/opentelemetry/proto/trace/v1/__init__.py +0 -0
  224. viam/gen/opentelemetry/proto/trace/v1/trace_grpc.py +0 -0
  225. viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py +37 -0
  226. viam/gen/opentelemetry/proto/trace/v1/trace_pb2.pyi +402 -0
  227. viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py +12 -0
  228. viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py +25 -22
  229. viam/gen/proto/rpc/examples/echo/v1/echo_pb2.pyi +13 -17
  230. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_grpc.py +12 -0
  231. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py +23 -20
  232. viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.pyi +13 -17
  233. viam/gen/proto/rpc/v1/auth_grpc.py +11 -0
  234. viam/gen/proto/rpc/v1/auth_pb2.py +27 -24
  235. viam/gen/proto/rpc/v1/auth_pb2.pyi +12 -16
  236. viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py +35 -32
  237. viam/gen/proto/rpc/webrtc/v1/grpc_pb2.pyi +37 -41
  238. viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py +15 -0
  239. viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py +62 -57
  240. viam/gen/proto/rpc/webrtc/v1/signaling_pb2.pyi +78 -69
  241. viam/gen/provisioning/__init__.py +0 -0
  242. viam/gen/provisioning/v1/__init__.py +0 -0
  243. viam/gen/provisioning/v1/provisioning_grpc.py +59 -0
  244. viam/gen/provisioning/v1/provisioning_pb2.py +45 -0
  245. viam/gen/provisioning/v1/provisioning_pb2.pyi +229 -0
  246. viam/gen/robot/v1/robot_grpc.py +144 -15
  247. viam/gen/robot/v1/robot_pb2.py +193 -119
  248. viam/gen/robot/v1/robot_pb2.pyi +565 -137
  249. viam/gen/service/datamanager/v1/data_manager_grpc.py +20 -2
  250. viam/gen/service/datamanager/v1/data_manager_pb2.py +27 -17
  251. viam/gen/service/datamanager/v1/data_manager_pb2.pyi +52 -10
  252. viam/gen/service/discovery/__init__.py +0 -0
  253. viam/gen/service/discovery/v1/__init__.py +0 -0
  254. viam/gen/service/discovery/v1/discovery_grpc.py +39 -0
  255. viam/gen/service/discovery/v1/discovery_pb2.py +29 -0
  256. viam/gen/service/discovery/v1/discovery_pb2.pyi +51 -0
  257. viam/gen/service/generic/__init__.py +0 -0
  258. viam/gen/service/generic/v1/__init__.py +0 -0
  259. viam/gen/service/generic/v1/generic_grpc.py +29 -0
  260. viam/gen/service/generic/v1/generic_pb2.py +21 -0
  261. viam/gen/service/generic/v1/generic_pb2.pyi +6 -0
  262. viam/gen/service/mlmodel/v1/mlmodel_grpc.py +9 -0
  263. viam/gen/service/mlmodel/v1/mlmodel_pb2.py +76 -29
  264. viam/gen/service/mlmodel/v1/mlmodel_pb2.pyi +307 -28
  265. viam/gen/service/motion/v1/motion_grpc.py +42 -4
  266. viam/gen/service/motion/v1/motion_pb2.py +119 -51
  267. viam/gen/service/motion/v1/motion_pb2.pyi +595 -120
  268. viam/gen/service/navigation/v1/navigation_grpc.py +49 -1
  269. viam/gen/service/navigation/v1/navigation_pb2.py +76 -51
  270. viam/gen/service/navigation/v1/navigation_pb2.pyi +188 -33
  271. viam/gen/service/sensors/v1/sensors_grpc.py +12 -0
  272. viam/gen/service/sensors/v1/sensors_pb2.py +60 -29
  273. viam/gen/service/sensors/v1/sensors_pb2.pyi +18 -21
  274. viam/gen/service/shell/v1/shell_grpc.py +27 -1
  275. viam/gen/service/shell/v1/shell_pb2.py +37 -15
  276. viam/gen/service/shell/v1/shell_pb2.pyi +260 -7
  277. viam/gen/service/slam/v1/slam_grpc.py +24 -2
  278. viam/gen/service/slam/v1/slam_pb2.py +44 -30
  279. viam/gen/service/slam/v1/slam_pb2.pyi +128 -27
  280. viam/gen/service/video/__init__.py +0 -0
  281. viam/gen/service/video/v1/__init__.py +0 -0
  282. viam/gen/service/video/v1/video_grpc.py +39 -0
  283. viam/gen/service/video/v1/video_pb2.py +29 -0
  284. viam/gen/service/video/v1/video_pb2.pyi +72 -0
  285. viam/gen/service/vision/v1/vision_grpc.py +39 -1
  286. viam/gen/service/vision/v1/vision_pb2.py +61 -45
  287. viam/gen/service/vision/v1/vision_pb2.pyi +180 -41
  288. viam/gen/service/worldstatestore/__init__.py +0 -0
  289. viam/gen/service/worldstatestore/v1/__init__.py +0 -0
  290. viam/gen/service/worldstatestore/v1/world_state_store_grpc.py +55 -0
  291. viam/gen/service/worldstatestore/v1/world_state_store_pb2.py +39 -0
  292. viam/gen/service/worldstatestore/v1/world_state_store_pb2.pyi +171 -0
  293. viam/gen/stream/__init__.py +0 -0
  294. viam/gen/stream/v1/__init__.py +0 -0
  295. viam/gen/stream/v1/stream_grpc.py +59 -0
  296. viam/gen/stream/v1/stream_pb2.py +39 -0
  297. viam/gen/stream/v1/stream_pb2.pyi +161 -0
  298. viam/gen/tagger/v1/tagger_pb2.py +9 -8
  299. viam/logging.py +160 -17
  300. viam/media/__init__.py +0 -9
  301. viam/media/audio.py +22 -10
  302. viam/media/utils/__init__.py +0 -0
  303. viam/media/utils/pil/__init__.py +55 -0
  304. viam/media/{viam_rgba_plugin.py → utils/pil/viam_rgba_plugin.py} +10 -16
  305. viam/media/viam_rgba.py +10 -0
  306. viam/media/video.py +197 -73
  307. viam/module/module.py +191 -44
  308. viam/module/resource_data_consumer.py +41 -0
  309. viam/module/service.py +9 -1
  310. viam/module/types.py +4 -5
  311. viam/operations.py +4 -3
  312. viam/proto/app/__init__.py +361 -5
  313. viam/proto/app/agent/__init__.py +28 -0
  314. viam/proto/app/billing.py +51 -27
  315. viam/proto/app/cloudslam/__init__.py +48 -0
  316. viam/proto/app/data/__init__.py +103 -17
  317. viam/proto/app/datapipelines/__init__.py +56 -0
  318. viam/proto/app/dataset/__init__.py +40 -0
  319. viam/proto/app/datasync/__init__.py +11 -5
  320. viam/proto/app/end_user.py +34 -0
  321. viam/proto/app/mlinference/__init__.py +15 -0
  322. viam/proto/app/mltraining/__init__.py +25 -1
  323. viam/proto/app/packages/__init__.py +3 -3
  324. viam/proto/app/robot.py +19 -1
  325. viam/proto/common/__init__.py +35 -8
  326. viam/proto/component/arm/__init__.py +9 -1
  327. viam/proto/component/audioin/__init__.py +16 -0
  328. viam/proto/component/audioinput/__init__.py +3 -1
  329. viam/proto/component/audioout/__init__.py +15 -0
  330. viam/proto/component/base/__init__.py +7 -1
  331. viam/proto/component/board/__init__.py +13 -5
  332. viam/proto/component/button/__init__.py +15 -0
  333. viam/proto/component/camera/__init__.py +9 -1
  334. viam/proto/component/encoder/__init__.py +3 -1
  335. viam/proto/component/gantry/__init__.py +7 -1
  336. viam/proto/component/generic/__init__.py +3 -1
  337. viam/proto/component/gripper/__init__.py +7 -1
  338. viam/proto/component/inputcontroller/__init__.py +7 -1
  339. viam/proto/component/motor/__init__.py +7 -1
  340. viam/proto/component/movementsensor/__init__.py +7 -1
  341. viam/proto/component/posetracker/__init__.py +7 -1
  342. viam/proto/component/powersensor/__init__.py +30 -0
  343. viam/proto/component/sensor/__init__.py +3 -4
  344. viam/proto/component/servo/__init__.py +3 -1
  345. viam/proto/component/switch/__init__.py +26 -0
  346. viam/proto/component/testecho/__init__.py +3 -1
  347. viam/proto/module/__init__.py +3 -1
  348. viam/proto/opentelemetry/__init__.py +0 -0
  349. viam/proto/opentelemetry/proto/__init__.py +0 -0
  350. viam/proto/opentelemetry/proto/common/__init__.py +15 -0
  351. viam/proto/opentelemetry/proto/resource/__init__.py +10 -0
  352. viam/proto/opentelemetry/proto/trace/__init__.py +15 -0
  353. viam/proto/provisioning/__init__.py +42 -0
  354. viam/proto/robot/__init__.py +57 -9
  355. viam/proto/rpc/auth.py +11 -1
  356. viam/proto/rpc/examples/echo/__init__.py +3 -1
  357. viam/proto/rpc/examples/echoresource/__init__.py +7 -1
  358. viam/proto/rpc/webrtc/grpc.py +3 -1
  359. viam/proto/rpc/webrtc/signaling.py +5 -1
  360. viam/proto/service/datamanager/__init__.py +15 -2
  361. viam/proto/service/discovery/__init__.py +15 -0
  362. viam/proto/service/generic/__init__.py +12 -0
  363. viam/proto/service/mlmodel/__init__.py +27 -1
  364. viam/proto/service/motion/__init__.py +35 -5
  365. viam/proto/service/navigation/__init__.py +19 -1
  366. viam/proto/service/sensors/__init__.py +3 -1
  367. viam/proto/service/shell/__init__.py +25 -2
  368. viam/proto/service/slam/__init__.py +13 -1
  369. viam/proto/service/video/__init__.py +15 -0
  370. viam/proto/service/vision/__init__.py +11 -1
  371. viam/proto/service/worldstatestore/__init__.py +32 -0
  372. viam/proto/stream/__init__.py +36 -0
  373. viam/py.typed +0 -0
  374. viam/resource/base.py +45 -8
  375. viam/resource/easy_resource.py +149 -0
  376. viam/resource/manager.py +35 -14
  377. viam/resource/registry.py +40 -52
  378. viam/resource/rpc_client_base.py +33 -1
  379. viam/resource/rpc_service_base.py +15 -8
  380. viam/resource/types.py +39 -26
  381. viam/robot/client.py +458 -91
  382. viam/robot/service.py +13 -107
  383. viam/rpc/dial.py +133 -15
  384. viam/rpc/libviam_rust_utils.so +0 -0
  385. viam/rpc/server.py +59 -15
  386. viam/rpc/types.py +2 -4
  387. viam/services/discovery/__init__.py +12 -0
  388. viam/services/discovery/client.py +55 -0
  389. viam/services/discovery/discovery.py +52 -0
  390. viam/services/discovery/service.py +43 -0
  391. viam/services/generic/__init__.py +18 -0
  392. viam/services/generic/client.py +58 -0
  393. viam/services/generic/generic.py +58 -0
  394. viam/services/generic/service.py +29 -0
  395. viam/services/mlmodel/__init__.py +15 -1
  396. viam/services/mlmodel/client.py +20 -15
  397. viam/services/mlmodel/mlmodel.py +44 -7
  398. viam/services/mlmodel/service.py +9 -13
  399. viam/services/mlmodel/utils.py +101 -0
  400. viam/services/motion/__init__.py +15 -3
  401. viam/services/motion/client.py +109 -150
  402. viam/services/motion/motion.py +380 -0
  403. viam/services/motion/service.py +132 -0
  404. viam/services/navigation/__init__.py +11 -0
  405. viam/services/navigation/client.py +99 -0
  406. viam/services/navigation/navigation.py +250 -0
  407. viam/services/navigation/service.py +137 -0
  408. viam/services/service_base.py +43 -4
  409. viam/services/service_client_base.py +4 -4
  410. viam/services/slam/__init__.py +4 -1
  411. viam/services/slam/client.py +21 -11
  412. viam/services/slam/service.py +16 -19
  413. viam/services/slam/slam.py +66 -5
  414. viam/services/vision/__init__.py +8 -0
  415. viam/services/vision/client.py +115 -111
  416. viam/services/vision/service.py +143 -0
  417. viam/services/vision/vision.py +317 -0
  418. viam/services/worldstatestore/__init__.py +18 -0
  419. viam/services/worldstatestore/client.py +94 -0
  420. viam/services/worldstatestore/service.py +55 -0
  421. viam/services/worldstatestore/worldstatestore.py +90 -0
  422. viam/sessions_client.py +254 -0
  423. viam/streams.py +44 -0
  424. viam/utils.py +143 -15
  425. viam/version_metadata.py +4 -0
  426. viam_sdk-0.66.0.dist-info/METADATA +157 -0
  427. viam_sdk-0.66.0.dist-info/RECORD +531 -0
  428. {viam_sdk-0.3.0.dist-info → viam_sdk-0.66.0.dist-info}/WHEEL +1 -1
  429. viam/components/audio_input/__init__.py +0 -18
  430. viam/components/audio_input/audio_input.py +0 -79
  431. viam/components/audio_input/client.py +0 -60
  432. viam/components/audio_input/service.py +0 -118
  433. viam/components/types.py +0 -5
  434. viam/gen/app/model/v1/model_grpc.py +0 -39
  435. viam/gen/app/model/v1/model_pb2.py +0 -71
  436. viam/gen/app/model/v1/model_pb2.pyi +0 -285
  437. viam/gen/proto/rpc/examples/fileupload/v1/fileupload_grpc.py +0 -21
  438. viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.py +0 -18
  439. viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.pyi +0 -49
  440. viam/media/media.py +0 -53
  441. viam/proto/app/model/__init__.py +0 -40
  442. viam/proto/rpc/examples/fileupload/__init__.py +0 -13
  443. viam/services/sensors/__init__.py +0 -5
  444. viam/services/sensors/client.py +0 -63
  445. viam_sdk-0.3.0.dist-info/LICENSE +0 -202
  446. viam_sdk-0.3.0.dist-info/METADATA +0 -122
  447. viam_sdk-0.3.0.dist-info/RECORD +0 -372
  448. /viam/{gen/app/model → app}/__init__.py +0 -0
  449. /viam/gen/app/{model/v1 → agent}/__init__.py +0 -0
  450. /viam/gen/{proto/rpc/examples/fileupload → app/agent/v1}/__init__.py +0 -0
  451. /viam/gen/{proto/rpc/examples/fileupload/v1 → app/cloudslam}/__init__.py +0 -0
  452. /LICENSE → /viam_sdk-0.66.0.dist-info/licenses/LICENSE +0 -0
@@ -0,0 +1,83 @@
1
+ from grpclib.server import Stream
2
+ from h2.exceptions import StreamClosedError
3
+
4
+ from viam.logging import getLogger
5
+ from viam.proto.common import (
6
+ DoCommandRequest,
7
+ DoCommandResponse,
8
+ GetGeometriesRequest,
9
+ GetGeometriesResponse,
10
+ GetPropertiesRequest,
11
+ GetPropertiesResponse,
12
+ )
13
+ from viam.proto.component.audioin import AudioInServiceBase, GetAudioRequest, GetAudioResponse
14
+ from viam.resource.rpc_service_base import ResourceRPCServiceBase
15
+ from viam.utils import dict_to_struct, struct_to_dict
16
+
17
+ from .audio_in import AudioIn
18
+
19
+ LOGGER = getLogger(__name__)
20
+
21
+
22
+ class AudioInRPCService(AudioInServiceBase, ResourceRPCServiceBase[AudioIn]):
23
+ """
24
+ gRPC Service for a generic audio in.
25
+ """
26
+
27
+ RESOURCE_TYPE = AudioIn
28
+
29
+ async def GetAudio(self, stream: Stream[GetAudioRequest, GetAudioResponse]) -> None:
30
+ request = await stream.recv_message()
31
+ assert request is not None
32
+ name = request.name
33
+ audio_in = self.get_resource(name)
34
+ audio_stream = await audio_in.get_audio(
35
+ codec=request.codec,
36
+ duration_seconds=request.duration_seconds,
37
+ previous_timestamp_ns=request.previous_timestamp_nanoseconds,
38
+ metadata=stream.metadata,
39
+ )
40
+ async for response in audio_stream:
41
+ try:
42
+ response.request_id = request.request_id
43
+ await stream.send_message(response)
44
+ except StreamClosedError:
45
+ return
46
+ except Exception as e:
47
+ LOGGER.error(e)
48
+ return
49
+
50
+ async def GetProperties(self, stream: Stream[GetPropertiesRequest, GetPropertiesResponse]) -> None:
51
+ request = await stream.recv_message()
52
+ assert request is not None
53
+ name = request.name
54
+ audio_in = self.get_resource(name)
55
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
56
+ properties = await audio_in.get_properties(
57
+ timeout=timeout,
58
+ metadata=stream.metadata,
59
+ )
60
+ await stream.send_message(properties)
61
+
62
+ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
63
+ request = await stream.recv_message()
64
+ assert request is not None
65
+ name = request.name
66
+ audio_in = self.get_resource(name)
67
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
68
+ result = await audio_in.do_command(
69
+ command=struct_to_dict(request.command),
70
+ timeout=timeout,
71
+ metadata=stream.metadata,
72
+ )
73
+ response = DoCommandResponse(result=dict_to_struct(result))
74
+ await stream.send_message(response)
75
+
76
+ async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
77
+ request = await stream.recv_message()
78
+ assert request is not None
79
+ arm = self.get_resource(request.name)
80
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
81
+ geometries = await arm.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
82
+ response = GetGeometriesResponse(geometries=geometries)
83
+ await stream.send_message(response)
@@ -0,0 +1,21 @@
1
+ from viam.media.audio import AudioCodec
2
+ from viam.proto.common import AudioInfo
3
+ from viam.resource.registry import Registry, ResourceRegistration
4
+
5
+ from .audio_out import AudioOut
6
+ from .client import AudioOutClient
7
+ from .service import AudioOutRPCService
8
+
9
+ __all__ = [
10
+ "AudioOut",
11
+ "AudioInfo",
12
+ "AudioCodec",
13
+ ]
14
+
15
+ Registry.register_api(
16
+ ResourceRegistration(
17
+ AudioOut,
18
+ AudioOutRPCService,
19
+ lambda name, channel: AudioOutClient(name, channel),
20
+ )
21
+ )
@@ -0,0 +1,72 @@
1
+ import abc
2
+ import sys
3
+ from typing import Any, Dict, Final, Optional
4
+
5
+ from viam.proto.common import GetPropertiesResponse
6
+ from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
7
+
8
+ from ..component_base import ComponentBase
9
+ from . import AudioInfo
10
+
11
+ if sys.version_info >= (3, 10):
12
+ from typing import TypeAlias
13
+ else:
14
+ from typing_extensions import TypeAlias
15
+
16
+
17
+ class AudioOut(ComponentBase):
18
+ """AudioOut represents a component that can play audio.
19
+
20
+ This acts as an abstract base class for any drivers representing specific
21
+ audio output implementations. This cannot be used on its own. If the ``__init__()`` function is
22
+ overridden, it must call the ``super().__init__()`` function.
23
+ """
24
+
25
+ API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
26
+ RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "audio_out"
27
+ )
28
+
29
+ Properties: "TypeAlias" = GetPropertiesResponse
30
+
31
+ @abc.abstractmethod
32
+ async def play(
33
+ self,
34
+ data: bytes,
35
+ info: Optional[AudioInfo] = None,
36
+ *,
37
+ extra: Optional[Dict[str, Any]] = None,
38
+ timeout: Optional[float] = None,
39
+ **kwargs,
40
+ ) -> None:
41
+ """
42
+ Play the given audio data.
43
+
44
+ ::
45
+
46
+ my_audio_out = AudioOut.from_robot(robot=machine, name="my_audio_out")
47
+
48
+ # With audio info
49
+ audio_info = AudioInfo(codec=AudioCodec.PCM16, sample_rate_hz=44100, num_channels=2)
50
+ await my_audio_out.play(audio_data, audio_info)
51
+
52
+ # Without audio info (when codec encodes information within audio_data)
53
+ await my_audio_out.play(audio_data)
54
+
55
+ Args:
56
+ data: audio bytes to play
57
+ info: (optional) information about the audio data such as codec, sample rate, and channel count
58
+ """
59
+
60
+ @abc.abstractmethod
61
+ async def get_properties(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Properties:
62
+ """
63
+ Get the audio output device's properties.
64
+
65
+ ::
66
+
67
+ my_audio_out = AudioOut.from_robot(robot=machine, name="my_audio_out")
68
+ properties = await my_audio_out.get_properties()
69
+
70
+ Returns:
71
+ Properties: The properties of the audio output device
72
+ """
@@ -0,0 +1,67 @@
1
+ from typing import Any, Dict, List, Mapping, Optional
2
+
3
+ from grpclib.client import Channel
4
+
5
+ from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetPropertiesRequest, GetPropertiesResponse
6
+ from viam.proto.component.audioout import AudioOutServiceStub, PlayRequest
7
+ from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
8
+ from viam.utils import ValueTypes, dict_to_struct, get_geometries, struct_to_dict
9
+
10
+ from .audio_out import AudioInfo, AudioOut
11
+
12
+
13
+ class AudioOutClient(AudioOut, ReconfigurableResourceRPCClientBase):
14
+ """gRPC client for AudioOut component."""
15
+
16
+ def __init__(self, name: str, channel: Channel) -> None:
17
+ self.channel = channel
18
+ self.client = AudioOutServiceStub(channel)
19
+ super().__init__(name)
20
+
21
+ async def play(
22
+ self,
23
+ data: bytes,
24
+ info: Optional[AudioInfo] = None,
25
+ *,
26
+ extra: Optional[Dict[str, Any]] = None,
27
+ timeout: Optional[float] = None,
28
+ **kwargs,
29
+ ) -> None:
30
+ if extra is None:
31
+ extra = {}
32
+
33
+ md = kwargs.get("metadata", self.Metadata()).proto
34
+ request = PlayRequest(
35
+ name=self.name,
36
+ audio_data=data,
37
+ audio_info=info,
38
+ extra=dict_to_struct(extra),
39
+ )
40
+ await self.client.Play(request, timeout=timeout, metadata=md)
41
+
42
+ async def get_properties(
43
+ self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
44
+ ) -> AudioOut.Properties:
45
+ if extra is None:
46
+ extra = {}
47
+
48
+ md = kwargs.get("metadata", self.Metadata()).proto
49
+ request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra))
50
+ response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md)
51
+ return response
52
+
53
+ async def do_command(
54
+ self,
55
+ command: Mapping[str, ValueTypes],
56
+ *,
57
+ timeout: Optional[float] = None,
58
+ **kwargs,
59
+ ) -> Mapping[str, ValueTypes]:
60
+ md = kwargs.get("metadata", self.Metadata()).proto
61
+ request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
62
+ response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
63
+ return struct_to_dict(response.result)
64
+
65
+ async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
66
+ md = kwargs.get("metadata", self.Metadata())
67
+ return await get_geometries(self.client, self.name, extra, timeout, md)
@@ -0,0 +1,63 @@
1
+ from grpclib.server import Stream
2
+
3
+ from viam.proto.common import (
4
+ DoCommandRequest,
5
+ DoCommandResponse,
6
+ GetGeometriesRequest,
7
+ GetGeometriesResponse,
8
+ GetPropertiesRequest,
9
+ GetPropertiesResponse,
10
+ )
11
+ from viam.proto.component.audioout import (
12
+ AudioOutServiceBase,
13
+ PlayRequest,
14
+ PlayResponse,
15
+ )
16
+ from viam.resource.rpc_service_base import ResourceRPCServiceBase
17
+ from viam.utils import dict_to_struct, struct_to_dict
18
+
19
+ from .audio_out import AudioOut
20
+
21
+
22
+ class AudioOutRPCService(AudioOutServiceBase, ResourceRPCServiceBase[AudioOut]):
23
+ """gRPC service for AudioOut component."""
24
+
25
+ RESOURCE_TYPE = AudioOut
26
+
27
+ async def Play(self, stream: Stream[PlayRequest, PlayResponse]) -> None:
28
+ request = await stream.recv_message()
29
+ assert request is not None
30
+ name = request.name
31
+ audio_out = self.get_resource(name)
32
+ # Check if audio_info was provided in the request
33
+ audio_info = request.audio_info if request.HasField("audio_info") else None
34
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
35
+ await audio_out.play(request.audio_data, audio_info, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
36
+ await stream.send_message(PlayResponse())
37
+
38
+ async def GetProperties(self, stream: Stream[GetPropertiesRequest, GetPropertiesResponse]) -> None:
39
+ request = await stream.recv_message()
40
+ assert request is not None
41
+ name = request.name
42
+ audio_out = self.get_resource(name)
43
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
44
+ properties = await audio_out.get_properties(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
45
+ await stream.send_message(properties)
46
+
47
+ async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
48
+ request = await stream.recv_message()
49
+ assert request is not None
50
+ audio_out = self.get_resource(request.name)
51
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
52
+ result = await audio_out.do_command(command=struct_to_dict(request.command), timeout=timeout, metadata=stream.metadata)
53
+ response = DoCommandResponse(result=dict_to_struct(result))
54
+ await stream.send_message(response)
55
+
56
+ async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
57
+ request = await stream.recv_message()
58
+ assert request is not None
59
+ audio_out = self.get_resource(request.name)
60
+ timeout = stream.deadline.time_remaining() if stream.deadline else None
61
+ geometries = await audio_out.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
62
+ response = GetGeometriesResponse(geometries=geometries)
63
+ await stream.send_message(response)
@@ -1,18 +1,13 @@
1
- from viam.proto.common import ActuatorStatus, Vector3
2
- from viam.proto.robot import Status
1
+ from viam.proto.common import Vector3
3
2
  from viam.resource.registry import Registry, ResourceRegistration
4
- from viam.utils import message_to_struct
5
3
 
6
4
  from .base import Base
7
5
  from .client import BaseClient
8
6
  from .service import BaseRPCService
9
7
 
10
- __all__ = ["Base", "Vector3"]
8
+ __all__ = [
9
+ "Base",
10
+ "Vector3",
11
+ ]
11
12
 
12
-
13
- async def create_status(component: Base) -> Status:
14
- s = ActuatorStatus(is_moving=await component.is_moving())
15
- return Status(name=Base.get_resource_name(component.name), status=message_to_struct(s))
16
-
17
-
18
- Registry.register_subtype(ResourceRegistration(Base, BaseRPCService, lambda name, channel: BaseClient(name, channel), create_status))
13
+ Registry.register_api(ResourceRegistration(Base, BaseRPCService, lambda name, channel: BaseClient(name, channel)))
@@ -1,7 +1,8 @@
1
1
  import abc
2
+ from dataclasses import dataclass
2
3
  from typing import Any, Dict, Final, Optional
3
4
 
4
- from viam.resource.types import RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, Subtype
5
+ from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
5
6
 
6
7
  from ..component_base import ComponentBase
7
8
  from . import Vector3
@@ -14,9 +15,23 @@ class Base(ComponentBase):
14
15
  This acts as an abstract base class for any drivers representing specific
15
16
  base implementations. This cannot be used on its own. If the ``__init__()`` function is
16
17
  overridden, it must call the ``super().__init__()`` function.
18
+
19
+ ::
20
+
21
+ from viam.components.base import Base
22
+
23
+ For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/>`_.
17
24
  """
18
25
 
19
- SUBTYPE: Final = Subtype(RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "base")
26
+ API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
27
+ RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "base"
28
+ )
29
+
30
+ @dataclass
31
+ class Properties:
32
+ width_meters: float
33
+ turning_radius_meters: float
34
+ wheel_circumference_meters: float
20
35
 
21
36
  @abc.abstractmethod
22
37
  async def move_straight(
@@ -34,11 +49,23 @@ class Base(ComponentBase):
34
49
  When ``distance`` or ``velocity`` is 0, the base will stop.
35
50
  This method blocks until completed or cancelled.
36
51
 
52
+ ::
53
+
54
+ my_base = Base.from_robot(robot=machine, name="my_base")
55
+
56
+ # Move the base 40 mm at a velocity of 90 mm/s, forward.
57
+ await my_base.move_straight(distance=40, velocity=90)
58
+
59
+ # Move the base 40 mm at a velocity of -90 mm/s, backward.
60
+ await my_base.move_straight(distance=40, velocity=-90)
61
+
37
62
  Args:
38
63
  distance (int): The distance (in millimeters) to move.
39
64
  Negative implies backwards.
40
65
  velocity (float): The velocity (in millimeters per second) to move.
41
66
  Negative implies backwards.
67
+
68
+ For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#movestraight>`_.
42
69
  """
43
70
  ...
44
71
 
@@ -58,11 +85,20 @@ class Base(ComponentBase):
58
85
  When ``velocity`` is 0, the base will stop.
59
86
  This method blocks until completed or cancelled.
60
87
 
88
+ ::
89
+
90
+ my_base = Base.from_robot(robot=machine, name="my_base")
91
+
92
+ # Spin the base 10 degrees at an angular velocity of 15 deg/sec.
93
+ await my_base.spin(angle=10, velocity=15)
94
+
61
95
  Args:
62
96
  angle (float): The angle (in degrees) to spin.
63
- Negative implies backwards.
64
- velocity (float): The angular velocity (in degrees per second).
65
- to spin. Negative implies backwards.
97
+ velocity (float): The angular velocity (in degrees per second)
98
+ to spin.
99
+ Given a positive angle and a positive velocity, the base will turn to the left.
100
+
101
+ For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#spin>`_.
66
102
  """
67
103
  ...
68
104
 
@@ -77,17 +113,47 @@ class Base(ComponentBase):
77
113
  **kwargs,
78
114
  ):
79
115
  """Set the linear and angular velocity of the Base
80
- When ``linear`` is 0, the the base will spin.
81
- When ``angular`` is 0, the the base will move in a straight line.
116
+ When ``linear`` is 0, the base will spin.
117
+ When ``angular`` is 0, the base will move in a straight line.
82
118
  When both ``linear`` and ``angular`` are 0, the base will stop.
83
119
  When ``linear`` and ``angular`` are both nonzero, the base will move in an arc,
84
120
  with a tighter radius if angular power is greater than linear power.
85
121
 
122
+ ::
123
+
124
+ my_base = Base.from_robot(robot=machine, name="my_base")
125
+
126
+ # Make your wheeled base move forward. Set linear power to 75%.
127
+ print("move forward")
128
+ await my_base.set_power(
129
+ linear=Vector3(x=0, y=.75, z=0),
130
+ angular=Vector3(x=0, y=0, z=0))
131
+
132
+ # Make your wheeled base move backward. Set linear power to -100%.
133
+ print("move backward")
134
+ await my_base.set_power(
135
+ linear=Vector3(x=0, y=-1.0, z=0),
136
+ angular=Vector3(x=0, y=0, z=0))
137
+
138
+ # Make your wheeled base spin left. Set angular power to 100%.
139
+ print("spin left")
140
+ await my_base.set_power(
141
+ linear=Vector3(x=0, y=0, z=0),
142
+ angular=Vector3(x=0, y=0, z=1))
143
+
144
+ # Make your wheeled base spin right. Set angular power to -75%.
145
+ print("spin right")
146
+ await my_base.set_power(
147
+ linear=Vector3(x=0, y=0, z=0),
148
+ angular=Vector3(x=0, y=0, z=-.75))
149
+
86
150
  Args:
87
151
  linear (Vector3): The linear component. Only the Y component is used
88
- for wheeled base. Negative implies backwards.
152
+ for wheeled base. Positive implies forwards.
89
153
  angular (Vector3): The angular component. Only the Z component is used
90
154
  for wheeled base. Positive turns left; negative turns right.
155
+
156
+ For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#setpower>`_.
91
157
  """
92
158
  ...
93
159
 
@@ -104,10 +170,20 @@ class Base(ComponentBase):
104
170
  """
105
171
  Set the linear and angular velocities of the base.
106
172
 
173
+ ::
174
+
175
+ my_base = Base.from_robot(robot=machine, name="my_base")
176
+
177
+ # Set the linear velocity to 50 mm/sec and the angular velocity to
178
+ # 15 degree/sec.
179
+ await my_base.set_velocity(
180
+ linear=Vector3(x=0, y=50, z=0), angular=Vector3(x=0, y=0, z=15))
107
181
 
108
182
  Args:
109
183
  linear (Vector3): Velocity in mm/sec
110
184
  angular (Vector3): Velocity in deg/sec
185
+
186
+ For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#setvelocity>`_.
111
187
  """
112
188
 
113
189
  @abc.abstractmethod
@@ -120,6 +196,18 @@ class Base(ComponentBase):
120
196
  ):
121
197
  """
122
198
  Stop the base.
199
+
200
+ ::
201
+
202
+ my_base = Base.from_robot(robot=machine, name="my_base")
203
+
204
+ # Move the base forward 10 mm at a velocity of 50 mm/s.
205
+ await my_base.move_straight(distance=10, velocity=50)
206
+
207
+ # Stop the base.
208
+ await my_base.stop()
209
+
210
+ For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#stop>`_.
123
211
  """
124
212
  ...
125
213
 
@@ -128,7 +216,45 @@ class Base(ComponentBase):
128
216
  """
129
217
  Get if the base is currently moving.
130
218
 
219
+ ::
220
+
221
+ my_base = Base.from_robot(robot=machine, name="my_base")
222
+
223
+ # Check whether the base is currently moving.
224
+ moving = await my_base.is_moving()
225
+ print('Moving: ', moving)
226
+
131
227
  Returns:
132
228
  bool: Whether the base is moving.
229
+
230
+ For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#ismoving>`_.
231
+ """
232
+ ...
233
+
234
+ @abc.abstractmethod
235
+ async def get_properties(self, *, timeout: Optional[float] = None, **kwargs) -> Properties:
236
+ """
237
+ Get the base width and turning radius
238
+
239
+ ::
240
+
241
+ my_base = Base.from_robot(robot=machine, name="my_base")
242
+
243
+ # Get the width and turning radius of the base
244
+ properties = await my_base.get_properties()
245
+
246
+ # Get the width
247
+ print(f"Width of base: {properties.width_meters}")
248
+
249
+ # Get the turning radius
250
+ print(f"Turning radius of base: {properties.turning_radius_meters}")
251
+
252
+ # Get the wheel circumference
253
+ print(f"Wheel circumference of base: {properties.wheel_circumference_meters}")
254
+
255
+ Returns:
256
+ Properties: The properties of the base
257
+
258
+ For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#getproperties>`_.
133
259
  """
134
260
  ...