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.
- viam/__init__.py +29 -2
- viam/app/_logs.py +34 -0
- viam/app/app_client.py +2696 -0
- viam/app/billing_client.py +185 -0
- viam/app/data_client.py +2231 -0
- viam/app/ml_training_client.py +249 -0
- viam/app/provisioning_client.py +93 -0
- viam/app/viam_client.py +275 -0
- viam/components/arm/__init__.py +3 -26
- viam/components/arm/arm.py +123 -8
- viam/components/arm/client.py +37 -24
- viam/components/arm/service.py +35 -32
- viam/components/audio_in/__init__.py +24 -0
- viam/components/audio_in/audio_in.py +74 -0
- viam/components/audio_in/client.py +76 -0
- viam/components/audio_in/service.py +83 -0
- viam/components/audio_out/__init__.py +21 -0
- viam/components/audio_out/audio_out.py +72 -0
- viam/components/audio_out/client.py +67 -0
- viam/components/audio_out/service.py +63 -0
- viam/components/base/__init__.py +6 -11
- viam/components/base/base.py +134 -8
- viam/components/base/client.py +51 -23
- viam/components/base/service.py +33 -30
- viam/components/board/__init__.py +3 -12
- viam/components/board/board.py +247 -91
- viam/components/board/client.py +149 -83
- viam/components/board/service.py +63 -33
- viam/components/button/__init__.py +10 -0
- viam/components/button/button.py +41 -0
- viam/components/button/client.py +52 -0
- viam/components/button/service.py +46 -0
- viam/components/camera/__init__.py +3 -3
- viam/components/camera/camera.py +62 -27
- viam/components/camera/client.py +59 -27
- viam/components/camera/service.py +42 -65
- viam/components/component_base.py +28 -5
- viam/components/encoder/__init__.py +1 -1
- viam/components/encoder/client.py +25 -14
- viam/components/encoder/encoder.py +48 -10
- viam/components/encoder/service.py +14 -18
- viam/components/gantry/__init__.py +1 -13
- viam/components/gantry/client.py +80 -25
- viam/components/gantry/gantry.py +123 -9
- viam/components/gantry/service.py +51 -29
- viam/components/generic/__init__.py +1 -1
- viam/components/generic/client.py +21 -8
- viam/components/generic/generic.py +10 -2
- viam/components/generic/service.py +12 -7
- viam/components/gripper/__init__.py +3 -13
- viam/components/gripper/client.py +69 -21
- viam/components/gripper/gripper.py +123 -3
- viam/components/gripper/service.py +44 -22
- viam/components/input/__init__.py +1 -14
- viam/components/input/client.py +55 -23
- viam/components/input/input.py +106 -3
- viam/components/input/service.py +16 -21
- viam/components/motor/__init__.py +1 -21
- viam/components/motor/client.py +56 -33
- viam/components/motor/motor.py +127 -4
- viam/components/motor/service.py +33 -44
- viam/components/movement_sensor/__init__.py +1 -1
- viam/components/movement_sensor/client.py +102 -45
- viam/components/movement_sensor/movement_sensor.py +130 -61
- viam/components/movement_sensor/service.py +38 -41
- viam/components/pose_tracker/__init__.py +1 -1
- viam/components/pose_tracker/client.py +18 -7
- viam/components/pose_tracker/pose_tracker.py +4 -2
- viam/components/pose_tracker/service.py +12 -10
- viam/components/power_sensor/__init__.py +17 -0
- viam/components/power_sensor/client.py +86 -0
- viam/components/power_sensor/power_sensor.py +104 -0
- viam/components/power_sensor/service.py +72 -0
- viam/components/sensor/__init__.py +2 -1
- viam/components/sensor/client.py +26 -10
- viam/components/sensor/sensor.py +22 -4
- viam/components/sensor/service.py +20 -11
- viam/components/servo/__init__.py +1 -13
- viam/components/servo/client.py +47 -21
- viam/components/servo/service.py +15 -22
- viam/components/servo/servo.py +61 -2
- viam/components/switch/__init__.py +10 -0
- viam/components/switch/client.py +83 -0
- viam/components/switch/service.py +72 -0
- viam/components/switch/switch.py +98 -0
- viam/errors.py +10 -0
- viam/gen/app/agent/v1/agent_grpc.py +29 -0
- viam/gen/app/agent/v1/agent_pb2.py +47 -0
- viam/gen/app/agent/v1/agent_pb2.pyi +280 -0
- viam/gen/app/cloudslam/v1/__init__.py +0 -0
- viam/gen/app/cloudslam/v1/cloud_slam_grpc.py +70 -0
- viam/gen/app/cloudslam/v1/cloud_slam_pb2.py +54 -0
- viam/gen/app/cloudslam/v1/cloud_slam_pb2.pyi +384 -0
- viam/gen/app/data/v1/data_grpc.py +197 -8
- viam/gen/app/data/v1/data_pb2.py +238 -99
- viam/gen/app/data/v1/data_pb2.pyi +1222 -259
- viam/gen/app/datapipelines/__init__.py +0 -0
- viam/gen/app/datapipelines/v1/__init__.py +0 -0
- viam/gen/app/datapipelines/v1/data_pipelines_grpc.py +84 -0
- viam/gen/app/datapipelines/v1/data_pipelines_pb2.py +57 -0
- viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi +387 -0
- viam/gen/app/dataset/__init__.py +0 -0
- viam/gen/app/dataset/v1/__init__.py +0 -0
- viam/gen/app/dataset/v1/dataset_grpc.py +68 -0
- viam/gen/app/dataset/v1/dataset_pb2.py +44 -0
- viam/gen/app/dataset/v1/dataset_pb2.pyi +214 -0
- viam/gen/app/datasync/v1/data_sync_grpc.py +21 -4
- viam/gen/app/datasync/v1/data_sync_pb2.py +62 -128
- viam/gen/app/datasync/v1/data_sync_pb2.pyi +156 -199
- viam/gen/app/mlinference/__init__.py +0 -0
- viam/gen/app/mlinference/v1/__init__.py +0 -0
- viam/gen/app/mlinference/v1/ml_inference_grpc.py +28 -0
- viam/gen/app/mlinference/v1/ml_inference_pb2.py +23 -0
- viam/gen/app/mlinference/v1/ml_inference_pb2.pyi +63 -0
- viam/gen/app/mltraining/v1/ml_training_grpc.py +51 -3
- viam/gen/app/mltraining/v1/ml_training_pb2.py +135 -58
- viam/gen/app/mltraining/v1/ml_training_pb2.pyi +328 -39
- viam/gen/app/packages/v1/packages_grpc.py +15 -1
- viam/gen/app/packages/v1/packages_pb2.py +44 -64
- viam/gen/app/packages/v1/packages_pb2.pyi +75 -85
- viam/gen/app/v1/app_grpc.py +644 -3
- viam/gen/app/v1/app_pb2.py +695 -295
- viam/gen/app/v1/app_pb2.pyi +4488 -635
- viam/gen/app/v1/billing_grpc.py +53 -11
- viam/gen/app/v1/billing_pb2.py +94 -39
- viam/gen/app/v1/billing_pb2.pyi +391 -191
- viam/gen/app/v1/end_user_grpc.py +59 -0
- viam/gen/app/v1/end_user_pb2.py +55 -0
- viam/gen/app/v1/end_user_pb2.pyi +181 -0
- viam/gen/app/v1/robot_grpc.py +16 -1
- viam/gen/app/v1/robot_pb2.py +122 -94
- viam/gen/app/v1/robot_pb2.pyi +463 -123
- viam/gen/common/v1/common_pb2.py +87 -58
- viam/gen/common/v1/common_pb2.pyi +456 -149
- viam/gen/component/arm/v1/arm_grpc.py +58 -2
- viam/gen/component/arm/v1/arm_pb2.py +68 -51
- viam/gen/component/arm/v1/arm_pb2.pyi +108 -42
- viam/gen/component/audioin/__init__.py +0 -0
- viam/gen/component/audioin/v1/__init__.py +0 -0
- viam/gen/component/audioin/v1/audioin_grpc.py +54 -0
- viam/gen/component/audioin/v1/audioin_pb2.py +34 -0
- viam/gen/component/audioin/v1/audioin_pb2.pyi +94 -0
- viam/gen/component/audioinput/v1/audioinput_grpc.py +25 -2
- viam/gen/component/audioinput/v1/audioinput_pb2.py +36 -31
- viam/gen/component/audioinput/v1/audioinput_pb2.pyi +22 -22
- viam/gen/component/audioout/__init__.py +0 -0
- viam/gen/component/audioout/v1/__init__.py +0 -0
- viam/gen/component/audioout/v1/audioout_grpc.py +54 -0
- viam/gen/component/audioout/v1/audioout_pb2.py +32 -0
- viam/gen/component/audioout/v1/audioout_pb2.pyi +47 -0
- viam/gen/component/base/v1/base_grpc.py +42 -2
- viam/gen/component/base/v1/base_pb2.py +58 -47
- viam/gen/component/base/v1/base_pb2.pyi +65 -30
- viam/gen/component/board/v1/board_grpc.py +59 -7
- viam/gen/component/board/v1/board_pb2.py +94 -73
- viam/gen/component/board/v1/board_pb2.pyi +165 -68
- viam/gen/component/button/__init__.py +0 -0
- viam/gen/component/button/v1/__init__.py +0 -0
- viam/gen/component/button/v1/button_grpc.py +38 -0
- viam/gen/component/button/v1/button_pb2.py +28 -0
- viam/gen/component/button/v1/button_pb2.pyi +39 -0
- viam/gen/component/camera/v1/camera_grpc.py +38 -2
- viam/gen/component/camera/v1/camera_pb2.py +60 -43
- viam/gen/component/camera/v1/camera_pb2.pyi +191 -37
- viam/gen/component/encoder/v1/encoder_grpc.py +25 -2
- viam/gen/component/encoder/v1/encoder_pb2.py +36 -31
- viam/gen/component/encoder/v1/encoder_pb2.pyi +15 -15
- viam/gen/component/gantry/v1/gantry_grpc.py +47 -2
- viam/gen/component/gantry/v1/gantry_pb2.py +56 -43
- viam/gen/component/gantry/v1/gantry_pb2.pyi +67 -31
- viam/gen/component/generic/v1/generic_grpc.py +16 -2
- viam/gen/component/generic/v1/generic_pb2.py +16 -11
- viam/gen/component/gripper/v1/gripper_grpc.py +44 -2
- viam/gen/component/gripper/v1/gripper_pb2.py +48 -35
- viam/gen/component/gripper/v1/gripper_pb2.pyi +62 -24
- viam/gen/component/inputcontroller/v1/input_controller_grpc.py +28 -2
- viam/gen/component/inputcontroller/v1/input_controller_pb2.py +46 -41
- viam/gen/component/inputcontroller/v1/input_controller_pb2.pyi +32 -36
- viam/gen/component/motor/v1/motor_grpc.py +51 -2
- viam/gen/component/motor/v1/motor_pb2.py +78 -67
- viam/gen/component/motor/v1/motor_pb2.pyi +75 -46
- viam/gen/component/movementsensor/v1/movementsensor_grpc.py +48 -2
- viam/gen/component/movementsensor/v1/movementsensor_pb2.py +70 -63
- viam/gen/component/movementsensor/v1/movementsensor_pb2.pyi +84 -57
- viam/gen/component/posetracker/v1/pose_tracker_grpc.py +19 -2
- viam/gen/component/posetracker/v1/pose_tracker_pb2.py +26 -21
- viam/gen/component/posetracker/v1/pose_tracker_pb2.pyi +9 -13
- viam/gen/component/powersensor/__init__.py +0 -0
- viam/gen/component/powersensor/v1/__init__.py +0 -0
- viam/gen/component/powersensor/v1/powersensor_grpc.py +62 -0
- viam/gen/component/powersensor/v1/powersensor_pb2.py +42 -0
- viam/gen/component/powersensor/v1/powersensor_pb2.pyi +124 -0
- viam/gen/component/sensor/v1/sensor_grpc.py +21 -5
- viam/gen/component/sensor/v1/sensor_pb2.py +18 -22
- viam/gen/component/sensor/v1/sensor_pb2.pyi +1 -69
- viam/gen/component/servo/v1/servo_grpc.py +28 -2
- viam/gen/component/servo/v1/servo_pb2.py +42 -37
- viam/gen/component/servo/v1/servo_pb2.pyi +22 -26
- viam/gen/component/switch/__init__.py +0 -0
- viam/gen/component/switch/v1/__init__.py +0 -0
- viam/gen/component/switch/v1/switch_grpc.py +54 -0
- viam/gen/component/switch/v1/switch_pb2.py +40 -0
- viam/gen/component/switch/v1/switch_pb2.pyi +116 -0
- viam/gen/component/testecho/v1/testecho_grpc.py +15 -0
- viam/gen/component/testecho/v1/testecho_pb2.py +29 -26
- viam/gen/component/testecho/v1/testecho_pb2.pyi +16 -20
- viam/gen/module/v1/module_grpc.py +18 -0
- viam/gen/module/v1/module_pb2.py +36 -33
- viam/gen/module/v1/module_pb2.pyi +39 -34
- viam/gen/opentelemetry/__init__.py +0 -0
- viam/gen/opentelemetry/proto/__init__.py +0 -0
- viam/gen/opentelemetry/proto/common/__init__.py +0 -0
- viam/gen/opentelemetry/proto/common/v1/__init__.py +0 -0
- viam/gen/opentelemetry/proto/common/v1/common_grpc.py +0 -0
- viam/gen/opentelemetry/proto/common/v1/common_pb2.py +27 -0
- viam/gen/opentelemetry/proto/common/v1/common_pb2.pyi +208 -0
- viam/gen/opentelemetry/proto/resource/__init__.py +0 -0
- viam/gen/opentelemetry/proto/resource/v1/__init__.py +0 -0
- viam/gen/opentelemetry/proto/resource/v1/resource_grpc.py +0 -0
- viam/gen/opentelemetry/proto/resource/v1/resource_pb2.py +18 -0
- viam/gen/opentelemetry/proto/resource/v1/resource_pb2.pyi +59 -0
- viam/gen/opentelemetry/proto/trace/__init__.py +0 -0
- viam/gen/opentelemetry/proto/trace/v1/__init__.py +0 -0
- viam/gen/opentelemetry/proto/trace/v1/trace_grpc.py +0 -0
- viam/gen/opentelemetry/proto/trace/v1/trace_pb2.py +37 -0
- viam/gen/opentelemetry/proto/trace/v1/trace_pb2.pyi +402 -0
- viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py +12 -0
- viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py +25 -22
- viam/gen/proto/rpc/examples/echo/v1/echo_pb2.pyi +13 -17
- viam/gen/proto/rpc/examples/echoresource/v1/echoresource_grpc.py +12 -0
- viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py +23 -20
- viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.pyi +13 -17
- viam/gen/proto/rpc/v1/auth_grpc.py +11 -0
- viam/gen/proto/rpc/v1/auth_pb2.py +27 -24
- viam/gen/proto/rpc/v1/auth_pb2.pyi +12 -16
- viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py +35 -32
- viam/gen/proto/rpc/webrtc/v1/grpc_pb2.pyi +37 -41
- viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py +15 -0
- viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py +62 -57
- viam/gen/proto/rpc/webrtc/v1/signaling_pb2.pyi +78 -69
- viam/gen/provisioning/__init__.py +0 -0
- viam/gen/provisioning/v1/__init__.py +0 -0
- viam/gen/provisioning/v1/provisioning_grpc.py +59 -0
- viam/gen/provisioning/v1/provisioning_pb2.py +45 -0
- viam/gen/provisioning/v1/provisioning_pb2.pyi +229 -0
- viam/gen/robot/v1/robot_grpc.py +144 -15
- viam/gen/robot/v1/robot_pb2.py +193 -119
- viam/gen/robot/v1/robot_pb2.pyi +565 -137
- viam/gen/service/datamanager/v1/data_manager_grpc.py +20 -2
- viam/gen/service/datamanager/v1/data_manager_pb2.py +27 -17
- viam/gen/service/datamanager/v1/data_manager_pb2.pyi +52 -10
- viam/gen/service/discovery/__init__.py +0 -0
- viam/gen/service/discovery/v1/__init__.py +0 -0
- viam/gen/service/discovery/v1/discovery_grpc.py +39 -0
- viam/gen/service/discovery/v1/discovery_pb2.py +29 -0
- viam/gen/service/discovery/v1/discovery_pb2.pyi +51 -0
- viam/gen/service/generic/__init__.py +0 -0
- viam/gen/service/generic/v1/__init__.py +0 -0
- viam/gen/service/generic/v1/generic_grpc.py +29 -0
- viam/gen/service/generic/v1/generic_pb2.py +21 -0
- viam/gen/service/generic/v1/generic_pb2.pyi +6 -0
- viam/gen/service/mlmodel/v1/mlmodel_grpc.py +9 -0
- viam/gen/service/mlmodel/v1/mlmodel_pb2.py +76 -29
- viam/gen/service/mlmodel/v1/mlmodel_pb2.pyi +307 -28
- viam/gen/service/motion/v1/motion_grpc.py +42 -4
- viam/gen/service/motion/v1/motion_pb2.py +119 -51
- viam/gen/service/motion/v1/motion_pb2.pyi +595 -120
- viam/gen/service/navigation/v1/navigation_grpc.py +49 -1
- viam/gen/service/navigation/v1/navigation_pb2.py +76 -51
- viam/gen/service/navigation/v1/navigation_pb2.pyi +188 -33
- viam/gen/service/sensors/v1/sensors_grpc.py +12 -0
- viam/gen/service/sensors/v1/sensors_pb2.py +60 -29
- viam/gen/service/sensors/v1/sensors_pb2.pyi +18 -21
- viam/gen/service/shell/v1/shell_grpc.py +27 -1
- viam/gen/service/shell/v1/shell_pb2.py +37 -15
- viam/gen/service/shell/v1/shell_pb2.pyi +260 -7
- viam/gen/service/slam/v1/slam_grpc.py +24 -2
- viam/gen/service/slam/v1/slam_pb2.py +44 -30
- viam/gen/service/slam/v1/slam_pb2.pyi +128 -27
- viam/gen/service/video/__init__.py +0 -0
- viam/gen/service/video/v1/__init__.py +0 -0
- viam/gen/service/video/v1/video_grpc.py +39 -0
- viam/gen/service/video/v1/video_pb2.py +29 -0
- viam/gen/service/video/v1/video_pb2.pyi +72 -0
- viam/gen/service/vision/v1/vision_grpc.py +39 -1
- viam/gen/service/vision/v1/vision_pb2.py +61 -45
- viam/gen/service/vision/v1/vision_pb2.pyi +180 -41
- viam/gen/service/worldstatestore/__init__.py +0 -0
- viam/gen/service/worldstatestore/v1/__init__.py +0 -0
- viam/gen/service/worldstatestore/v1/world_state_store_grpc.py +55 -0
- viam/gen/service/worldstatestore/v1/world_state_store_pb2.py +39 -0
- viam/gen/service/worldstatestore/v1/world_state_store_pb2.pyi +171 -0
- viam/gen/stream/__init__.py +0 -0
- viam/gen/stream/v1/__init__.py +0 -0
- viam/gen/stream/v1/stream_grpc.py +59 -0
- viam/gen/stream/v1/stream_pb2.py +39 -0
- viam/gen/stream/v1/stream_pb2.pyi +161 -0
- viam/gen/tagger/v1/tagger_pb2.py +9 -8
- viam/logging.py +160 -17
- viam/media/__init__.py +0 -9
- viam/media/audio.py +22 -10
- viam/media/utils/__init__.py +0 -0
- viam/media/utils/pil/__init__.py +55 -0
- viam/media/{viam_rgba_plugin.py → utils/pil/viam_rgba_plugin.py} +10 -16
- viam/media/viam_rgba.py +10 -0
- viam/media/video.py +197 -73
- viam/module/module.py +191 -44
- viam/module/resource_data_consumer.py +41 -0
- viam/module/service.py +9 -1
- viam/module/types.py +4 -5
- viam/operations.py +4 -3
- viam/proto/app/__init__.py +361 -5
- viam/proto/app/agent/__init__.py +28 -0
- viam/proto/app/billing.py +51 -27
- viam/proto/app/cloudslam/__init__.py +48 -0
- viam/proto/app/data/__init__.py +103 -17
- viam/proto/app/datapipelines/__init__.py +56 -0
- viam/proto/app/dataset/__init__.py +40 -0
- viam/proto/app/datasync/__init__.py +11 -5
- viam/proto/app/end_user.py +34 -0
- viam/proto/app/mlinference/__init__.py +15 -0
- viam/proto/app/mltraining/__init__.py +25 -1
- viam/proto/app/packages/__init__.py +3 -3
- viam/proto/app/robot.py +19 -1
- viam/proto/common/__init__.py +35 -8
- viam/proto/component/arm/__init__.py +9 -1
- viam/proto/component/audioin/__init__.py +16 -0
- viam/proto/component/audioinput/__init__.py +3 -1
- viam/proto/component/audioout/__init__.py +15 -0
- viam/proto/component/base/__init__.py +7 -1
- viam/proto/component/board/__init__.py +13 -5
- viam/proto/component/button/__init__.py +15 -0
- viam/proto/component/camera/__init__.py +9 -1
- viam/proto/component/encoder/__init__.py +3 -1
- viam/proto/component/gantry/__init__.py +7 -1
- viam/proto/component/generic/__init__.py +3 -1
- viam/proto/component/gripper/__init__.py +7 -1
- viam/proto/component/inputcontroller/__init__.py +7 -1
- viam/proto/component/motor/__init__.py +7 -1
- viam/proto/component/movementsensor/__init__.py +7 -1
- viam/proto/component/posetracker/__init__.py +7 -1
- viam/proto/component/powersensor/__init__.py +30 -0
- viam/proto/component/sensor/__init__.py +3 -4
- viam/proto/component/servo/__init__.py +3 -1
- viam/proto/component/switch/__init__.py +26 -0
- viam/proto/component/testecho/__init__.py +3 -1
- viam/proto/module/__init__.py +3 -1
- viam/proto/opentelemetry/__init__.py +0 -0
- viam/proto/opentelemetry/proto/__init__.py +0 -0
- viam/proto/opentelemetry/proto/common/__init__.py +15 -0
- viam/proto/opentelemetry/proto/resource/__init__.py +10 -0
- viam/proto/opentelemetry/proto/trace/__init__.py +15 -0
- viam/proto/provisioning/__init__.py +42 -0
- viam/proto/robot/__init__.py +57 -9
- viam/proto/rpc/auth.py +11 -1
- viam/proto/rpc/examples/echo/__init__.py +3 -1
- viam/proto/rpc/examples/echoresource/__init__.py +7 -1
- viam/proto/rpc/webrtc/grpc.py +3 -1
- viam/proto/rpc/webrtc/signaling.py +5 -1
- viam/proto/service/datamanager/__init__.py +15 -2
- viam/proto/service/discovery/__init__.py +15 -0
- viam/proto/service/generic/__init__.py +12 -0
- viam/proto/service/mlmodel/__init__.py +27 -1
- viam/proto/service/motion/__init__.py +35 -5
- viam/proto/service/navigation/__init__.py +19 -1
- viam/proto/service/sensors/__init__.py +3 -1
- viam/proto/service/shell/__init__.py +25 -2
- viam/proto/service/slam/__init__.py +13 -1
- viam/proto/service/video/__init__.py +15 -0
- viam/proto/service/vision/__init__.py +11 -1
- viam/proto/service/worldstatestore/__init__.py +32 -0
- viam/proto/stream/__init__.py +36 -0
- viam/py.typed +0 -0
- viam/resource/base.py +45 -8
- viam/resource/easy_resource.py +149 -0
- viam/resource/manager.py +35 -14
- viam/resource/registry.py +40 -52
- viam/resource/rpc_client_base.py +33 -1
- viam/resource/rpc_service_base.py +15 -8
- viam/resource/types.py +39 -26
- viam/robot/client.py +458 -91
- viam/robot/service.py +13 -107
- viam/rpc/dial.py +133 -15
- viam/rpc/libviam_rust_utils.so +0 -0
- viam/rpc/server.py +59 -15
- viam/rpc/types.py +2 -4
- viam/services/discovery/__init__.py +12 -0
- viam/services/discovery/client.py +55 -0
- viam/services/discovery/discovery.py +52 -0
- viam/services/discovery/service.py +43 -0
- viam/services/generic/__init__.py +18 -0
- viam/services/generic/client.py +58 -0
- viam/services/generic/generic.py +58 -0
- viam/services/generic/service.py +29 -0
- viam/services/mlmodel/__init__.py +15 -1
- viam/services/mlmodel/client.py +20 -15
- viam/services/mlmodel/mlmodel.py +44 -7
- viam/services/mlmodel/service.py +9 -13
- viam/services/mlmodel/utils.py +101 -0
- viam/services/motion/__init__.py +15 -3
- viam/services/motion/client.py +109 -150
- viam/services/motion/motion.py +380 -0
- viam/services/motion/service.py +132 -0
- viam/services/navigation/__init__.py +11 -0
- viam/services/navigation/client.py +99 -0
- viam/services/navigation/navigation.py +250 -0
- viam/services/navigation/service.py +137 -0
- viam/services/service_base.py +43 -4
- viam/services/service_client_base.py +4 -4
- viam/services/slam/__init__.py +4 -1
- viam/services/slam/client.py +21 -11
- viam/services/slam/service.py +16 -19
- viam/services/slam/slam.py +66 -5
- viam/services/vision/__init__.py +8 -0
- viam/services/vision/client.py +115 -111
- viam/services/vision/service.py +143 -0
- viam/services/vision/vision.py +317 -0
- viam/services/worldstatestore/__init__.py +18 -0
- viam/services/worldstatestore/client.py +94 -0
- viam/services/worldstatestore/service.py +55 -0
- viam/services/worldstatestore/worldstatestore.py +90 -0
- viam/sessions_client.py +254 -0
- viam/streams.py +44 -0
- viam/utils.py +143 -15
- viam/version_metadata.py +4 -0
- viam_sdk-0.66.0.dist-info/METADATA +157 -0
- viam_sdk-0.66.0.dist-info/RECORD +531 -0
- {viam_sdk-0.3.0.dist-info → viam_sdk-0.66.0.dist-info}/WHEEL +1 -1
- viam/components/audio_input/__init__.py +0 -18
- viam/components/audio_input/audio_input.py +0 -79
- viam/components/audio_input/client.py +0 -60
- viam/components/audio_input/service.py +0 -118
- viam/components/types.py +0 -5
- viam/gen/app/model/v1/model_grpc.py +0 -39
- viam/gen/app/model/v1/model_pb2.py +0 -71
- viam/gen/app/model/v1/model_pb2.pyi +0 -285
- viam/gen/proto/rpc/examples/fileupload/v1/fileupload_grpc.py +0 -21
- viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.py +0 -18
- viam/gen/proto/rpc/examples/fileupload/v1/fileupload_pb2.pyi +0 -49
- viam/media/media.py +0 -53
- viam/proto/app/model/__init__.py +0 -40
- viam/proto/rpc/examples/fileupload/__init__.py +0 -13
- viam/services/sensors/__init__.py +0 -5
- viam/services/sensors/client.py +0 -63
- viam_sdk-0.3.0.dist-info/LICENSE +0 -202
- viam_sdk-0.3.0.dist-info/METADATA +0 -122
- viam_sdk-0.3.0.dist-info/RECORD +0 -372
- /viam/{gen/app/model → app}/__init__.py +0 -0
- /viam/gen/app/{model/v1 → agent}/__init__.py +0 -0
- /viam/gen/{proto/rpc/examples/fileupload → app/agent/v1}/__init__.py +0 -0
- /viam/gen/{proto/rpc/examples/fileupload/v1 → app/cloudslam}/__init__.py +0 -0
- /LICENSE → /viam_sdk-0.66.0.dist-info/licenses/LICENSE +0 -0
viam/components/motor/motor.py
CHANGED
|
@@ -2,7 +2,7 @@ import abc
|
|
|
2
2
|
from dataclasses import dataclass
|
|
3
3
|
from typing import Any, Dict, Final, Optional, Tuple
|
|
4
4
|
|
|
5
|
-
from viam.resource.types import RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
|
|
5
|
+
from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
|
|
6
6
|
|
|
7
7
|
from ..component_base import ComponentBase
|
|
8
8
|
|
|
@@ -13,13 +13,21 @@ class Motor(ComponentBase):
|
|
|
13
13
|
This acts as an abstract base class for any drivers representing specific
|
|
14
14
|
motor implementations. This cannot be used on its own. If the ``__init__()`` function is
|
|
15
15
|
overridden, it must call the ``super().__init__()`` function.
|
|
16
|
+
|
|
17
|
+
::
|
|
18
|
+
|
|
19
|
+
from viam.components.motor import Motor
|
|
20
|
+
|
|
21
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/>`_.
|
|
16
22
|
"""
|
|
17
23
|
|
|
18
24
|
@dataclass
|
|
19
25
|
class Properties:
|
|
20
26
|
position_reporting: bool
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
|
|
29
|
+
RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "motor"
|
|
30
|
+
)
|
|
23
31
|
|
|
24
32
|
@abc.abstractmethod
|
|
25
33
|
async def set_power(
|
|
@@ -34,9 +42,18 @@ class Motor(ComponentBase):
|
|
|
34
42
|
Sets the "percentage" of power the motor should employ between -1 and 1.
|
|
35
43
|
When ``power`` is negative, the rotation will be in the backward direction.
|
|
36
44
|
|
|
45
|
+
::
|
|
46
|
+
|
|
47
|
+
my_motor = Motor.from_robot(robot=machine, name="my_motor")
|
|
48
|
+
|
|
49
|
+
# Set the power to 40% forwards.
|
|
50
|
+
await my_motor.set_power(power=0.4)
|
|
51
|
+
|
|
37
52
|
Args:
|
|
38
53
|
power (float): Power between -1 and 1
|
|
39
54
|
(negative implies backwards).
|
|
55
|
+
|
|
56
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#setpower>`_.
|
|
40
57
|
"""
|
|
41
58
|
...
|
|
42
59
|
|
|
@@ -55,11 +72,20 @@ class Motor(ComponentBase):
|
|
|
55
72
|
When ``rpm`` or ``revolutions`` is a negative value, the rotation will be in the backward direction.
|
|
56
73
|
Note: if both ``rpm`` and ``revolutions`` are negative, the motor will spin in the forward direction.
|
|
57
74
|
|
|
75
|
+
::
|
|
76
|
+
|
|
77
|
+
my_motor = Motor.from_robot(robot=machine, name="my_motor")
|
|
78
|
+
|
|
79
|
+
# Turn the motor 7.2 revolutions at 60 RPM.
|
|
80
|
+
await my_motor.go_for(rpm=60, revolutions=7.2)
|
|
81
|
+
|
|
58
82
|
Args:
|
|
59
83
|
rpm (float): Speed at which the motor should move in rotations per minute
|
|
60
84
|
(negative implies backwards).
|
|
61
85
|
revolutions (float): Number of revolutions the motor should run for
|
|
62
86
|
(negative implies backwards).
|
|
87
|
+
|
|
88
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#gofor>`_.
|
|
63
89
|
"""
|
|
64
90
|
...
|
|
65
91
|
|
|
@@ -79,9 +105,45 @@ class Motor(ComponentBase):
|
|
|
79
105
|
Regardless of the directionality of the ``rpm`` this function will move
|
|
80
106
|
the motor towards the specified position.
|
|
81
107
|
|
|
108
|
+
::
|
|
109
|
+
|
|
110
|
+
my_motor = Motor.from_robot(robot=machine, name="my_motor")
|
|
111
|
+
|
|
112
|
+
# Turn the motor to 8.3 revolutions from home at 75 RPM.
|
|
113
|
+
await my_motor.go_to(rpm=75, revolutions=8.3)
|
|
114
|
+
|
|
82
115
|
Args:
|
|
83
116
|
rpm (float): Speed at which the motor should rotate (absolute value).
|
|
84
117
|
position_revolutions (float): Target position relative to home/zero, in revolutions.
|
|
118
|
+
|
|
119
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#goto>`_.
|
|
120
|
+
"""
|
|
121
|
+
...
|
|
122
|
+
|
|
123
|
+
@abc.abstractmethod
|
|
124
|
+
async def set_rpm(
|
|
125
|
+
self,
|
|
126
|
+
rpm: float,
|
|
127
|
+
*,
|
|
128
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
129
|
+
timeout: Optional[float] = None,
|
|
130
|
+
**kwargs,
|
|
131
|
+
):
|
|
132
|
+
"""
|
|
133
|
+
Spin the motor indefinitely at the specified speed, in revolutions per minute.
|
|
134
|
+
Positive ``rpm`` will result in forward movement and negative ``rpm`` will result in backwards movement
|
|
135
|
+
|
|
136
|
+
::
|
|
137
|
+
|
|
138
|
+
my_motor = Motor.from_robot(robot=machine, name="my_motor")
|
|
139
|
+
|
|
140
|
+
# Spin the motor at 75 RPM.
|
|
141
|
+
await my_motor.set_rpm(rpm=75)
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
rpm (float): Speed at which the motor should rotate.
|
|
145
|
+
|
|
146
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#setrpm>`_.
|
|
85
147
|
"""
|
|
86
148
|
...
|
|
87
149
|
|
|
@@ -97,8 +159,17 @@ class Motor(ComponentBase):
|
|
|
97
159
|
"""
|
|
98
160
|
Set the current position (modified by ``offset``) to be the new zero (home) position.
|
|
99
161
|
|
|
162
|
+
::
|
|
163
|
+
|
|
164
|
+
my_motor = Motor.from_robot(robot=machine, name="my_motor")
|
|
165
|
+
|
|
166
|
+
# Set the current position as the new home position with no offset.
|
|
167
|
+
await my_motor.reset_zero_position(offset=0.0)
|
|
168
|
+
|
|
100
169
|
Args:
|
|
101
170
|
offset (float): The offset from the current position to new home/zero position.
|
|
171
|
+
|
|
172
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#resetzeroposition>`_.
|
|
102
173
|
"""
|
|
103
174
|
...
|
|
104
175
|
|
|
@@ -115,8 +186,17 @@ class Motor(ComponentBase):
|
|
|
115
186
|
The value returned is the number of revolutions relative to its zero position.
|
|
116
187
|
This method will raise an exception if position reporting is not supported by the motor.
|
|
117
188
|
|
|
189
|
+
::
|
|
190
|
+
|
|
191
|
+
my_motor = Motor.from_robot(robot=machine, name="my_motor")
|
|
192
|
+
|
|
193
|
+
# Get the current position of the motor.
|
|
194
|
+
position = await my_motor.get_position()
|
|
195
|
+
|
|
118
196
|
Returns:
|
|
119
197
|
float: Number of revolutions the motor is away from zero/home.
|
|
198
|
+
|
|
199
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#getposition>`_.
|
|
120
200
|
"""
|
|
121
201
|
...
|
|
122
202
|
|
|
@@ -132,8 +212,21 @@ class Motor(ComponentBase):
|
|
|
132
212
|
Report a dictionary mapping optional properties to
|
|
133
213
|
whether it is supported by this motor.
|
|
134
214
|
|
|
215
|
+
::
|
|
216
|
+
|
|
217
|
+
my_motor = Motor.from_robot(robot=machine, name="my_motor")
|
|
218
|
+
|
|
219
|
+
# Report a dictionary mapping optional properties to whether it is supported by
|
|
220
|
+
# this motor.
|
|
221
|
+
properties = await my_motor.get_properties()
|
|
222
|
+
|
|
223
|
+
# Print out the properties.
|
|
224
|
+
print(f'Properties: {properties}')
|
|
225
|
+
|
|
135
226
|
Returns:
|
|
136
227
|
Properties: Map of feature names to supported status.
|
|
228
|
+
|
|
229
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#getproperties>`_.
|
|
137
230
|
"""
|
|
138
231
|
...
|
|
139
232
|
|
|
@@ -147,6 +240,15 @@ class Motor(ComponentBase):
|
|
|
147
240
|
):
|
|
148
241
|
"""
|
|
149
242
|
Stop the motor immediately, without any gradual step down.
|
|
243
|
+
|
|
244
|
+
::
|
|
245
|
+
|
|
246
|
+
my_motor = Motor.from_robot(robot=machine, name="my_motor")
|
|
247
|
+
|
|
248
|
+
# Stop the motor.
|
|
249
|
+
await my_motor.stop()
|
|
250
|
+
|
|
251
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#stop>`_.
|
|
150
252
|
"""
|
|
151
253
|
...
|
|
152
254
|
|
|
@@ -161,9 +263,20 @@ class Motor(ComponentBase):
|
|
|
161
263
|
"""
|
|
162
264
|
Returns whether or not the motor is currently running.
|
|
163
265
|
|
|
266
|
+
::
|
|
267
|
+
|
|
268
|
+
my_motor = Motor.from_robot(robot=machine, name="my_motor")
|
|
269
|
+
|
|
270
|
+
# Check whether the motor is currently running.
|
|
271
|
+
powered = await my_motor.is_powered()
|
|
272
|
+
|
|
273
|
+
print('Powered: ', powered)
|
|
274
|
+
|
|
164
275
|
Returns:
|
|
165
|
-
bool:
|
|
166
|
-
|
|
276
|
+
Tuple[bool, float]: A tuple containing two values; the first [0] value indicates whether the motor is currently powered, and
|
|
277
|
+
the second [1] value indicates the current power percentage of the motor.
|
|
278
|
+
|
|
279
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#ispowered>`_.
|
|
167
280
|
"""
|
|
168
281
|
...
|
|
169
282
|
|
|
@@ -172,7 +285,17 @@ class Motor(ComponentBase):
|
|
|
172
285
|
"""
|
|
173
286
|
Get if the motor is currently moving.
|
|
174
287
|
|
|
288
|
+
::
|
|
289
|
+
|
|
290
|
+
my_motor = Motor.from_robot(robot=machine, name="my_motor")
|
|
291
|
+
|
|
292
|
+
# Check whether the motor is currently moving.
|
|
293
|
+
moving = await my_motor.is_moving()
|
|
294
|
+
print('Moving: ', moving)
|
|
295
|
+
|
|
175
296
|
Returns:
|
|
176
297
|
bool: Whether the motor is moving.
|
|
298
|
+
|
|
299
|
+
For more information, see `Motor component <https://docs.viam.com/dev/reference/apis/components/motor/#ismoving>`_.
|
|
177
300
|
"""
|
|
178
301
|
...
|
viam/components/motor/service.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from grpclib.server import Stream
|
|
2
2
|
|
|
3
|
-
from viam.
|
|
4
|
-
from viam.proto.common import DoCommandRequest, DoCommandResponse
|
|
3
|
+
from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse
|
|
5
4
|
from viam.proto.component.motor import (
|
|
6
5
|
GetPositionRequest,
|
|
7
6
|
GetPositionResponse,
|
|
@@ -15,13 +14,15 @@ from viam.proto.component.motor import (
|
|
|
15
14
|
IsMovingResponse,
|
|
16
15
|
IsPoweredRequest,
|
|
17
16
|
IsPoweredResponse,
|
|
18
|
-
MotorServiceBase,
|
|
19
17
|
ResetZeroPositionRequest,
|
|
20
18
|
ResetZeroPositionResponse,
|
|
21
19
|
SetPowerRequest,
|
|
22
20
|
SetPowerResponse,
|
|
21
|
+
SetRPMRequest,
|
|
22
|
+
SetRPMResponse,
|
|
23
23
|
StopRequest,
|
|
24
24
|
StopResponse,
|
|
25
|
+
UnimplementedMotorServiceBase,
|
|
25
26
|
)
|
|
26
27
|
from viam.resource.rpc_service_base import ResourceRPCServiceBase
|
|
27
28
|
from viam.utils import dict_to_struct, struct_to_dict
|
|
@@ -29,7 +30,7 @@ from viam.utils import dict_to_struct, struct_to_dict
|
|
|
29
30
|
from .motor import Motor
|
|
30
31
|
|
|
31
32
|
|
|
32
|
-
class MotorRPCService(
|
|
33
|
+
class MotorRPCService(UnimplementedMotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
33
34
|
"""
|
|
34
35
|
gRPC Service for a Motor
|
|
35
36
|
"""
|
|
@@ -40,10 +41,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
|
40
41
|
request = await stream.recv_message()
|
|
41
42
|
assert request is not None
|
|
42
43
|
name = request.name
|
|
43
|
-
|
|
44
|
-
motor = self.get_resource(name)
|
|
45
|
-
except ResourceNotFoundError as e:
|
|
46
|
-
raise e.grpc_error
|
|
44
|
+
motor = self.get_resource(name)
|
|
47
45
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
48
46
|
await motor.set_power(request.power_pct, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
49
47
|
await stream.send_message(SetPowerResponse())
|
|
@@ -52,10 +50,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
|
52
50
|
request = await stream.recv_message()
|
|
53
51
|
assert request is not None
|
|
54
52
|
name = request.name
|
|
55
|
-
|
|
56
|
-
motor = self.get_resource(name)
|
|
57
|
-
except ResourceNotFoundError as e:
|
|
58
|
-
raise e.grpc_error
|
|
53
|
+
motor = self.get_resource(name)
|
|
59
54
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
60
55
|
await motor.go_for(request.rpm, request.revolutions, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
61
56
|
await stream.send_message(GoForResponse())
|
|
@@ -64,24 +59,27 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
|
64
59
|
request = await stream.recv_message()
|
|
65
60
|
assert request is not None
|
|
66
61
|
name = request.name
|
|
67
|
-
|
|
68
|
-
motor = self.get_resource(name)
|
|
69
|
-
except ResourceNotFoundError as e:
|
|
70
|
-
raise e.grpc_error
|
|
62
|
+
motor = self.get_resource(name)
|
|
71
63
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
72
64
|
await motor.go_to(
|
|
73
65
|
request.rpm, request.position_revolutions, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata
|
|
74
66
|
)
|
|
75
67
|
await stream.send_message(GoToResponse())
|
|
76
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
|
+
|
|
77
78
|
async def ResetZeroPosition(self, stream: Stream[ResetZeroPositionRequest, ResetZeroPositionResponse]) -> None:
|
|
78
79
|
request = await stream.recv_message()
|
|
79
80
|
assert request is not None
|
|
80
81
|
name = request.name
|
|
81
|
-
|
|
82
|
-
motor = self.get_resource(name)
|
|
83
|
-
except ResourceNotFoundError as e:
|
|
84
|
-
raise e.grpc_error
|
|
82
|
+
motor = self.get_resource(name)
|
|
85
83
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
86
84
|
await motor.reset_zero_position(request.offset, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
87
85
|
await stream.send_message(ResetZeroPositionResponse())
|
|
@@ -90,10 +88,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
|
90
88
|
request = await stream.recv_message()
|
|
91
89
|
assert request is not None
|
|
92
90
|
name = request.name
|
|
93
|
-
|
|
94
|
-
motor = self.get_resource(name)
|
|
95
|
-
except ResourceNotFoundError as e:
|
|
96
|
-
raise e.grpc_error
|
|
91
|
+
motor = self.get_resource(name)
|
|
97
92
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
98
93
|
position = await motor.get_position(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
99
94
|
await stream.send_message(GetPositionResponse(position=position))
|
|
@@ -102,10 +97,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
|
102
97
|
request = await stream.recv_message()
|
|
103
98
|
assert request is not None
|
|
104
99
|
name = request.name
|
|
105
|
-
|
|
106
|
-
motor = self.get_resource(name)
|
|
107
|
-
except ResourceNotFoundError as e:
|
|
108
|
-
raise e.grpc_error
|
|
100
|
+
motor = self.get_resource(name)
|
|
109
101
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
110
102
|
properties = await motor.get_properties(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
111
103
|
response = GetPropertiesResponse(**properties.__dict__)
|
|
@@ -115,10 +107,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
|
115
107
|
request = await stream.recv_message()
|
|
116
108
|
assert request is not None
|
|
117
109
|
name = request.name
|
|
118
|
-
|
|
119
|
-
motor = self.get_resource(name)
|
|
120
|
-
except ResourceNotFoundError as e:
|
|
121
|
-
raise e.grpc_error
|
|
110
|
+
motor = self.get_resource(name)
|
|
122
111
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
123
112
|
await motor.stop(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
124
113
|
response = StopResponse()
|
|
@@ -128,10 +117,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
|
128
117
|
request = await stream.recv_message()
|
|
129
118
|
assert request is not None
|
|
130
119
|
name = request.name
|
|
131
|
-
|
|
132
|
-
motor = self.get_resource(name)
|
|
133
|
-
except ResourceNotFoundError as e:
|
|
134
|
-
raise e.grpc_error
|
|
120
|
+
motor = self.get_resource(name)
|
|
135
121
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
136
122
|
is_powered, power_pct = await motor.is_powered(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
137
123
|
await stream.send_message(IsPoweredResponse(is_on=is_powered, power_pct=power_pct))
|
|
@@ -140,10 +126,7 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
|
140
126
|
request = await stream.recv_message()
|
|
141
127
|
assert request is not None
|
|
142
128
|
name = request.name
|
|
143
|
-
|
|
144
|
-
motor = self.get_resource(name)
|
|
145
|
-
except ResourceNotFoundError as e:
|
|
146
|
-
raise e.grpc_error
|
|
129
|
+
motor = self.get_resource(name)
|
|
147
130
|
is_moving = await motor.is_moving()
|
|
148
131
|
response = IsMovingResponse(is_moving=is_moving)
|
|
149
132
|
await stream.send_message(response)
|
|
@@ -151,11 +134,17 @@ class MotorRPCService(MotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
|
151
134
|
async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
|
|
152
135
|
request = await stream.recv_message()
|
|
153
136
|
assert request is not None
|
|
154
|
-
|
|
155
|
-
motor = self.get_resource(request.name)
|
|
156
|
-
except ResourceNotFoundError as e:
|
|
157
|
-
raise e.grpc_error
|
|
137
|
+
motor = self.get_resource(request.name)
|
|
158
138
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
159
139
|
result = await motor.do_command(command=struct_to_dict(request.command), timeout=timeout, metadata=stream.metadata)
|
|
160
140
|
response = DoCommandResponse(result=dict_to_struct(result))
|
|
161
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)
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
from typing import Any, Dict, Mapping, Optional, Tuple
|
|
1
|
+
from typing import Any, Dict, List, Mapping, Optional, Tuple
|
|
2
2
|
|
|
3
3
|
from grpclib.client import Channel
|
|
4
4
|
|
|
5
5
|
from viam.components.movement_sensor.movement_sensor import MovementSensor
|
|
6
|
-
from viam.proto.common import DoCommandRequest, DoCommandResponse
|
|
6
|
+
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetReadingsRequest, GetReadingsResponse
|
|
7
7
|
from viam.proto.component.movementsensor import (
|
|
8
8
|
GetAccuracyRequest,
|
|
9
|
-
GetAccuracyResponse,
|
|
10
9
|
GetAngularVelocityRequest,
|
|
11
10
|
GetAngularVelocityResponse,
|
|
12
11
|
GetCompassHeadingRequest,
|
|
@@ -24,7 +23,7 @@ from viam.proto.component.movementsensor import (
|
|
|
24
23
|
MovementSensorServiceStub,
|
|
25
24
|
)
|
|
26
25
|
from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
|
|
27
|
-
from viam.utils import ValueTypes, dict_to_struct, struct_to_dict
|
|
26
|
+
from viam.utils import SensorReading, ValueTypes, dict_to_struct, get_geometries, sensor_readings_value_to_native, struct_to_dict
|
|
28
27
|
|
|
29
28
|
from . import GeoPoint, Orientation, Vector3
|
|
30
29
|
|
|
@@ -37,68 +36,126 @@ class MovementSensorClient(MovementSensor, ReconfigurableResourceRPCClientBase):
|
|
|
37
36
|
self.client = MovementSensorServiceStub(channel)
|
|
38
37
|
super().__init__(name)
|
|
39
38
|
|
|
40
|
-
async def get_position(
|
|
41
|
-
|
|
42
|
-
|
|
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
|
|
43
47
|
request = GetPositionRequest(name=self.name, extra=dict_to_struct(extra))
|
|
44
|
-
response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout)
|
|
48
|
+
response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md)
|
|
45
49
|
return response.coordinate, response.altitude_m
|
|
46
50
|
|
|
47
|
-
async def get_linear_velocity(
|
|
48
|
-
|
|
49
|
-
|
|
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
|
|
50
59
|
request = GetLinearVelocityRequest(name=self.name, extra=dict_to_struct(extra))
|
|
51
|
-
response: GetLinearVelocityResponse = await self.client.GetLinearVelocity(request, timeout=timeout)
|
|
60
|
+
response: GetLinearVelocityResponse = await self.client.GetLinearVelocity(request, timeout=timeout, metadata=md)
|
|
52
61
|
return response.linear_velocity
|
|
53
62
|
|
|
54
|
-
async def get_angular_velocity(
|
|
55
|
-
|
|
56
|
-
|
|
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
|
|
57
71
|
request = GetAngularVelocityRequest(name=self.name, extra=dict_to_struct(extra))
|
|
58
|
-
response: GetAngularVelocityResponse = await self.client.GetAngularVelocity(request, timeout=timeout)
|
|
72
|
+
response: GetAngularVelocityResponse = await self.client.GetAngularVelocity(request, timeout=timeout, metadata=md)
|
|
59
73
|
return response.angular_velocity
|
|
60
74
|
|
|
61
|
-
async def get_linear_acceleration(
|
|
62
|
-
|
|
63
|
-
|
|
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
|
|
64
83
|
request = GetLinearAccelerationRequest(name=self.name, extra=dict_to_struct(extra))
|
|
65
|
-
response: GetLinearAccelerationResponse = await self.client.GetLinearAcceleration(request, timeout=timeout)
|
|
84
|
+
response: GetLinearAccelerationResponse = await self.client.GetLinearAcceleration(request, timeout=timeout, metadata=md)
|
|
66
85
|
return response.linear_acceleration
|
|
67
86
|
|
|
68
|
-
async def get_compass_heading(
|
|
69
|
-
|
|
70
|
-
|
|
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
|
|
71
95
|
request = GetCompassHeadingRequest(name=self.name, extra=dict_to_struct(extra))
|
|
72
|
-
response: GetCompassHeadingResponse = await self.client.GetCompassHeading(request, timeout=timeout)
|
|
96
|
+
response: GetCompassHeadingResponse = await self.client.GetCompassHeading(request, timeout=timeout, metadata=md)
|
|
73
97
|
return response.value
|
|
74
98
|
|
|
75
|
-
async def get_orientation(
|
|
76
|
-
|
|
77
|
-
|
|
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
|
|
78
107
|
request = GetOrientationRequest(name=self.name, extra=dict_to_struct(extra))
|
|
79
|
-
response: GetOrientationResponse = await self.client.GetOrientation(request, timeout=timeout)
|
|
108
|
+
response: GetOrientationResponse = await self.client.GetOrientation(request, timeout=timeout, metadata=md)
|
|
80
109
|
return response.orientation
|
|
81
110
|
|
|
82
|
-
async def get_properties(
|
|
83
|
-
|
|
84
|
-
|
|
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
|
|
85
119
|
request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra))
|
|
86
|
-
response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout)
|
|
120
|
+
response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md)
|
|
87
121
|
return MovementSensor.Properties.from_proto(response)
|
|
88
122
|
|
|
89
|
-
async def get_accuracy(
|
|
90
|
-
|
|
91
|
-
|
|
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
|
|
92
131
|
request = GetAccuracyRequest(name=self.name, extra=dict_to_struct(extra))
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
|
102
155
|
request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
|
|
103
|
-
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout)
|
|
156
|
+
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
|
|
104
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)
|