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
|
@@ -1,27 +1,41 @@
|
|
|
1
1
|
import abc
|
|
2
|
-
import
|
|
2
|
+
import sys
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Any, Dict, Final,
|
|
4
|
+
from typing import Any, Dict, Final, Mapping, Optional, Tuple
|
|
5
5
|
|
|
6
|
-
from grpclib import GRPCError
|
|
7
6
|
from typing_extensions import Self
|
|
8
7
|
|
|
9
|
-
from viam.
|
|
10
|
-
from viam.proto.component.movementsensor import GetPropertiesResponse
|
|
11
|
-
from viam.resource.types import RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
|
|
8
|
+
from viam.components.component_base import ComponentBase
|
|
9
|
+
from viam.proto.component.movementsensor import GetAccuracyResponse, GetPropertiesResponse
|
|
10
|
+
from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
|
|
11
|
+
from viam.utils import SensorReading
|
|
12
12
|
|
|
13
|
-
from ..sensor import Sensor
|
|
14
13
|
from . import GeoPoint, Orientation, Vector3
|
|
15
14
|
|
|
15
|
+
if sys.version_info >= (3, 10):
|
|
16
|
+
from typing import TypeAlias
|
|
17
|
+
else:
|
|
18
|
+
from typing_extensions import TypeAlias
|
|
16
19
|
|
|
17
|
-
|
|
20
|
+
|
|
21
|
+
class MovementSensor(ComponentBase):
|
|
18
22
|
"""MovementSensor reports information about the robot's direction, position and speed.
|
|
19
23
|
|
|
20
24
|
This acts as an abstract base class for any sensors that can provide data regarding the robot's direction, position, and speed.
|
|
21
25
|
This cannot be used on its own. If the ``__init__()`` function is overridden, it must call the ``super().__init__()`` function.
|
|
26
|
+
|
|
27
|
+
::
|
|
28
|
+
|
|
29
|
+
from viam.components.movement_sensor import MovementSensor
|
|
30
|
+
|
|
31
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/>`_.
|
|
22
32
|
"""
|
|
23
33
|
|
|
24
|
-
|
|
34
|
+
API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
|
|
35
|
+
RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "movement_sensor"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
Accuracy: "TypeAlias" = GetAccuracyResponse
|
|
25
39
|
|
|
26
40
|
@dataclass
|
|
27
41
|
class Properties:
|
|
@@ -35,12 +49,12 @@ class MovementSensor(Sensor):
|
|
|
35
49
|
@property
|
|
36
50
|
def proto(self) -> GetPropertiesResponse:
|
|
37
51
|
return GetPropertiesResponse(
|
|
38
|
-
linear_acceleration_supported=self.
|
|
52
|
+
linear_acceleration_supported=self.linear_acceleration_supported,
|
|
39
53
|
angular_velocity_supported=self.angular_velocity_supported,
|
|
40
54
|
orientation_supported=self.orientation_supported,
|
|
41
55
|
position_supported=self.position_supported,
|
|
42
56
|
compass_heading_supported=self.compass_heading_supported,
|
|
43
|
-
linear_velocity_supported=self.
|
|
57
|
+
linear_velocity_supported=self.linear_velocity_supported,
|
|
44
58
|
)
|
|
45
59
|
|
|
46
60
|
@classmethod
|
|
@@ -51,7 +65,7 @@ class MovementSensor(Sensor):
|
|
|
51
65
|
orientation_supported=proto.orientation_supported,
|
|
52
66
|
position_supported=proto.position_supported,
|
|
53
67
|
compass_heading_supported=proto.compass_heading_supported,
|
|
54
|
-
linear_velocity_supported=proto.
|
|
68
|
+
linear_velocity_supported=proto.linear_velocity_supported,
|
|
55
69
|
)
|
|
56
70
|
|
|
57
71
|
@abc.abstractmethod
|
|
@@ -60,8 +74,19 @@ class MovementSensor(Sensor):
|
|
|
60
74
|
) -> Tuple[GeoPoint, float]:
|
|
61
75
|
"""Get the current GeoPoint (latitude, longitude) and altitude (m)
|
|
62
76
|
|
|
77
|
+
::
|
|
78
|
+
|
|
79
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
80
|
+
robot=robot,
|
|
81
|
+
name="my_movement_sensor")
|
|
82
|
+
|
|
83
|
+
# Get the current position of the movement sensor.
|
|
84
|
+
position = await my_movement_sensor.get_position()
|
|
85
|
+
|
|
63
86
|
Returns:
|
|
64
87
|
Tuple[GeoPoint, float]: The current lat/long, along with the altitude in m
|
|
88
|
+
|
|
89
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getposition>`_.
|
|
65
90
|
"""
|
|
66
91
|
...
|
|
67
92
|
|
|
@@ -69,8 +94,18 @@ class MovementSensor(Sensor):
|
|
|
69
94
|
async def get_linear_velocity(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Vector3:
|
|
70
95
|
"""Get the current linear velocity as a ``Vector3`` with x, y, and z axes represented in m/sec
|
|
71
96
|
|
|
97
|
+
::
|
|
98
|
+
|
|
99
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
100
|
+
robot=robot, name="my_movement_sensor")
|
|
101
|
+
|
|
102
|
+
# Get the current linear velocity of the movement sensor.
|
|
103
|
+
lin_vel = await my_movement_sensor.get_linear_velocity()
|
|
104
|
+
|
|
72
105
|
Returns:
|
|
73
106
|
Vector3: The linear velocity in m/sec
|
|
107
|
+
|
|
108
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getlinearvelocity>`_.
|
|
74
109
|
"""
|
|
75
110
|
...
|
|
76
111
|
|
|
@@ -78,8 +113,21 @@ class MovementSensor(Sensor):
|
|
|
78
113
|
async def get_angular_velocity(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Vector3:
|
|
79
114
|
"""Get the current angular velocity as a ``Vector3`` with x, y, and z axes represented in degrees/sec
|
|
80
115
|
|
|
116
|
+
::
|
|
117
|
+
|
|
118
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
119
|
+
robot=robot, name="my_movement_sensor")
|
|
120
|
+
|
|
121
|
+
# Get the current angular velocity of the movement sensor.
|
|
122
|
+
ang_vel = await my_movement_sensor.get_angular_velocity()
|
|
123
|
+
|
|
124
|
+
# Get the y component of angular velocity.
|
|
125
|
+
y_ang_vel = ang_vel.y
|
|
126
|
+
|
|
81
127
|
Returns:
|
|
82
128
|
Vector3: The angular velocity in degrees/sec
|
|
129
|
+
|
|
130
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getangularvelocity>`_.
|
|
83
131
|
"""
|
|
84
132
|
...
|
|
85
133
|
|
|
@@ -89,8 +137,21 @@ class MovementSensor(Sensor):
|
|
|
89
137
|
) -> Vector3:
|
|
90
138
|
"""Get the current linear acceleration as a ``Vector3`` with x, y, and z axes represented in m/sec^2
|
|
91
139
|
|
|
140
|
+
::
|
|
141
|
+
|
|
142
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
143
|
+
robot=robot, name="my_movement_sensor")
|
|
144
|
+
|
|
145
|
+
# Get the current linear acceleration of the movement sensor.
|
|
146
|
+
lin_accel = await my_movement_sensor.get_linear_acceleration()
|
|
147
|
+
|
|
148
|
+
# Get the x component of linear acceleration.
|
|
149
|
+
x_lin_accel = lin_accel.x
|
|
150
|
+
|
|
92
151
|
Returns:
|
|
93
152
|
Vector3: The linear acceleration in m/sec^2
|
|
153
|
+
|
|
154
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getlinearacceleration>`_.
|
|
94
155
|
"""
|
|
95
156
|
...
|
|
96
157
|
|
|
@@ -98,8 +159,18 @@ class MovementSensor(Sensor):
|
|
|
98
159
|
async def get_compass_heading(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> float:
|
|
99
160
|
"""Get the current compass heading in degrees
|
|
100
161
|
|
|
162
|
+
::
|
|
163
|
+
|
|
164
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
165
|
+
robot=robot, name="my_movement_sensor")
|
|
166
|
+
|
|
167
|
+
# Get the current compass heading of the movement sensor.
|
|
168
|
+
heading = await my_movement_sensor.get_compass_heading()
|
|
169
|
+
|
|
101
170
|
Returns:
|
|
102
171
|
float: The compass heading in degrees
|
|
172
|
+
|
|
173
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getcompassheading>`_.
|
|
103
174
|
"""
|
|
104
175
|
...
|
|
105
176
|
|
|
@@ -107,8 +178,18 @@ class MovementSensor(Sensor):
|
|
|
107
178
|
async def get_orientation(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Orientation:
|
|
108
179
|
"""Get the current orientation
|
|
109
180
|
|
|
181
|
+
::
|
|
182
|
+
|
|
183
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
184
|
+
robot=robot, name="my_movement_sensor")
|
|
185
|
+
|
|
186
|
+
# Get the current orientation vector of the movement sensor.
|
|
187
|
+
orientation = await my_movement_sensor.get_orientation()
|
|
188
|
+
|
|
110
189
|
Returns:
|
|
111
190
|
Orientation: The orientation
|
|
191
|
+
|
|
192
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getorientation>`_.
|
|
112
193
|
"""
|
|
113
194
|
...
|
|
114
195
|
|
|
@@ -116,69 +197,57 @@ class MovementSensor(Sensor):
|
|
|
116
197
|
async def get_properties(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Properties:
|
|
117
198
|
"""Get the supported properties of this sensor
|
|
118
199
|
|
|
200
|
+
::
|
|
201
|
+
|
|
202
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
203
|
+
robot=robot, name="my_movement_sensor")
|
|
204
|
+
|
|
205
|
+
# Get the supported properties of the movement sensor.
|
|
206
|
+
properties = await my_movement_sensor.get_properties()
|
|
207
|
+
|
|
119
208
|
Returns:
|
|
120
209
|
MovementSensor.Properties: The properties
|
|
210
|
+
|
|
211
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getproperties>`_.
|
|
121
212
|
"""
|
|
122
213
|
...
|
|
123
214
|
|
|
124
215
|
@abc.abstractmethod
|
|
125
|
-
async def get_accuracy(
|
|
126
|
-
self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
|
|
127
|
-
) -> Mapping[str, float]:
|
|
216
|
+
async def get_accuracy(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Accuracy:
|
|
128
217
|
"""Get the accuracy of the various sensors
|
|
129
218
|
|
|
219
|
+
::
|
|
220
|
+
|
|
221
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
222
|
+
robot=robot, name="my_movement_sensor")
|
|
223
|
+
|
|
224
|
+
# Get the accuracy of the movement sensor.
|
|
225
|
+
accuracy = await my_movement_sensor.get_accuracy()
|
|
226
|
+
|
|
130
227
|
Returns:
|
|
131
|
-
|
|
228
|
+
MovementSensor.Accuracy: The accuracies of the movement sensor
|
|
229
|
+
|
|
230
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getaccuracy>`_.
|
|
132
231
|
"""
|
|
133
232
|
...
|
|
134
233
|
|
|
135
|
-
async def get_readings(
|
|
234
|
+
async def get_readings(
|
|
235
|
+
self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
|
|
236
|
+
) -> Mapping[str, SensorReading]:
|
|
136
237
|
"""Obtain the measurements/data specific to this sensor.
|
|
137
238
|
If a sensor is not configured to have a measurement or fails to read a piece of data, it will not appear in the readings dictionary.
|
|
138
239
|
|
|
240
|
+
::
|
|
241
|
+
|
|
242
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
243
|
+
robot=robot, name="my_movement_sensor")
|
|
244
|
+
|
|
245
|
+
# Get the latest readings from the movement sensor.
|
|
246
|
+
readings = await my_movement_sensor.get_readings()
|
|
247
|
+
|
|
139
248
|
Returns:
|
|
140
|
-
Mapping[str, Any]: The readings for the MovementSensor
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
altitude: float,
|
|
144
|
-
linear_velocity: Vector3,
|
|
145
|
-
angular_velocity: Vector3,
|
|
146
|
-
linear_acceleration: Vector3,
|
|
147
|
-
compass: float,
|
|
148
|
-
orientation: Orientation,
|
|
149
|
-
}
|
|
249
|
+
Mapping[str, Any]: The readings for the MovementSensor. Can be of any type.
|
|
250
|
+
|
|
251
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getreadings>`_.
|
|
150
252
|
"""
|
|
151
|
-
|
|
152
|
-
self.get_position(extra=extra, timeout=timeout),
|
|
153
|
-
self.get_linear_velocity(extra=extra, timeout=timeout),
|
|
154
|
-
self.get_angular_velocity(extra=extra, timeout=timeout),
|
|
155
|
-
self.get_linear_acceleration(extra=extra, timeout=timeout),
|
|
156
|
-
self.get_compass_heading(extra=extra, timeout=timeout),
|
|
157
|
-
self.get_orientation(extra=extra, timeout=timeout),
|
|
158
|
-
return_exceptions=True,
|
|
159
|
-
)
|
|
160
|
-
|
|
161
|
-
readings = {}
|
|
162
|
-
|
|
163
|
-
# Add returned value to the readings dictionary if value is of expected type; omit if unimplemented.
|
|
164
|
-
def add_reading(name: str, reading, returntype: List) -> None:
|
|
165
|
-
possible_error_types = (NotImplementedError, MethodNotImplementedError, NotSupportedError)
|
|
166
|
-
if type(reading) in returntype:
|
|
167
|
-
if name == "position":
|
|
168
|
-
readings["position"] = reading[0]
|
|
169
|
-
readings["altitude"] = reading[1]
|
|
170
|
-
else:
|
|
171
|
-
readings[name] = reading
|
|
172
|
-
return
|
|
173
|
-
elif isinstance(reading, possible_error_types) or (isinstance(reading, GRPCError) and "Unimplemented" in str(reading.message)):
|
|
174
|
-
return
|
|
175
|
-
raise reading
|
|
176
|
-
|
|
177
|
-
add_reading("position", pos, [tuple])
|
|
178
|
-
add_reading("linear_velocity", lv, [Vector3])
|
|
179
|
-
add_reading("angular_velocity", av, [Vector3])
|
|
180
|
-
add_reading("linear_acceleration", la, [Vector3])
|
|
181
|
-
add_reading("compass", comp, [float, int])
|
|
182
|
-
add_reading("orientation", orient, [Orientation])
|
|
183
|
-
|
|
184
|
-
return readings
|
|
253
|
+
...
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
from grpclib.server import Stream
|
|
2
2
|
|
|
3
3
|
from viam.components.movement_sensor.movement_sensor import MovementSensor
|
|
4
|
-
from viam.
|
|
5
|
-
|
|
4
|
+
from viam.proto.common import (
|
|
5
|
+
DoCommandRequest,
|
|
6
|
+
DoCommandResponse,
|
|
7
|
+
GetGeometriesRequest,
|
|
8
|
+
GetGeometriesResponse,
|
|
9
|
+
GetReadingsRequest,
|
|
10
|
+
GetReadingsResponse,
|
|
11
|
+
)
|
|
6
12
|
from viam.proto.component.movementsensor import (
|
|
7
13
|
GetAccuracyRequest,
|
|
8
14
|
GetAccuracyResponse,
|
|
@@ -23,7 +29,7 @@ from viam.proto.component.movementsensor import (
|
|
|
23
29
|
MovementSensorServiceBase,
|
|
24
30
|
)
|
|
25
31
|
from viam.resource.rpc_service_base import ResourceRPCServiceBase
|
|
26
|
-
from viam.utils import dict_to_struct, struct_to_dict
|
|
32
|
+
from viam.utils import dict_to_struct, sensor_readings_native_to_value, struct_to_dict
|
|
27
33
|
|
|
28
34
|
|
|
29
35
|
class MovementSensorRPCService(MovementSensorServiceBase, ResourceRPCServiceBase[MovementSensor]):
|
|
@@ -37,10 +43,7 @@ class MovementSensorRPCService(MovementSensorServiceBase, ResourceRPCServiceBase
|
|
|
37
43
|
request = await stream.recv_message()
|
|
38
44
|
assert request is not None
|
|
39
45
|
name = request.name
|
|
40
|
-
|
|
41
|
-
sensor = self.get_resource(name)
|
|
42
|
-
except ResourceNotFoundError as e:
|
|
43
|
-
raise e.grpc_error
|
|
46
|
+
sensor = self.get_resource(name)
|
|
44
47
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
45
48
|
velocity = await sensor.get_linear_velocity(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
46
49
|
response = GetLinearVelocityResponse(linear_velocity=velocity)
|
|
@@ -50,10 +53,7 @@ class MovementSensorRPCService(MovementSensorServiceBase, ResourceRPCServiceBase
|
|
|
50
53
|
request = await stream.recv_message()
|
|
51
54
|
assert request is not None
|
|
52
55
|
name = request.name
|
|
53
|
-
|
|
54
|
-
sensor = self.get_resource(name)
|
|
55
|
-
except ResourceNotFoundError as e:
|
|
56
|
-
raise e.grpc_error
|
|
56
|
+
sensor = self.get_resource(name)
|
|
57
57
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
58
58
|
velocity = await sensor.get_angular_velocity(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
59
59
|
response = GetAngularVelocityResponse(angular_velocity=velocity)
|
|
@@ -63,10 +63,7 @@ class MovementSensorRPCService(MovementSensorServiceBase, ResourceRPCServiceBase
|
|
|
63
63
|
request = await stream.recv_message()
|
|
64
64
|
assert request is not None
|
|
65
65
|
name = request.name
|
|
66
|
-
|
|
67
|
-
sensor = self.get_resource(name)
|
|
68
|
-
except ResourceNotFoundError as e:
|
|
69
|
-
raise e.grpc_error
|
|
66
|
+
sensor = self.get_resource(name)
|
|
70
67
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
71
68
|
acceleration = await sensor.get_linear_acceleration(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
72
69
|
response = GetLinearAccelerationResponse(linear_acceleration=acceleration)
|
|
@@ -76,10 +73,7 @@ class MovementSensorRPCService(MovementSensorServiceBase, ResourceRPCServiceBase
|
|
|
76
73
|
request = await stream.recv_message()
|
|
77
74
|
assert request is not None
|
|
78
75
|
name = request.name
|
|
79
|
-
|
|
80
|
-
sensor = self.get_resource(name)
|
|
81
|
-
except ResourceNotFoundError as e:
|
|
82
|
-
raise e.grpc_error
|
|
76
|
+
sensor = self.get_resource(name)
|
|
83
77
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
84
78
|
heading = await sensor.get_compass_heading(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
85
79
|
response = GetCompassHeadingResponse(value=heading)
|
|
@@ -89,10 +83,7 @@ class MovementSensorRPCService(MovementSensorServiceBase, ResourceRPCServiceBase
|
|
|
89
83
|
request = await stream.recv_message()
|
|
90
84
|
assert request is not None
|
|
91
85
|
name = request.name
|
|
92
|
-
|
|
93
|
-
sensor = self.get_resource(name)
|
|
94
|
-
except ResourceNotFoundError as e:
|
|
95
|
-
raise e.grpc_error
|
|
86
|
+
sensor = self.get_resource(name)
|
|
96
87
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
97
88
|
orientation = await sensor.get_orientation(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
98
89
|
response = GetOrientationResponse(orientation=orientation)
|
|
@@ -102,10 +93,7 @@ class MovementSensorRPCService(MovementSensorServiceBase, ResourceRPCServiceBase
|
|
|
102
93
|
request = await stream.recv_message()
|
|
103
94
|
assert request is not None
|
|
104
95
|
name = request.name
|
|
105
|
-
|
|
106
|
-
sensor = self.get_resource(name)
|
|
107
|
-
except ResourceNotFoundError as e:
|
|
108
|
-
raise e.grpc_error
|
|
96
|
+
sensor = self.get_resource(name)
|
|
109
97
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
110
98
|
point, alt = await sensor.get_position(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
111
99
|
response = GetPositionResponse(coordinate=point, altitude_m=alt)
|
|
@@ -115,10 +103,7 @@ class MovementSensorRPCService(MovementSensorServiceBase, ResourceRPCServiceBase
|
|
|
115
103
|
request = await stream.recv_message()
|
|
116
104
|
assert request is not None
|
|
117
105
|
name = request.name
|
|
118
|
-
|
|
119
|
-
sensor = self.get_resource(name)
|
|
120
|
-
except ResourceNotFoundError as e:
|
|
121
|
-
raise e.grpc_error
|
|
106
|
+
sensor = self.get_resource(name)
|
|
122
107
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
123
108
|
response = await sensor.get_properties(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
124
109
|
await stream.send_message(response.proto)
|
|
@@ -127,23 +112,35 @@ class MovementSensorRPCService(MovementSensorServiceBase, ResourceRPCServiceBase
|
|
|
127
112
|
request = await stream.recv_message()
|
|
128
113
|
assert request is not None
|
|
129
114
|
name = request.name
|
|
130
|
-
|
|
131
|
-
sensor = self.get_resource(name)
|
|
132
|
-
except ResourceNotFoundError as e:
|
|
133
|
-
raise e.grpc_error
|
|
115
|
+
sensor = self.get_resource(name)
|
|
134
116
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
135
117
|
accuracy = await sensor.get_accuracy(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
136
|
-
|
|
137
|
-
await stream.send_message(response)
|
|
118
|
+
await stream.send_message(accuracy)
|
|
138
119
|
|
|
139
120
|
async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
|
|
140
121
|
request = await stream.recv_message()
|
|
141
122
|
assert request is not None
|
|
142
|
-
|
|
143
|
-
sensor = self.get_resource(request.name)
|
|
144
|
-
except ResourceNotFoundError as e:
|
|
145
|
-
raise e.grpc_error
|
|
123
|
+
sensor = self.get_resource(request.name)
|
|
146
124
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
147
125
|
result = await sensor.do_command(command=struct_to_dict(request.command), timeout=timeout, metadata=stream.metadata)
|
|
148
126
|
response = DoCommandResponse(result=dict_to_struct(result))
|
|
149
127
|
await stream.send_message(response)
|
|
128
|
+
|
|
129
|
+
async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
|
|
130
|
+
request = await stream.recv_message()
|
|
131
|
+
assert request is not None
|
|
132
|
+
sensor = self.get_resource(request.name)
|
|
133
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
134
|
+
geometries = await sensor.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
|
|
135
|
+
response = GetGeometriesResponse(geometries=geometries)
|
|
136
|
+
await stream.send_message(response)
|
|
137
|
+
|
|
138
|
+
async def GetReadings(self, stream: Stream[GetReadingsRequest, GetReadingsResponse]) -> None:
|
|
139
|
+
request = await stream.recv_message()
|
|
140
|
+
assert request is not None
|
|
141
|
+
name = request.name
|
|
142
|
+
sensor = self.get_resource(name)
|
|
143
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
144
|
+
readings = await sensor.get_readings(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
145
|
+
response = GetReadingsResponse(readings=sensor_readings_native_to_value(readings))
|
|
146
|
+
await stream.send_message(response)
|
|
@@ -2,10 +2,10 @@ from typing import Any, Dict, List, Mapping, Optional
|
|
|
2
2
|
|
|
3
3
|
from grpclib.client import Channel
|
|
4
4
|
|
|
5
|
-
from viam.proto.common import DoCommandRequest, DoCommandResponse, PoseInFrame
|
|
5
|
+
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, PoseInFrame
|
|
6
6
|
from viam.proto.component.posetracker import GetPosesRequest, GetPosesResponse, PoseTrackerServiceStub
|
|
7
7
|
from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
|
|
8
|
-
from viam.utils import ValueTypes, dict_to_struct, struct_to_dict
|
|
8
|
+
from viam.utils import ValueTypes, dict_to_struct, get_geometries, struct_to_dict
|
|
9
9
|
|
|
10
10
|
from .pose_tracker import PoseTracker
|
|
11
11
|
|
|
@@ -26,14 +26,25 @@ class PoseTrackerClient(PoseTracker, ReconfigurableResourceRPCClientBase):
|
|
|
26
26
|
*,
|
|
27
27
|
extra: Optional[Mapping[str, Any]] = None,
|
|
28
28
|
timeout: Optional[float] = None,
|
|
29
|
+
**kwargs,
|
|
29
30
|
) -> Dict[str, PoseInFrame]:
|
|
30
|
-
|
|
31
|
-
extra = {}
|
|
31
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
32
32
|
request = GetPosesRequest(name=self.name, body_names=body_names, extra=dict_to_struct(extra))
|
|
33
|
-
response: GetPosesResponse = await self.client.GetPoses(request, timeout=timeout)
|
|
33
|
+
response: GetPosesResponse = await self.client.GetPoses(request, timeout=timeout, metadata=md)
|
|
34
34
|
return {key: response.body_poses[key] for key in response.body_poses.keys()}
|
|
35
35
|
|
|
36
|
-
async def do_command(
|
|
36
|
+
async def do_command(
|
|
37
|
+
self,
|
|
38
|
+
command: Mapping[str, ValueTypes],
|
|
39
|
+
*,
|
|
40
|
+
timeout: Optional[float] = None,
|
|
41
|
+
**kwargs,
|
|
42
|
+
) -> Mapping[str, ValueTypes]:
|
|
43
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
37
44
|
request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
|
|
38
|
-
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout)
|
|
45
|
+
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
|
|
39
46
|
return struct_to_dict(response.result)
|
|
47
|
+
|
|
48
|
+
async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
|
|
49
|
+
md = kwargs.get("metadata", self.Metadata())
|
|
50
|
+
return await get_geometries(self.client, self.name, extra, timeout, md)
|
|
@@ -2,7 +2,7 @@ import abc
|
|
|
2
2
|
from typing import Any, Dict, Final, List, Mapping, Optional
|
|
3
3
|
|
|
4
4
|
from viam.proto.common import PoseInFrame
|
|
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
|
|
|
@@ -16,7 +16,9 @@ class PoseTracker(ComponentBase):
|
|
|
16
16
|
overridden, it must call the ``super().__init__()`` function.
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
|
|
20
|
+
RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "pose_tracker"
|
|
21
|
+
)
|
|
20
22
|
|
|
21
23
|
@abc.abstractmethod
|
|
22
24
|
async def get_poses(
|
|
@@ -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.posetracker import GetPosesRequest, GetPosesResponse, PoseTrackerServiceBase
|
|
6
5
|
from viam.resource.rpc_service_base import ResourceRPCServiceBase
|
|
7
6
|
from viam.utils import dict_to_struct, struct_to_dict
|
|
@@ -20,10 +19,7 @@ class PoseTrackerRPCService(PoseTrackerServiceBase, ResourceRPCServiceBase[PoseT
|
|
|
20
19
|
request = await stream.recv_message()
|
|
21
20
|
assert request is not None
|
|
22
21
|
name = request.name
|
|
23
|
-
|
|
24
|
-
pose_tracker = self.get_resource(name)
|
|
25
|
-
except ResourceNotFoundError as e:
|
|
26
|
-
raise e.grpc_error
|
|
22
|
+
pose_tracker = self.get_resource(name)
|
|
27
23
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
28
24
|
poses = await pose_tracker.get_poses(
|
|
29
25
|
list(request.body_names), extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata
|
|
@@ -33,11 +29,17 @@ class PoseTrackerRPCService(PoseTrackerServiceBase, ResourceRPCServiceBase[PoseT
|
|
|
33
29
|
async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
|
|
34
30
|
request = await stream.recv_message()
|
|
35
31
|
assert request is not None
|
|
36
|
-
|
|
37
|
-
pose_tracker = self.get_resource(request.name)
|
|
38
|
-
except ResourceNotFoundError as e:
|
|
39
|
-
raise e.grpc_error
|
|
32
|
+
pose_tracker = self.get_resource(request.name)
|
|
40
33
|
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
41
34
|
result = await pose_tracker.do_command(command=struct_to_dict(request.command), timeout=timeout, metadata=stream.metadata)
|
|
42
35
|
response = DoCommandResponse(result=dict_to_struct(result))
|
|
43
36
|
await stream.send_message(response)
|
|
37
|
+
|
|
38
|
+
async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
|
|
39
|
+
request = await stream.recv_message()
|
|
40
|
+
assert request is not None
|
|
41
|
+
pose_tracker = self.get_resource(request.name)
|
|
42
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
43
|
+
geometries = await pose_tracker.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
|
|
44
|
+
response = GetGeometriesResponse(geometries=geometries)
|
|
45
|
+
await stream.send_message(response)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from viam.resource.registry import Registry, ResourceRegistration
|
|
2
|
+
|
|
3
|
+
from .client import PowerSensorClient
|
|
4
|
+
from .power_sensor import PowerSensor
|
|
5
|
+
from .service import PowerSensorRPCService
|
|
6
|
+
|
|
7
|
+
__all__ = [
|
|
8
|
+
"PowerSensor",
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
Registry.register_api(
|
|
12
|
+
ResourceRegistration(
|
|
13
|
+
PowerSensor,
|
|
14
|
+
PowerSensorRPCService,
|
|
15
|
+
lambda name, channel: PowerSensorClient(name, channel),
|
|
16
|
+
)
|
|
17
|
+
)
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
from typing import Any, Dict, Mapping, Optional, Tuple
|
|
2
|
+
|
|
3
|
+
from grpclib.client import Channel
|
|
4
|
+
|
|
5
|
+
from viam.components.power_sensor.power_sensor import PowerSensor
|
|
6
|
+
from viam.proto.common import DoCommandRequest, DoCommandResponse, GetReadingsRequest, GetReadingsResponse
|
|
7
|
+
from viam.proto.component.powersensor import (
|
|
8
|
+
GetCurrentRequest,
|
|
9
|
+
GetCurrentResponse,
|
|
10
|
+
GetPowerRequest,
|
|
11
|
+
GetPowerResponse,
|
|
12
|
+
GetVoltageRequest,
|
|
13
|
+
GetVoltageResponse,
|
|
14
|
+
PowerSensorServiceStub,
|
|
15
|
+
)
|
|
16
|
+
from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
|
|
17
|
+
from viam.utils import SensorReading, ValueTypes, dict_to_struct, sensor_readings_value_to_native, struct_to_dict
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class PowerSensorClient(PowerSensor, ReconfigurableResourceRPCClientBase):
|
|
21
|
+
"""gRPC client for the PowerSensor component."""
|
|
22
|
+
|
|
23
|
+
def __init__(self, name: str, channel: Channel):
|
|
24
|
+
self.channel = channel
|
|
25
|
+
self.client = PowerSensorServiceStub(channel)
|
|
26
|
+
super().__init__(name)
|
|
27
|
+
|
|
28
|
+
async def get_voltage(
|
|
29
|
+
self,
|
|
30
|
+
*,
|
|
31
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
32
|
+
timeout: Optional[float] = None,
|
|
33
|
+
**kwargs,
|
|
34
|
+
) -> Tuple[float, bool]:
|
|
35
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
36
|
+
request = GetVoltageRequest(name=self.name, extra=dict_to_struct(extra))
|
|
37
|
+
response: GetVoltageResponse = await self.client.GetVoltage(request, timeout=timeout, metadata=md)
|
|
38
|
+
return response.volts, response.is_ac
|
|
39
|
+
|
|
40
|
+
async def get_current(
|
|
41
|
+
self,
|
|
42
|
+
*,
|
|
43
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
44
|
+
timeout: Optional[float] = None,
|
|
45
|
+
**kwargs,
|
|
46
|
+
) -> Tuple[float, bool]:
|
|
47
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
48
|
+
request = GetCurrentRequest(name=self.name, extra=dict_to_struct(extra))
|
|
49
|
+
response: GetCurrentResponse = await self.client.GetCurrent(request, timeout=timeout, metadata=md)
|
|
50
|
+
return response.amperes, response.is_ac
|
|
51
|
+
|
|
52
|
+
async def get_power(
|
|
53
|
+
self,
|
|
54
|
+
*,
|
|
55
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
56
|
+
timeout: Optional[float] = None,
|
|
57
|
+
**kwargs,
|
|
58
|
+
) -> float:
|
|
59
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
60
|
+
request = GetPowerRequest(name=self.name, extra=dict_to_struct(extra))
|
|
61
|
+
response: GetPowerResponse = await self.client.GetPower(request, timeout=timeout, metadata=md)
|
|
62
|
+
return response.watts
|
|
63
|
+
|
|
64
|
+
async def get_readings(
|
|
65
|
+
self,
|
|
66
|
+
*,
|
|
67
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
68
|
+
timeout: Optional[float] = None,
|
|
69
|
+
**kwargs,
|
|
70
|
+
) -> Mapping[str, SensorReading]:
|
|
71
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
72
|
+
request = GetReadingsRequest(name=self.name, extra=dict_to_struct(extra))
|
|
73
|
+
response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout, metadata=md)
|
|
74
|
+
return sensor_readings_value_to_native(response.readings)
|
|
75
|
+
|
|
76
|
+
async def do_command(
|
|
77
|
+
self,
|
|
78
|
+
command: Mapping[str, ValueTypes],
|
|
79
|
+
*,
|
|
80
|
+
timeout: Optional[float] = None,
|
|
81
|
+
**kwargs,
|
|
82
|
+
) -> Mapping[str, ValueTypes]:
|
|
83
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
84
|
+
request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
|
|
85
|
+
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
|
|
86
|
+
return struct_to_dict(response.result)
|