viam-sdk 0.45.2__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of viam-sdk might be problematic. Click here for more details.
- viam/__init__.py +71 -0
- viam/app/__init__.py +0 -0
- viam/app/_logs.py +34 -0
- viam/app/app_client.py +2525 -0
- viam/app/billing_client.py +143 -0
- viam/app/data_client.py +1715 -0
- viam/app/ml_training_client.py +251 -0
- viam/app/provisioning_client.py +95 -0
- viam/app/viam_client.py +260 -0
- viam/components/__init__.py +0 -0
- viam/components/arm/__init__.py +16 -0
- viam/components/arm/arm.py +223 -0
- viam/components/arm/client.py +124 -0
- viam/components/arm/service.py +123 -0
- viam/components/audio_input/__init__.py +18 -0
- viam/components/audio_input/audio_input.py +81 -0
- viam/components/audio_input/client.py +70 -0
- viam/components/audio_input/service.py +114 -0
- viam/components/base/__init__.py +13 -0
- viam/components/base/base.py +260 -0
- viam/components/base/client.py +153 -0
- viam/components/base/service.py +138 -0
- viam/components/board/__init__.py +9 -0
- viam/components/board/board.py +414 -0
- viam/components/board/client.py +241 -0
- viam/components/board/service.py +223 -0
- 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 +22 -0
- viam/components/camera/camera.py +138 -0
- viam/components/camera/client.py +98 -0
- viam/components/camera/service.py +105 -0
- viam/components/component_base.py +65 -0
- viam/components/encoder/__init__.py +18 -0
- viam/components/encoder/client.py +83 -0
- viam/components/encoder/encoder.py +118 -0
- viam/components/encoder/service.py +72 -0
- viam/components/gantry/__init__.py +11 -0
- viam/components/gantry/client.py +115 -0
- viam/components/gantry/gantry.py +156 -0
- viam/components/gantry/service.py +113 -0
- viam/components/generic/__init__.py +18 -0
- viam/components/generic/client.py +62 -0
- viam/components/generic/generic.py +76 -0
- viam/components/generic/service.py +40 -0
- viam/components/gripper/__init__.py +11 -0
- viam/components/gripper/client.py +85 -0
- viam/components/gripper/gripper.py +114 -0
- viam/components/gripper/service.py +81 -0
- viam/components/input/__init__.py +15 -0
- viam/components/input/client.py +194 -0
- viam/components/input/input.py +297 -0
- viam/components/input/service.py +175 -0
- viam/components/motor/__init__.py +11 -0
- viam/components/motor/client.py +168 -0
- viam/components/motor/motor.py +301 -0
- viam/components/motor/service.py +150 -0
- viam/components/movement_sensor/__init__.py +21 -0
- viam/components/movement_sensor/client.py +161 -0
- viam/components/movement_sensor/movement_sensor.py +253 -0
- viam/components/movement_sensor/service.py +146 -0
- viam/components/pose_tracker/__init__.py +17 -0
- viam/components/pose_tracker/client.py +50 -0
- viam/components/pose_tracker/pose_tracker.py +40 -0
- viam/components/pose_tracker/service.py +45 -0
- 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 +18 -0
- viam/components/sensor/client.py +49 -0
- viam/components/sensor/sensor.py +48 -0
- viam/components/sensor/service.py +51 -0
- viam/components/servo/__init__.py +11 -0
- viam/components/servo/client.py +86 -0
- viam/components/servo/service.py +80 -0
- viam/components/servo/servo.py +114 -0
- 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 +95 -0
- viam/errors.py +105 -0
- viam/gen/__init__.py +0 -0
- viam/gen/app/__init__.py +0 -0
- viam/gen/app/agent/__init__.py +0 -0
- viam/gen/app/agent/v1/__init__.py +0 -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/__init__.py +0 -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/__init__.py +0 -0
- viam/gen/app/data/v1/__init__.py +0 -0
- viam/gen/app/data/v1/data_grpc.py +206 -0
- viam/gen/app/data/v1/data_pb2.py +178 -0
- viam/gen/app/data/v1/data_pb2.pyi +1485 -0
- 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 +56 -0
- viam/gen/app/datapipelines/v1/data_pipelines_pb2.pyi +370 -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 +60 -0
- viam/gen/app/dataset/v1/dataset_pb2.py +40 -0
- viam/gen/app/dataset/v1/dataset_pb2.pyi +179 -0
- viam/gen/app/datasync/__init__.py +0 -0
- viam/gen/app/datasync/v1/__init__.py +0 -0
- viam/gen/app/datasync/v1/data_sync_grpc.py +47 -0
- viam/gen/app/datasync/v1/data_sync_pb2.py +70 -0
- viam/gen/app/datasync/v1/data_sync_pb2.pyi +425 -0
- 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/__init__.py +0 -0
- viam/gen/app/mltraining/v1/__init__.py +0 -0
- viam/gen/app/mltraining/v1/ml_training_grpc.py +78 -0
- viam/gen/app/mltraining/v1/ml_training_pb2.py +124 -0
- viam/gen/app/mltraining/v1/ml_training_pb2.pyi +415 -0
- viam/gen/app/packages/__init__.py +0 -0
- viam/gen/app/packages/v1/__init__.py +0 -0
- viam/gen/app/packages/v1/packages_grpc.py +54 -0
- viam/gen/app/packages/v1/packages_pb2.py +52 -0
- viam/gen/app/packages/v1/packages_pb2.pyi +311 -0
- viam/gen/app/v1/__init__.py +0 -0
- viam/gen/app/v1/app_grpc.py +863 -0
- viam/gen/app/v1/app_pb2.py +649 -0
- viam/gen/app/v1/app_pb2.pyi +5279 -0
- viam/gen/app/v1/billing_grpc.py +76 -0
- viam/gen/app/v1/billing_pb2.py +92 -0
- viam/gen/app/v1/billing_pb2.pyi +463 -0
- 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 +55 -0
- viam/gen/app/v1/robot_pb2.py +127 -0
- viam/gen/app/v1/robot_pb2.pyi +1202 -0
- viam/gen/common/__init__.py +0 -0
- viam/gen/common/v1/__init__.py +0 -0
- viam/gen/common/v1/common_grpc.py +0 -0
- viam/gen/common/v1/common_pb2.py +78 -0
- viam/gen/common/v1/common_pb2.pyi +687 -0
- viam/gen/component/__init__.py +0 -0
- viam/gen/component/arm/__init__.py +0 -0
- viam/gen/component/arm/v1/__init__.py +0 -0
- viam/gen/component/arm/v1/arm_grpc.py +102 -0
- viam/gen/component/arm/v1/arm_pb2.py +74 -0
- viam/gen/component/arm/v1/arm_pb2.pyi +344 -0
- viam/gen/component/audioinput/__init__.py +0 -0
- viam/gen/component/audioinput/v1/__init__.py +0 -0
- viam/gen/component/audioinput/v1/audioinput_grpc.py +63 -0
- viam/gen/component/audioinput/v1/audioinput_pb2.py +45 -0
- viam/gen/component/audioinput/v1/audioinput_pb2.pyi +179 -0
- viam/gen/component/base/__init__.py +0 -0
- viam/gen/component/base/v1/__init__.py +0 -0
- viam/gen/component/base/v1/base_grpc.py +94 -0
- viam/gen/component/base/v1/base_pb2.py +66 -0
- viam/gen/component/base/v1/base_pb2.pyi +258 -0
- viam/gen/component/board/__init__.py +0 -0
- viam/gen/component/board/v1/__init__.py +0 -0
- viam/gen/component/board/v1/board_grpc.py +127 -0
- viam/gen/component/board/v1/board_pb2.py +103 -0
- viam/gen/component/board/v1/board_pb2.pyi +496 -0
- 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/__init__.py +0 -0
- viam/gen/component/camera/v1/__init__.py +0 -0
- viam/gen/component/camera/v1/camera_grpc.py +79 -0
- viam/gen/component/camera/v1/camera_pb2.py +67 -0
- viam/gen/component/camera/v1/camera_pb2.pyi +373 -0
- viam/gen/component/encoder/__init__.py +0 -0
- viam/gen/component/encoder/v1/__init__.py +0 -0
- viam/gen/component/encoder/v1/encoder_grpc.py +62 -0
- viam/gen/component/encoder/v1/encoder_pb2.py +44 -0
- viam/gen/component/encoder/v1/encoder_pb2.pyi +147 -0
- viam/gen/component/gantry/__init__.py +0 -0
- viam/gen/component/gantry/v1/__init__.py +0 -0
- viam/gen/component/gantry/v1/gantry_grpc.py +86 -0
- viam/gen/component/gantry/v1/gantry_pb2.py +62 -0
- viam/gen/component/gantry/v1/gantry_pb2.pyi +239 -0
- viam/gen/component/generic/__init__.py +0 -0
- viam/gen/component/generic/v1/__init__.py +0 -0
- viam/gen/component/generic/v1/generic_grpc.py +37 -0
- viam/gen/component/generic/v1/generic_pb2.py +23 -0
- viam/gen/component/generic/v1/generic_pb2.pyi +6 -0
- viam/gen/component/gripper/__init__.py +0 -0
- viam/gen/component/gripper/v1/__init__.py +0 -0
- viam/gen/component/gripper/v1/gripper_grpc.py +70 -0
- viam/gen/component/gripper/v1/gripper_pb2.py +48 -0
- viam/gen/component/gripper/v1/gripper_pb2.pyi +137 -0
- viam/gen/component/inputcontroller/__init__.py +0 -0
- viam/gen/component/inputcontroller/v1/__init__.py +0 -0
- viam/gen/component/inputcontroller/v1/input_controller_grpc.py +71 -0
- viam/gen/component/inputcontroller/v1/input_controller_pb2.py +55 -0
- viam/gen/component/inputcontroller/v1/input_controller_pb2.pyi +243 -0
- viam/gen/component/motor/__init__.py +0 -0
- viam/gen/component/motor/v1/__init__.py +0 -0
- viam/gen/component/motor/v1/motor_grpc.py +118 -0
- viam/gen/component/motor/v1/motor_pb2.py +86 -0
- viam/gen/component/motor/v1/motor_pb2.pyi +368 -0
- viam/gen/component/movementsensor/__init__.py +0 -0
- viam/gen/component/movementsensor/v1/__init__.py +0 -0
- viam/gen/component/movementsensor/v1/movementsensor_grpc.py +110 -0
- viam/gen/component/movementsensor/v1/movementsensor_pb2.py +78 -0
- viam/gen/component/movementsensor/v1/movementsensor_pb2.pyi +384 -0
- viam/gen/component/posetracker/__init__.py +0 -0
- viam/gen/component/posetracker/v1/__init__.py +0 -0
- viam/gen/component/posetracker/v1/pose_tracker_grpc.py +46 -0
- viam/gen/component/posetracker/v1/pose_tracker_pb2.py +34 -0
- viam/gen/component/posetracker/v1/pose_tracker_pb2.pyi +79 -0
- 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/__init__.py +0 -0
- viam/gen/component/sensor/v1/__init__.py +0 -0
- viam/gen/component/sensor/v1/sensor_grpc.py +45 -0
- viam/gen/component/sensor/v1/sensor_pb2.py +25 -0
- viam/gen/component/sensor/v1/sensor_pb2.pyi +6 -0
- viam/gen/component/servo/__init__.py +0 -0
- viam/gen/component/servo/v1/__init__.py +0 -0
- viam/gen/component/servo/v1/servo_grpc.py +70 -0
- viam/gen/component/servo/v1/servo_pb2.py +50 -0
- viam/gen/component/servo/v1/servo_pb2.pyi +150 -0
- 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 +109 -0
- viam/gen/component/testecho/__init__.py +0 -0
- viam/gen/component/testecho/v1/__init__.py +0 -0
- viam/gen/component/testecho/v1/testecho_grpc.py +52 -0
- viam/gen/component/testecho/v1/testecho_pb2.py +36 -0
- viam/gen/component/testecho/v1/testecho_pb2.pyi +114 -0
- viam/gen/module/__init__.py +0 -0
- viam/gen/module/v1/__init__.py +0 -0
- viam/gen/module/v1/module_grpc.py +61 -0
- viam/gen/module/v1/module_pb2.py +43 -0
- viam/gen/module/v1/module_pb2.pyi +211 -0
- viam/gen/proto/__init__.py +0 -0
- viam/gen/proto/rpc/__init__.py +0 -0
- viam/gen/proto/rpc/examples/__init__.py +0 -0
- viam/gen/proto/rpc/examples/echo/__init__.py +0 -0
- viam/gen/proto/rpc/examples/echo/v1/__init__.py +0 -0
- viam/gen/proto/rpc/examples/echo/v1/echo_grpc.py +44 -0
- viam/gen/proto/rpc/examples/echo/v1/echo_pb2.py +32 -0
- viam/gen/proto/rpc/examples/echo/v1/echo_pb2.pyi +87 -0
- viam/gen/proto/rpc/examples/echoresource/__init__.py +0 -0
- viam/gen/proto/rpc/examples/echoresource/v1/__init__.py +0 -0
- viam/gen/proto/rpc/examples/echoresource/v1/echoresource_grpc.py +43 -0
- viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.py +29 -0
- viam/gen/proto/rpc/examples/echoresource/v1/echoresource_pb2.pyi +93 -0
- viam/gen/proto/rpc/v1/__init__.py +0 -0
- viam/gen/proto/rpc/v1/auth_grpc.py +47 -0
- viam/gen/proto/rpc/v1/auth_pb2.py +34 -0
- viam/gen/proto/rpc/v1/auth_pb2.pyi +92 -0
- viam/gen/proto/rpc/webrtc/__init__.py +0 -0
- viam/gen/proto/rpc/webrtc/v1/__init__.py +0 -0
- viam/gen/proto/rpc/webrtc/v1/grpc_grpc.py +0 -0
- viam/gen/proto/rpc/webrtc/v1/grpc_pb2.py +43 -0
- viam/gen/proto/rpc/webrtc/v1/grpc_pb2.pyi +304 -0
- viam/gen/proto/rpc/webrtc/v1/signaling_grpc.py +54 -0
- viam/gen/proto/rpc/webrtc/v1/signaling_pb2.py +70 -0
- viam/gen/proto/rpc/webrtc/v1/signaling_pb2.pyi +496 -0
- viam/gen/provisioning/__init__.py +0 -0
- viam/gen/provisioning/v1/__init__.py +0 -0
- viam/gen/provisioning/v1/provisioning_grpc.py +51 -0
- viam/gen/provisioning/v1/provisioning_pb2.py +39 -0
- viam/gen/provisioning/v1/provisioning_pb2.pyi +188 -0
- viam/gen/robot/__init__.py +0 -0
- viam/gen/robot/v1/__init__.py +0 -0
- viam/gen/robot/v1/robot_grpc.py +208 -0
- viam/gen/robot/v1/robot_pb2.py +188 -0
- viam/gen/robot/v1/robot_pb2.pyi +1020 -0
- viam/gen/service/__init__.py +0 -0
- viam/gen/service/datamanager/__init__.py +0 -0
- viam/gen/service/datamanager/v1/__init__.py +0 -0
- viam/gen/service/datamanager/v1/data_manager_grpc.py +38 -0
- viam/gen/service/datamanager/v1/data_manager_pb2.py +28 -0
- viam/gen/service/datamanager/v1/data_manager_pb2.pyi +39 -0
- 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/__init__.py +0 -0
- viam/gen/service/mlmodel/v1/__init__.py +0 -0
- viam/gen/service/mlmodel/v1/mlmodel_grpc.py +37 -0
- viam/gen/service/mlmodel/v1/mlmodel_pb2.py +83 -0
- viam/gen/service/mlmodel/v1/mlmodel_pb2.pyi +480 -0
- viam/gen/service/motion/__init__.py +0 -0
- viam/gen/service/motion/v1/__init__.py +0 -0
- viam/gen/service/motion/v1/motion_grpc.py +87 -0
- viam/gen/service/motion/v1/motion_pb2.py +97 -0
- viam/gen/service/motion/v1/motion_pb2.pyi +838 -0
- viam/gen/service/navigation/__init__.py +0 -0
- viam/gen/service/navigation/v1/__init__.py +0 -0
- viam/gen/service/navigation/v1/navigation_grpc.py +102 -0
- viam/gen/service/navigation/v1/navigation_pb2.py +84 -0
- viam/gen/service/navigation/v1/navigation_pb2.pyi +419 -0
- viam/gen/service/sensors/__init__.py +0 -0
- viam/gen/service/sensors/v1/__init__.py +0 -0
- viam/gen/service/sensors/v1/sensors_grpc.py +46 -0
- viam/gen/service/sensors/v1/sensors_pb2.py +68 -0
- viam/gen/service/sensors/v1/sensors_pb2.pyi +137 -0
- viam/gen/service/shell/__init__.py +0 -0
- viam/gen/service/shell/v1/__init__.py +0 -0
- viam/gen/service/shell/v1/shell_grpc.py +55 -0
- viam/gen/service/shell/v1/shell_pb2.py +45 -0
- viam/gen/service/shell/v1/shell_pb2.pyi +307 -0
- viam/gen/service/slam/__init__.py +0 -0
- viam/gen/service/slam/v1/__init__.py +0 -0
- viam/gen/service/slam/v1/slam_grpc.py +61 -0
- viam/gen/service/slam/v1/slam_pb2.py +51 -0
- viam/gen/service/slam/v1/slam_pb2.pyi +213 -0
- viam/gen/service/vision/__init__.py +0 -0
- viam/gen/service/vision/v1/__init__.py +0 -0
- viam/gen/service/vision/v1/vision_grpc.py +87 -0
- viam/gen/service/vision/v1/vision_pb2.py +69 -0
- viam/gen/service/vision/v1/vision_pb2.pyi +454 -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/__init__.py +0 -0
- viam/gen/tagger/v1/__init__.py +0 -0
- viam/gen/tagger/v1/tagger_grpc.py +0 -0
- viam/gen/tagger/v1/tagger_pb2.py +16 -0
- viam/gen/tagger/v1/tagger_pb2.pyi +15 -0
- viam/logging.py +216 -0
- viam/media/__init__.py +0 -0
- viam/media/audio.py +16 -0
- viam/media/utils/__init__.py +0 -0
- viam/media/utils/pil/__init__.py +51 -0
- viam/media/utils/pil/viam_rgba_plugin.py +73 -0
- viam/media/viam_rgba.py +10 -0
- viam/media/video.py +217 -0
- viam/module/__init__.py +5 -0
- viam/module/module.py +281 -0
- viam/module/service.py +66 -0
- viam/module/types.py +23 -0
- viam/operations.py +124 -0
- viam/proto/__init__.py +0 -0
- viam/proto/app/__init__.py +554 -0
- viam/proto/app/agent/__init__.py +28 -0
- viam/proto/app/billing.py +58 -0
- viam/proto/app/cloudslam/__init__.py +48 -0
- viam/proto/app/data/__init__.py +138 -0
- viam/proto/app/datapipelines/__init__.py +56 -0
- viam/proto/app/dataset/__init__.py +36 -0
- viam/proto/app/datasync/__init__.py +44 -0
- viam/proto/app/end_user.py +34 -0
- viam/proto/app/mlinference/__init__.py +15 -0
- viam/proto/app/mltraining/__init__.py +52 -0
- viam/proto/app/packages/__init__.py +38 -0
- viam/proto/app/robot.py +84 -0
- viam/proto/common/__init__.py +66 -0
- viam/proto/component/__init__.py +0 -0
- viam/proto/component/arm/__init__.py +48 -0
- viam/proto/component/audioinput/__init__.py +30 -0
- viam/proto/component/base/__init__.py +42 -0
- viam/proto/component/board/__init__.py +62 -0
- viam/proto/component/button/__init__.py +15 -0
- viam/proto/component/camera/__init__.py +46 -0
- viam/proto/component/encoder/__init__.py +28 -0
- viam/proto/component/gantry/__init__.py +40 -0
- viam/proto/component/generic/__init__.py +12 -0
- viam/proto/component/gripper/__init__.py +30 -0
- viam/proto/component/inputcontroller/__init__.py +38 -0
- viam/proto/component/motor/__init__.py +56 -0
- viam/proto/component/movementsensor/__init__.py +50 -0
- viam/proto/component/posetracker/__init__.py +19 -0
- viam/proto/component/powersensor/__init__.py +30 -0
- viam/proto/component/sensor/__init__.py +12 -0
- viam/proto/component/servo/__init__.py +32 -0
- viam/proto/component/switch/__init__.py +26 -0
- viam/proto/component/testecho/__init__.py +30 -0
- viam/proto/module/__init__.py +38 -0
- viam/proto/provisioning/__init__.py +36 -0
- viam/proto/robot/__init__.py +130 -0
- viam/proto/rpc/__init__.py +0 -0
- viam/proto/rpc/auth.py +34 -0
- viam/proto/rpc/examples/__init__.py +0 -0
- viam/proto/rpc/examples/echo/__init__.py +26 -0
- viam/proto/rpc/examples/echoresource/__init__.py +30 -0
- viam/proto/rpc/webrtc/__init__.py +0 -0
- viam/proto/rpc/webrtc/grpc.py +36 -0
- viam/proto/rpc/webrtc/signaling.py +58 -0
- viam/proto/service/__init__.py +0 -0
- viam/proto/service/datamanager/__init__.py +19 -0
- viam/proto/service/discovery/__init__.py +15 -0
- viam/proto/service/generic/__init__.py +12 -0
- viam/proto/service/mlmodel/__init__.py +54 -0
- viam/proto/service/motion/__init__.py +68 -0
- viam/proto/service/navigation/__init__.py +58 -0
- viam/proto/service/sensors/__init__.py +18 -0
- viam/proto/service/shell/__init__.py +36 -0
- viam/proto/service/slam/__init__.py +36 -0
- viam/proto/service/vision/__init__.py +46 -0
- viam/proto/stream/__init__.py +36 -0
- viam/proto/tagger/__init__.py +6 -0
- viam/py.typed +0 -0
- viam/resource/__init__.py +0 -0
- viam/resource/base.py +123 -0
- viam/resource/easy_resource.py +153 -0
- viam/resource/manager.py +126 -0
- viam/resource/registry.py +199 -0
- viam/resource/rpc_client_base.py +65 -0
- viam/resource/rpc_service_base.py +48 -0
- viam/resource/types.py +213 -0
- viam/robot/__init__.py +0 -0
- viam/robot/client.py +909 -0
- viam/robot/service.py +69 -0
- viam/rpc/__init__.py +0 -0
- viam/rpc/dial.py +420 -0
- viam/rpc/libviam_rust_utils.dll +0 -0
- viam/rpc/server.py +201 -0
- viam/rpc/signaling.py +29 -0
- viam/rpc/types.py +22 -0
- viam/services/__init__.py +0 -0
- 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 +24 -0
- viam/services/mlmodel/client.py +37 -0
- viam/services/mlmodel/mlmodel.py +78 -0
- viam/services/mlmodel/service.py +38 -0
- viam/services/mlmodel/utils.py +101 -0
- viam/services/motion/__init__.py +17 -0
- viam/services/motion/client.py +215 -0
- viam/services/motion/motion.py +378 -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 +78 -0
- viam/services/service_client_base.py +46 -0
- viam/services/slam/__init__.py +17 -0
- viam/services/slam/client.py +62 -0
- viam/services/slam/service.py +75 -0
- viam/services/slam/slam.py +111 -0
- viam/services/vision/__init__.py +15 -0
- viam/services/vision/client.py +206 -0
- viam/services/vision/service.py +146 -0
- viam/services/vision/vision.py +315 -0
- viam/sessions_client.py +245 -0
- viam/streams.py +44 -0
- viam/utils.py +365 -0
- viam/version_metadata.py +4 -0
- viam_sdk-0.45.2.dist-info/METADATA +157 -0
- viam_sdk-0.45.2.dist-info/RECORD +476 -0
- viam_sdk-0.45.2.dist-info/WHEEL +4 -0
- viam_sdk-0.45.2.dist-info/licenses/LICENSE +202 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
from grpclib.server import Stream
|
|
2
|
+
|
|
3
|
+
from viam.proto.common import DoCommandRequest, DoCommandResponse, GetGeometriesRequest, GetGeometriesResponse
|
|
4
|
+
from viam.proto.component.motor import (
|
|
5
|
+
GetPositionRequest,
|
|
6
|
+
GetPositionResponse,
|
|
7
|
+
GetPropertiesRequest,
|
|
8
|
+
GetPropertiesResponse,
|
|
9
|
+
GoForRequest,
|
|
10
|
+
GoForResponse,
|
|
11
|
+
GoToRequest,
|
|
12
|
+
GoToResponse,
|
|
13
|
+
IsMovingRequest,
|
|
14
|
+
IsMovingResponse,
|
|
15
|
+
IsPoweredRequest,
|
|
16
|
+
IsPoweredResponse,
|
|
17
|
+
ResetZeroPositionRequest,
|
|
18
|
+
ResetZeroPositionResponse,
|
|
19
|
+
SetPowerRequest,
|
|
20
|
+
SetPowerResponse,
|
|
21
|
+
SetRPMRequest,
|
|
22
|
+
SetRPMResponse,
|
|
23
|
+
StopRequest,
|
|
24
|
+
StopResponse,
|
|
25
|
+
UnimplementedMotorServiceBase,
|
|
26
|
+
)
|
|
27
|
+
from viam.resource.rpc_service_base import ResourceRPCServiceBase
|
|
28
|
+
from viam.utils import dict_to_struct, struct_to_dict
|
|
29
|
+
|
|
30
|
+
from .motor import Motor
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class MotorRPCService(UnimplementedMotorServiceBase, ResourceRPCServiceBase[Motor]):
|
|
34
|
+
"""
|
|
35
|
+
gRPC Service for a Motor
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
RESOURCE_TYPE = Motor
|
|
39
|
+
|
|
40
|
+
async def SetPower(self, stream: Stream[SetPowerRequest, SetPowerResponse]) -> None:
|
|
41
|
+
request = await stream.recv_message()
|
|
42
|
+
assert request is not None
|
|
43
|
+
name = request.name
|
|
44
|
+
motor = self.get_resource(name)
|
|
45
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
46
|
+
await motor.set_power(request.power_pct, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
47
|
+
await stream.send_message(SetPowerResponse())
|
|
48
|
+
|
|
49
|
+
async def GoFor(self, stream: Stream[GoForRequest, GoForResponse]) -> None:
|
|
50
|
+
request = await stream.recv_message()
|
|
51
|
+
assert request is not None
|
|
52
|
+
name = request.name
|
|
53
|
+
motor = self.get_resource(name)
|
|
54
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
55
|
+
await motor.go_for(request.rpm, request.revolutions, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
56
|
+
await stream.send_message(GoForResponse())
|
|
57
|
+
|
|
58
|
+
async def GoTo(self, stream: Stream[GoToRequest, GoToResponse]) -> None:
|
|
59
|
+
request = await stream.recv_message()
|
|
60
|
+
assert request is not None
|
|
61
|
+
name = request.name
|
|
62
|
+
motor = self.get_resource(name)
|
|
63
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
64
|
+
await motor.go_to(
|
|
65
|
+
request.rpm, request.position_revolutions, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata
|
|
66
|
+
)
|
|
67
|
+
await stream.send_message(GoToResponse())
|
|
68
|
+
|
|
69
|
+
async def SetRPM(self, stream: Stream[SetRPMRequest, SetRPMResponse]) -> None:
|
|
70
|
+
request = await stream.recv_message()
|
|
71
|
+
assert request is not None
|
|
72
|
+
name = request.name
|
|
73
|
+
motor = self.get_resource(name)
|
|
74
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
75
|
+
await motor.set_rpm(request.rpm, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
76
|
+
await stream.send_message(SetRPMResponse())
|
|
77
|
+
|
|
78
|
+
async def ResetZeroPosition(self, stream: Stream[ResetZeroPositionRequest, ResetZeroPositionResponse]) -> None:
|
|
79
|
+
request = await stream.recv_message()
|
|
80
|
+
assert request is not None
|
|
81
|
+
name = request.name
|
|
82
|
+
motor = self.get_resource(name)
|
|
83
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
84
|
+
await motor.reset_zero_position(request.offset, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
85
|
+
await stream.send_message(ResetZeroPositionResponse())
|
|
86
|
+
|
|
87
|
+
async def GetPosition(self, stream: Stream[GetPositionRequest, GetPositionResponse]) -> None:
|
|
88
|
+
request = await stream.recv_message()
|
|
89
|
+
assert request is not None
|
|
90
|
+
name = request.name
|
|
91
|
+
motor = self.get_resource(name)
|
|
92
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
93
|
+
position = await motor.get_position(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
94
|
+
await stream.send_message(GetPositionResponse(position=position))
|
|
95
|
+
|
|
96
|
+
async def GetProperties(self, stream: Stream[GetPropertiesRequest, GetPropertiesResponse]) -> None:
|
|
97
|
+
request = await stream.recv_message()
|
|
98
|
+
assert request is not None
|
|
99
|
+
name = request.name
|
|
100
|
+
motor = self.get_resource(name)
|
|
101
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
102
|
+
properties = await motor.get_properties(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
103
|
+
response = GetPropertiesResponse(**properties.__dict__)
|
|
104
|
+
await stream.send_message(response)
|
|
105
|
+
|
|
106
|
+
async def Stop(self, stream: Stream[StopRequest, StopResponse]) -> None:
|
|
107
|
+
request = await stream.recv_message()
|
|
108
|
+
assert request is not None
|
|
109
|
+
name = request.name
|
|
110
|
+
motor = self.get_resource(name)
|
|
111
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
112
|
+
await motor.stop(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
113
|
+
response = StopResponse()
|
|
114
|
+
await stream.send_message(response)
|
|
115
|
+
|
|
116
|
+
async def IsPowered(self, stream: Stream[IsPoweredRequest, IsPoweredResponse]) -> None:
|
|
117
|
+
request = await stream.recv_message()
|
|
118
|
+
assert request is not None
|
|
119
|
+
name = request.name
|
|
120
|
+
motor = self.get_resource(name)
|
|
121
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
122
|
+
is_powered, power_pct = await motor.is_powered(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
123
|
+
await stream.send_message(IsPoweredResponse(is_on=is_powered, power_pct=power_pct))
|
|
124
|
+
|
|
125
|
+
async def IsMoving(self, stream: Stream[IsMovingRequest, IsMovingResponse]) -> None:
|
|
126
|
+
request = await stream.recv_message()
|
|
127
|
+
assert request is not None
|
|
128
|
+
name = request.name
|
|
129
|
+
motor = self.get_resource(name)
|
|
130
|
+
is_moving = await motor.is_moving()
|
|
131
|
+
response = IsMovingResponse(is_moving=is_moving)
|
|
132
|
+
await stream.send_message(response)
|
|
133
|
+
|
|
134
|
+
async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
|
|
135
|
+
request = await stream.recv_message()
|
|
136
|
+
assert request is not None
|
|
137
|
+
motor = self.get_resource(request.name)
|
|
138
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
139
|
+
result = await motor.do_command(command=struct_to_dict(request.command), timeout=timeout, metadata=stream.metadata)
|
|
140
|
+
response = DoCommandResponse(result=dict_to_struct(result))
|
|
141
|
+
await stream.send_message(response)
|
|
142
|
+
|
|
143
|
+
async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
|
|
144
|
+
request = await stream.recv_message()
|
|
145
|
+
assert request is not None
|
|
146
|
+
motor = self.get_resource(request.name)
|
|
147
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
148
|
+
geometries = await motor.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
|
|
149
|
+
response = GetGeometriesResponse(geometries=geometries)
|
|
150
|
+
await stream.send_message(response)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from viam.proto.common import GeoPoint, Orientation, Vector3
|
|
2
|
+
from viam.resource.registry import Registry, ResourceRegistration
|
|
3
|
+
|
|
4
|
+
from .client import MovementSensorClient
|
|
5
|
+
from .movement_sensor import MovementSensor
|
|
6
|
+
from .service import MovementSensorRPCService
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"MovementSensor",
|
|
10
|
+
"GeoPoint",
|
|
11
|
+
"Orientation",
|
|
12
|
+
"Vector3",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
Registry.register_api(
|
|
16
|
+
ResourceRegistration(
|
|
17
|
+
MovementSensor,
|
|
18
|
+
MovementSensorRPCService,
|
|
19
|
+
lambda name, channel: MovementSensorClient(name, channel),
|
|
20
|
+
)
|
|
21
|
+
)
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Mapping, Optional, Tuple
|
|
2
|
+
|
|
3
|
+
from grpclib.client import Channel
|
|
4
|
+
|
|
5
|
+
from viam.components.movement_sensor.movement_sensor import MovementSensor
|
|
6
|
+
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetReadingsRequest, GetReadingsResponse
|
|
7
|
+
from viam.proto.component.movementsensor import (
|
|
8
|
+
GetAccuracyRequest,
|
|
9
|
+
GetAngularVelocityRequest,
|
|
10
|
+
GetAngularVelocityResponse,
|
|
11
|
+
GetCompassHeadingRequest,
|
|
12
|
+
GetCompassHeadingResponse,
|
|
13
|
+
GetLinearAccelerationRequest,
|
|
14
|
+
GetLinearAccelerationResponse,
|
|
15
|
+
GetLinearVelocityRequest,
|
|
16
|
+
GetLinearVelocityResponse,
|
|
17
|
+
GetOrientationRequest,
|
|
18
|
+
GetOrientationResponse,
|
|
19
|
+
GetPositionRequest,
|
|
20
|
+
GetPositionResponse,
|
|
21
|
+
GetPropertiesRequest,
|
|
22
|
+
GetPropertiesResponse,
|
|
23
|
+
MovementSensorServiceStub,
|
|
24
|
+
)
|
|
25
|
+
from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
|
|
26
|
+
from viam.utils import SensorReading, ValueTypes, dict_to_struct, get_geometries, sensor_readings_value_to_native, struct_to_dict
|
|
27
|
+
|
|
28
|
+
from . import GeoPoint, Orientation, Vector3
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class MovementSensorClient(MovementSensor, ReconfigurableResourceRPCClientBase):
|
|
32
|
+
"""gRPC client for the MovementSensor component."""
|
|
33
|
+
|
|
34
|
+
def __init__(self, name: str, channel: Channel):
|
|
35
|
+
self.channel = channel
|
|
36
|
+
self.client = MovementSensorServiceStub(channel)
|
|
37
|
+
super().__init__(name)
|
|
38
|
+
|
|
39
|
+
async def get_position(
|
|
40
|
+
self,
|
|
41
|
+
*,
|
|
42
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
43
|
+
timeout: Optional[float] = None,
|
|
44
|
+
**kwargs,
|
|
45
|
+
) -> Tuple[GeoPoint, float]:
|
|
46
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
47
|
+
request = GetPositionRequest(name=self.name, extra=dict_to_struct(extra))
|
|
48
|
+
response: GetPositionResponse = await self.client.GetPosition(request, timeout=timeout, metadata=md)
|
|
49
|
+
return response.coordinate, response.altitude_m
|
|
50
|
+
|
|
51
|
+
async def get_linear_velocity(
|
|
52
|
+
self,
|
|
53
|
+
*,
|
|
54
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
55
|
+
timeout: Optional[float] = None,
|
|
56
|
+
**kwargs,
|
|
57
|
+
) -> Vector3:
|
|
58
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
59
|
+
request = GetLinearVelocityRequest(name=self.name, extra=dict_to_struct(extra))
|
|
60
|
+
response: GetLinearVelocityResponse = await self.client.GetLinearVelocity(request, timeout=timeout, metadata=md)
|
|
61
|
+
return response.linear_velocity
|
|
62
|
+
|
|
63
|
+
async def get_angular_velocity(
|
|
64
|
+
self,
|
|
65
|
+
*,
|
|
66
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
67
|
+
timeout: Optional[float] = None,
|
|
68
|
+
**kwargs,
|
|
69
|
+
) -> Vector3:
|
|
70
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
71
|
+
request = GetAngularVelocityRequest(name=self.name, extra=dict_to_struct(extra))
|
|
72
|
+
response: GetAngularVelocityResponse = await self.client.GetAngularVelocity(request, timeout=timeout, metadata=md)
|
|
73
|
+
return response.angular_velocity
|
|
74
|
+
|
|
75
|
+
async def get_linear_acceleration(
|
|
76
|
+
self,
|
|
77
|
+
*,
|
|
78
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
79
|
+
timeout: Optional[float] = None,
|
|
80
|
+
**kwargs,
|
|
81
|
+
) -> Vector3:
|
|
82
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
83
|
+
request = GetLinearAccelerationRequest(name=self.name, extra=dict_to_struct(extra))
|
|
84
|
+
response: GetLinearAccelerationResponse = await self.client.GetLinearAcceleration(request, timeout=timeout, metadata=md)
|
|
85
|
+
return response.linear_acceleration
|
|
86
|
+
|
|
87
|
+
async def get_compass_heading(
|
|
88
|
+
self,
|
|
89
|
+
*,
|
|
90
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
91
|
+
timeout: Optional[float] = None,
|
|
92
|
+
**kwargs,
|
|
93
|
+
) -> float:
|
|
94
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
95
|
+
request = GetCompassHeadingRequest(name=self.name, extra=dict_to_struct(extra))
|
|
96
|
+
response: GetCompassHeadingResponse = await self.client.GetCompassHeading(request, timeout=timeout, metadata=md)
|
|
97
|
+
return response.value
|
|
98
|
+
|
|
99
|
+
async def get_orientation(
|
|
100
|
+
self,
|
|
101
|
+
*,
|
|
102
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
103
|
+
timeout: Optional[float] = None,
|
|
104
|
+
**kwargs,
|
|
105
|
+
) -> Orientation:
|
|
106
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
107
|
+
request = GetOrientationRequest(name=self.name, extra=dict_to_struct(extra))
|
|
108
|
+
response: GetOrientationResponse = await self.client.GetOrientation(request, timeout=timeout, metadata=md)
|
|
109
|
+
return response.orientation
|
|
110
|
+
|
|
111
|
+
async def get_properties(
|
|
112
|
+
self,
|
|
113
|
+
*,
|
|
114
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
115
|
+
timeout: Optional[float] = None,
|
|
116
|
+
**kwargs,
|
|
117
|
+
) -> MovementSensor.Properties:
|
|
118
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
119
|
+
request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra))
|
|
120
|
+
response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md)
|
|
121
|
+
return MovementSensor.Properties.from_proto(response)
|
|
122
|
+
|
|
123
|
+
async def get_accuracy(
|
|
124
|
+
self,
|
|
125
|
+
*,
|
|
126
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
127
|
+
timeout: Optional[float] = None,
|
|
128
|
+
**kwargs,
|
|
129
|
+
) -> MovementSensor.Accuracy:
|
|
130
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
131
|
+
request = GetAccuracyRequest(name=self.name, extra=dict_to_struct(extra))
|
|
132
|
+
return await self.client.GetAccuracy(request, timeout=timeout, metadata=md)
|
|
133
|
+
|
|
134
|
+
async def get_readings(
|
|
135
|
+
self,
|
|
136
|
+
*,
|
|
137
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
138
|
+
timeout: Optional[float] = None,
|
|
139
|
+
**kwargs,
|
|
140
|
+
) -> Mapping[str, SensorReading]:
|
|
141
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
142
|
+
request = GetReadingsRequest(name=self.name, extra=dict_to_struct(extra))
|
|
143
|
+
response: GetReadingsResponse = await self.client.GetReadings(request, timeout=timeout, metadata=md)
|
|
144
|
+
|
|
145
|
+
return sensor_readings_value_to_native(response.readings)
|
|
146
|
+
|
|
147
|
+
async def do_command(
|
|
148
|
+
self,
|
|
149
|
+
command: Mapping[str, ValueTypes],
|
|
150
|
+
*,
|
|
151
|
+
timeout: Optional[float] = None,
|
|
152
|
+
**kwargs,
|
|
153
|
+
) -> Mapping[str, ValueTypes]:
|
|
154
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
155
|
+
request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
|
|
156
|
+
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
|
|
157
|
+
return struct_to_dict(response.result)
|
|
158
|
+
|
|
159
|
+
async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
|
|
160
|
+
md = kwargs.get("metadata", self.Metadata())
|
|
161
|
+
return await get_geometries(self.client, self.name, extra, timeout, md)
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import abc
|
|
2
|
+
import sys
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from typing import Any, Dict, Final, Mapping, Optional, Tuple
|
|
5
|
+
|
|
6
|
+
from typing_extensions import Self
|
|
7
|
+
|
|
8
|
+
from viam.components.component_base import ComponentBase
|
|
9
|
+
from viam.proto.component.movementsensor import GetAccuracyResponse, GetPropertiesResponse
|
|
10
|
+
from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
|
|
11
|
+
from viam.utils import SensorReading
|
|
12
|
+
|
|
13
|
+
from . import GeoPoint, Orientation, Vector3
|
|
14
|
+
|
|
15
|
+
if sys.version_info >= (3, 10):
|
|
16
|
+
from typing import TypeAlias
|
|
17
|
+
else:
|
|
18
|
+
from typing_extensions import TypeAlias
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class MovementSensor(ComponentBase):
|
|
22
|
+
"""MovementSensor reports information about the robot's direction, position and speed.
|
|
23
|
+
|
|
24
|
+
This acts as an abstract base class for any sensors that can provide data regarding the robot's direction, position, and speed.
|
|
25
|
+
This cannot be used on its own. If the ``__init__()`` function is overridden, it must call the ``super().__init__()`` function.
|
|
26
|
+
|
|
27
|
+
::
|
|
28
|
+
|
|
29
|
+
from viam.components.movement_sensor import MovementSensor
|
|
30
|
+
|
|
31
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/>`_.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
|
|
35
|
+
RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "movement_sensor"
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
Accuracy: "TypeAlias" = GetAccuracyResponse
|
|
39
|
+
|
|
40
|
+
@dataclass
|
|
41
|
+
class Properties:
|
|
42
|
+
linear_acceleration_supported: bool
|
|
43
|
+
angular_velocity_supported: bool
|
|
44
|
+
orientation_supported: bool
|
|
45
|
+
position_supported: bool
|
|
46
|
+
compass_heading_supported: bool
|
|
47
|
+
linear_velocity_supported: bool
|
|
48
|
+
|
|
49
|
+
@property
|
|
50
|
+
def proto(self) -> GetPropertiesResponse:
|
|
51
|
+
return GetPropertiesResponse(
|
|
52
|
+
linear_acceleration_supported=self.linear_acceleration_supported,
|
|
53
|
+
angular_velocity_supported=self.angular_velocity_supported,
|
|
54
|
+
orientation_supported=self.orientation_supported,
|
|
55
|
+
position_supported=self.position_supported,
|
|
56
|
+
compass_heading_supported=self.compass_heading_supported,
|
|
57
|
+
linear_velocity_supported=self.linear_velocity_supported,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
@classmethod
|
|
61
|
+
def from_proto(cls, proto: GetPropertiesResponse) -> Self:
|
|
62
|
+
return cls(
|
|
63
|
+
linear_acceleration_supported=proto.linear_acceleration_supported,
|
|
64
|
+
angular_velocity_supported=proto.angular_velocity_supported,
|
|
65
|
+
orientation_supported=proto.orientation_supported,
|
|
66
|
+
position_supported=proto.position_supported,
|
|
67
|
+
compass_heading_supported=proto.compass_heading_supported,
|
|
68
|
+
linear_velocity_supported=proto.linear_velocity_supported,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
@abc.abstractmethod
|
|
72
|
+
async def get_position(
|
|
73
|
+
self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
|
|
74
|
+
) -> Tuple[GeoPoint, float]:
|
|
75
|
+
"""Get the current GeoPoint (latitude, longitude) and altitude (m)
|
|
76
|
+
|
|
77
|
+
::
|
|
78
|
+
|
|
79
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
80
|
+
robot=robot,
|
|
81
|
+
name="my_movement_sensor")
|
|
82
|
+
|
|
83
|
+
# Get the current position of the movement sensor.
|
|
84
|
+
position = await my_movement_sensor.get_position()
|
|
85
|
+
|
|
86
|
+
Returns:
|
|
87
|
+
Tuple[GeoPoint, float]: The current lat/long, along with the altitude in m
|
|
88
|
+
|
|
89
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getposition>`_.
|
|
90
|
+
"""
|
|
91
|
+
...
|
|
92
|
+
|
|
93
|
+
@abc.abstractmethod
|
|
94
|
+
async def get_linear_velocity(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Vector3:
|
|
95
|
+
"""Get the current linear velocity as a ``Vector3`` with x, y, and z axes represented in m/sec
|
|
96
|
+
|
|
97
|
+
::
|
|
98
|
+
|
|
99
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
100
|
+
robot=robot, name="my_movement_sensor")
|
|
101
|
+
|
|
102
|
+
# Get the current linear velocity of the movement sensor.
|
|
103
|
+
lin_vel = await my_movement_sensor.get_linear_velocity()
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
Vector3: The linear velocity in m/sec
|
|
107
|
+
|
|
108
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getlinearvelocity>`_.
|
|
109
|
+
"""
|
|
110
|
+
...
|
|
111
|
+
|
|
112
|
+
@abc.abstractmethod
|
|
113
|
+
async def get_angular_velocity(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Vector3:
|
|
114
|
+
"""Get the current angular velocity as a ``Vector3`` with x, y, and z axes represented in degrees/sec
|
|
115
|
+
|
|
116
|
+
::
|
|
117
|
+
|
|
118
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
119
|
+
robot=robot, name="my_movement_sensor")
|
|
120
|
+
|
|
121
|
+
# Get the current angular velocity of the movement sensor.
|
|
122
|
+
ang_vel = await my_movement_sensor.get_angular_velocity()
|
|
123
|
+
|
|
124
|
+
# Get the y component of angular velocity.
|
|
125
|
+
y_ang_vel = ang_vel.y
|
|
126
|
+
|
|
127
|
+
Returns:
|
|
128
|
+
Vector3: The angular velocity in degrees/sec
|
|
129
|
+
|
|
130
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getangularvelocity>`_.
|
|
131
|
+
"""
|
|
132
|
+
...
|
|
133
|
+
|
|
134
|
+
@abc.abstractmethod
|
|
135
|
+
async def get_linear_acceleration(
|
|
136
|
+
self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
|
|
137
|
+
) -> Vector3:
|
|
138
|
+
"""Get the current linear acceleration as a ``Vector3`` with x, y, and z axes represented in m/sec^2
|
|
139
|
+
|
|
140
|
+
::
|
|
141
|
+
|
|
142
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
143
|
+
robot=robot, name="my_movement_sensor")
|
|
144
|
+
|
|
145
|
+
# Get the current linear acceleration of the movement sensor.
|
|
146
|
+
lin_accel = await my_movement_sensor.get_linear_acceleration()
|
|
147
|
+
|
|
148
|
+
# Get the x component of linear acceleration.
|
|
149
|
+
x_lin_accel = lin_accel.x
|
|
150
|
+
|
|
151
|
+
Returns:
|
|
152
|
+
Vector3: The linear acceleration in m/sec^2
|
|
153
|
+
|
|
154
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getlinearacceleration>`_.
|
|
155
|
+
"""
|
|
156
|
+
...
|
|
157
|
+
|
|
158
|
+
@abc.abstractmethod
|
|
159
|
+
async def get_compass_heading(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> float:
|
|
160
|
+
"""Get the current compass heading in degrees
|
|
161
|
+
|
|
162
|
+
::
|
|
163
|
+
|
|
164
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
165
|
+
robot=robot, name="my_movement_sensor")
|
|
166
|
+
|
|
167
|
+
# Get the current compass heading of the movement sensor.
|
|
168
|
+
heading = await my_movement_sensor.get_compass_heading()
|
|
169
|
+
|
|
170
|
+
Returns:
|
|
171
|
+
float: The compass heading in degrees
|
|
172
|
+
|
|
173
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getcompassheading>`_.
|
|
174
|
+
"""
|
|
175
|
+
...
|
|
176
|
+
|
|
177
|
+
@abc.abstractmethod
|
|
178
|
+
async def get_orientation(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Orientation:
|
|
179
|
+
"""Get the current orientation
|
|
180
|
+
|
|
181
|
+
::
|
|
182
|
+
|
|
183
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
184
|
+
robot=robot, name="my_movement_sensor")
|
|
185
|
+
|
|
186
|
+
# Get the current orientation vector of the movement sensor.
|
|
187
|
+
orientation = await my_movement_sensor.get_orientation()
|
|
188
|
+
|
|
189
|
+
Returns:
|
|
190
|
+
Orientation: The orientation
|
|
191
|
+
|
|
192
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getorientation>`_.
|
|
193
|
+
"""
|
|
194
|
+
...
|
|
195
|
+
|
|
196
|
+
@abc.abstractmethod
|
|
197
|
+
async def get_properties(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Properties:
|
|
198
|
+
"""Get the supported properties of this sensor
|
|
199
|
+
|
|
200
|
+
::
|
|
201
|
+
|
|
202
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
203
|
+
robot=robot, name="my_movement_sensor")
|
|
204
|
+
|
|
205
|
+
# Get the supported properties of the movement sensor.
|
|
206
|
+
properties = await my_movement_sensor.get_properties()
|
|
207
|
+
|
|
208
|
+
Returns:
|
|
209
|
+
MovementSensor.Properties: The properties
|
|
210
|
+
|
|
211
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getproperties>`_.
|
|
212
|
+
"""
|
|
213
|
+
...
|
|
214
|
+
|
|
215
|
+
@abc.abstractmethod
|
|
216
|
+
async def get_accuracy(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Accuracy:
|
|
217
|
+
"""Get the accuracy of the various sensors
|
|
218
|
+
|
|
219
|
+
::
|
|
220
|
+
|
|
221
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
222
|
+
robot=robot, name="my_movement_sensor")
|
|
223
|
+
|
|
224
|
+
# Get the accuracy of the movement sensor.
|
|
225
|
+
accuracy = await my_movement_sensor.get_accuracy()
|
|
226
|
+
|
|
227
|
+
Returns:
|
|
228
|
+
MovementSensor.Accuracy: The accuracies of the movement sensor
|
|
229
|
+
|
|
230
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getaccuracy>`_.
|
|
231
|
+
"""
|
|
232
|
+
...
|
|
233
|
+
|
|
234
|
+
async def get_readings(
|
|
235
|
+
self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
|
|
236
|
+
) -> Mapping[str, SensorReading]:
|
|
237
|
+
"""Obtain the measurements/data specific to this sensor.
|
|
238
|
+
If a sensor is not configured to have a measurement or fails to read a piece of data, it will not appear in the readings dictionary.
|
|
239
|
+
|
|
240
|
+
::
|
|
241
|
+
|
|
242
|
+
my_movement_sensor = MovementSensor.from_robot(
|
|
243
|
+
robot=robot, name="my_movement_sensor")
|
|
244
|
+
|
|
245
|
+
# Get the latest readings from the movement sensor.
|
|
246
|
+
readings = await my_movement_sensor.get_readings()
|
|
247
|
+
|
|
248
|
+
Returns:
|
|
249
|
+
Mapping[str, Any]: The readings for the MovementSensor. Can be of any type.
|
|
250
|
+
|
|
251
|
+
For more information, see `Movement Sensor component <https://docs.viam.com/dev/reference/apis/components/movement-sensor/#getreadings>`_.
|
|
252
|
+
"""
|
|
253
|
+
...
|