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
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
from grpclib.server import Stream
|
|
2
|
+
from h2.exceptions import StreamClosedError
|
|
3
|
+
|
|
4
|
+
from viam.logging import getLogger
|
|
5
|
+
from viam.proto.common import (
|
|
6
|
+
DoCommandRequest,
|
|
7
|
+
DoCommandResponse,
|
|
8
|
+
GetGeometriesRequest,
|
|
9
|
+
GetGeometriesResponse,
|
|
10
|
+
GetPropertiesRequest,
|
|
11
|
+
GetPropertiesResponse,
|
|
12
|
+
)
|
|
13
|
+
from viam.proto.component.audioin import AudioInServiceBase, GetAudioRequest, GetAudioResponse
|
|
14
|
+
from viam.resource.rpc_service_base import ResourceRPCServiceBase
|
|
15
|
+
from viam.utils import dict_to_struct, struct_to_dict
|
|
16
|
+
|
|
17
|
+
from .audio_in import AudioIn
|
|
18
|
+
|
|
19
|
+
LOGGER = getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class AudioInRPCService(AudioInServiceBase, ResourceRPCServiceBase[AudioIn]):
|
|
23
|
+
"""
|
|
24
|
+
gRPC Service for a generic audio in.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
RESOURCE_TYPE = AudioIn
|
|
28
|
+
|
|
29
|
+
async def GetAudio(self, stream: Stream[GetAudioRequest, GetAudioResponse]) -> None:
|
|
30
|
+
request = await stream.recv_message()
|
|
31
|
+
assert request is not None
|
|
32
|
+
name = request.name
|
|
33
|
+
audio_in = self.get_resource(name)
|
|
34
|
+
audio_stream = await audio_in.get_audio(
|
|
35
|
+
codec=request.codec,
|
|
36
|
+
duration_seconds=request.duration_seconds,
|
|
37
|
+
previous_timestamp_ns=request.previous_timestamp_nanoseconds,
|
|
38
|
+
metadata=stream.metadata,
|
|
39
|
+
)
|
|
40
|
+
async for response in audio_stream:
|
|
41
|
+
try:
|
|
42
|
+
response.request_id = request.request_id
|
|
43
|
+
await stream.send_message(response)
|
|
44
|
+
except StreamClosedError:
|
|
45
|
+
return
|
|
46
|
+
except Exception as e:
|
|
47
|
+
LOGGER.error(e)
|
|
48
|
+
return
|
|
49
|
+
|
|
50
|
+
async def GetProperties(self, stream: Stream[GetPropertiesRequest, GetPropertiesResponse]) -> None:
|
|
51
|
+
request = await stream.recv_message()
|
|
52
|
+
assert request is not None
|
|
53
|
+
name = request.name
|
|
54
|
+
audio_in = self.get_resource(name)
|
|
55
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
56
|
+
properties = await audio_in.get_properties(
|
|
57
|
+
timeout=timeout,
|
|
58
|
+
metadata=stream.metadata,
|
|
59
|
+
)
|
|
60
|
+
await stream.send_message(properties)
|
|
61
|
+
|
|
62
|
+
async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
|
|
63
|
+
request = await stream.recv_message()
|
|
64
|
+
assert request is not None
|
|
65
|
+
name = request.name
|
|
66
|
+
audio_in = self.get_resource(name)
|
|
67
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
68
|
+
result = await audio_in.do_command(
|
|
69
|
+
command=struct_to_dict(request.command),
|
|
70
|
+
timeout=timeout,
|
|
71
|
+
metadata=stream.metadata,
|
|
72
|
+
)
|
|
73
|
+
response = DoCommandResponse(result=dict_to_struct(result))
|
|
74
|
+
await stream.send_message(response)
|
|
75
|
+
|
|
76
|
+
async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
|
|
77
|
+
request = await stream.recv_message()
|
|
78
|
+
assert request is not None
|
|
79
|
+
arm = self.get_resource(request.name)
|
|
80
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
81
|
+
geometries = await arm.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
|
|
82
|
+
response = GetGeometriesResponse(geometries=geometries)
|
|
83
|
+
await stream.send_message(response)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from viam.media.audio import AudioCodec
|
|
2
|
+
from viam.proto.common import AudioInfo
|
|
3
|
+
from viam.resource.registry import Registry, ResourceRegistration
|
|
4
|
+
|
|
5
|
+
from .audio_out import AudioOut
|
|
6
|
+
from .client import AudioOutClient
|
|
7
|
+
from .service import AudioOutRPCService
|
|
8
|
+
|
|
9
|
+
__all__ = [
|
|
10
|
+
"AudioOut",
|
|
11
|
+
"AudioInfo",
|
|
12
|
+
"AudioCodec",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
Registry.register_api(
|
|
16
|
+
ResourceRegistration(
|
|
17
|
+
AudioOut,
|
|
18
|
+
AudioOutRPCService,
|
|
19
|
+
lambda name, channel: AudioOutClient(name, channel),
|
|
20
|
+
)
|
|
21
|
+
)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import abc
|
|
2
|
+
import sys
|
|
3
|
+
from typing import Any, Dict, Final, Optional
|
|
4
|
+
|
|
5
|
+
from viam.proto.common import GetPropertiesResponse
|
|
6
|
+
from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
|
|
7
|
+
|
|
8
|
+
from ..component_base import ComponentBase
|
|
9
|
+
from . import AudioInfo
|
|
10
|
+
|
|
11
|
+
if sys.version_info >= (3, 10):
|
|
12
|
+
from typing import TypeAlias
|
|
13
|
+
else:
|
|
14
|
+
from typing_extensions import TypeAlias
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class AudioOut(ComponentBase):
|
|
18
|
+
"""AudioOut represents a component that can play audio.
|
|
19
|
+
|
|
20
|
+
This acts as an abstract base class for any drivers representing specific
|
|
21
|
+
audio output implementations. This cannot be used on its own. If the ``__init__()`` function is
|
|
22
|
+
overridden, it must call the ``super().__init__()`` function.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
|
|
26
|
+
RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "audio_out"
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
Properties: "TypeAlias" = GetPropertiesResponse
|
|
30
|
+
|
|
31
|
+
@abc.abstractmethod
|
|
32
|
+
async def play(
|
|
33
|
+
self,
|
|
34
|
+
data: bytes,
|
|
35
|
+
info: Optional[AudioInfo] = None,
|
|
36
|
+
*,
|
|
37
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
38
|
+
timeout: Optional[float] = None,
|
|
39
|
+
**kwargs,
|
|
40
|
+
) -> None:
|
|
41
|
+
"""
|
|
42
|
+
Play the given audio data.
|
|
43
|
+
|
|
44
|
+
::
|
|
45
|
+
|
|
46
|
+
my_audio_out = AudioOut.from_robot(robot=machine, name="my_audio_out")
|
|
47
|
+
|
|
48
|
+
# With audio info
|
|
49
|
+
audio_info = AudioInfo(codec=AudioCodec.PCM16, sample_rate_hz=44100, num_channels=2)
|
|
50
|
+
await my_audio_out.play(audio_data, audio_info)
|
|
51
|
+
|
|
52
|
+
# Without audio info (when codec encodes information within audio_data)
|
|
53
|
+
await my_audio_out.play(audio_data)
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
data: audio bytes to play
|
|
57
|
+
info: (optional) information about the audio data such as codec, sample rate, and channel count
|
|
58
|
+
"""
|
|
59
|
+
|
|
60
|
+
@abc.abstractmethod
|
|
61
|
+
async def get_properties(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> Properties:
|
|
62
|
+
"""
|
|
63
|
+
Get the audio output device's properties.
|
|
64
|
+
|
|
65
|
+
::
|
|
66
|
+
|
|
67
|
+
my_audio_out = AudioOut.from_robot(robot=machine, name="my_audio_out")
|
|
68
|
+
properties = await my_audio_out.get_properties()
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
Properties: The properties of the audio output device
|
|
72
|
+
"""
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
from typing import Any, Dict, List, Mapping, Optional
|
|
2
|
+
|
|
3
|
+
from grpclib.client import Channel
|
|
4
|
+
|
|
5
|
+
from viam.proto.common import DoCommandRequest, DoCommandResponse, Geometry, GetPropertiesRequest, GetPropertiesResponse
|
|
6
|
+
from viam.proto.component.audioout import AudioOutServiceStub, PlayRequest
|
|
7
|
+
from viam.resource.rpc_client_base import ReconfigurableResourceRPCClientBase
|
|
8
|
+
from viam.utils import ValueTypes, dict_to_struct, get_geometries, struct_to_dict
|
|
9
|
+
|
|
10
|
+
from .audio_out import AudioInfo, AudioOut
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AudioOutClient(AudioOut, ReconfigurableResourceRPCClientBase):
|
|
14
|
+
"""gRPC client for AudioOut component."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, name: str, channel: Channel) -> None:
|
|
17
|
+
self.channel = channel
|
|
18
|
+
self.client = AudioOutServiceStub(channel)
|
|
19
|
+
super().__init__(name)
|
|
20
|
+
|
|
21
|
+
async def play(
|
|
22
|
+
self,
|
|
23
|
+
data: bytes,
|
|
24
|
+
info: Optional[AudioInfo] = None,
|
|
25
|
+
*,
|
|
26
|
+
extra: Optional[Dict[str, Any]] = None,
|
|
27
|
+
timeout: Optional[float] = None,
|
|
28
|
+
**kwargs,
|
|
29
|
+
) -> None:
|
|
30
|
+
if extra is None:
|
|
31
|
+
extra = {}
|
|
32
|
+
|
|
33
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
34
|
+
request = PlayRequest(
|
|
35
|
+
name=self.name,
|
|
36
|
+
audio_data=data,
|
|
37
|
+
audio_info=info,
|
|
38
|
+
extra=dict_to_struct(extra),
|
|
39
|
+
)
|
|
40
|
+
await self.client.Play(request, timeout=timeout, metadata=md)
|
|
41
|
+
|
|
42
|
+
async def get_properties(
|
|
43
|
+
self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs
|
|
44
|
+
) -> AudioOut.Properties:
|
|
45
|
+
if extra is None:
|
|
46
|
+
extra = {}
|
|
47
|
+
|
|
48
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
49
|
+
request = GetPropertiesRequest(name=self.name, extra=dict_to_struct(extra))
|
|
50
|
+
response: GetPropertiesResponse = await self.client.GetProperties(request, timeout=timeout, metadata=md)
|
|
51
|
+
return response
|
|
52
|
+
|
|
53
|
+
async def do_command(
|
|
54
|
+
self,
|
|
55
|
+
command: Mapping[str, ValueTypes],
|
|
56
|
+
*,
|
|
57
|
+
timeout: Optional[float] = None,
|
|
58
|
+
**kwargs,
|
|
59
|
+
) -> Mapping[str, ValueTypes]:
|
|
60
|
+
md = kwargs.get("metadata", self.Metadata()).proto
|
|
61
|
+
request = DoCommandRequest(name=self.name, command=dict_to_struct(command))
|
|
62
|
+
response: DoCommandResponse = await self.client.DoCommand(request, timeout=timeout, metadata=md)
|
|
63
|
+
return struct_to_dict(response.result)
|
|
64
|
+
|
|
65
|
+
async def get_geometries(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[Geometry]:
|
|
66
|
+
md = kwargs.get("metadata", self.Metadata())
|
|
67
|
+
return await get_geometries(self.client, self.name, extra, timeout, md)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from grpclib.server import Stream
|
|
2
|
+
|
|
3
|
+
from viam.proto.common import (
|
|
4
|
+
DoCommandRequest,
|
|
5
|
+
DoCommandResponse,
|
|
6
|
+
GetGeometriesRequest,
|
|
7
|
+
GetGeometriesResponse,
|
|
8
|
+
GetPropertiesRequest,
|
|
9
|
+
GetPropertiesResponse,
|
|
10
|
+
)
|
|
11
|
+
from viam.proto.component.audioout import (
|
|
12
|
+
AudioOutServiceBase,
|
|
13
|
+
PlayRequest,
|
|
14
|
+
PlayResponse,
|
|
15
|
+
)
|
|
16
|
+
from viam.resource.rpc_service_base import ResourceRPCServiceBase
|
|
17
|
+
from viam.utils import dict_to_struct, struct_to_dict
|
|
18
|
+
|
|
19
|
+
from .audio_out import AudioOut
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class AudioOutRPCService(AudioOutServiceBase, ResourceRPCServiceBase[AudioOut]):
|
|
23
|
+
"""gRPC service for AudioOut component."""
|
|
24
|
+
|
|
25
|
+
RESOURCE_TYPE = AudioOut
|
|
26
|
+
|
|
27
|
+
async def Play(self, stream: Stream[PlayRequest, PlayResponse]) -> None:
|
|
28
|
+
request = await stream.recv_message()
|
|
29
|
+
assert request is not None
|
|
30
|
+
name = request.name
|
|
31
|
+
audio_out = self.get_resource(name)
|
|
32
|
+
# Check if audio_info was provided in the request
|
|
33
|
+
audio_info = request.audio_info if request.HasField("audio_info") else None
|
|
34
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
35
|
+
await audio_out.play(request.audio_data, audio_info, extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
36
|
+
await stream.send_message(PlayResponse())
|
|
37
|
+
|
|
38
|
+
async def GetProperties(self, stream: Stream[GetPropertiesRequest, GetPropertiesResponse]) -> None:
|
|
39
|
+
request = await stream.recv_message()
|
|
40
|
+
assert request is not None
|
|
41
|
+
name = request.name
|
|
42
|
+
audio_out = self.get_resource(name)
|
|
43
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
44
|
+
properties = await audio_out.get_properties(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
|
|
45
|
+
await stream.send_message(properties)
|
|
46
|
+
|
|
47
|
+
async def DoCommand(self, stream: Stream[DoCommandRequest, DoCommandResponse]) -> None:
|
|
48
|
+
request = await stream.recv_message()
|
|
49
|
+
assert request is not None
|
|
50
|
+
audio_out = self.get_resource(request.name)
|
|
51
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
52
|
+
result = await audio_out.do_command(command=struct_to_dict(request.command), timeout=timeout, metadata=stream.metadata)
|
|
53
|
+
response = DoCommandResponse(result=dict_to_struct(result))
|
|
54
|
+
await stream.send_message(response)
|
|
55
|
+
|
|
56
|
+
async def GetGeometries(self, stream: Stream[GetGeometriesRequest, GetGeometriesResponse]) -> None:
|
|
57
|
+
request = await stream.recv_message()
|
|
58
|
+
assert request is not None
|
|
59
|
+
audio_out = self.get_resource(request.name)
|
|
60
|
+
timeout = stream.deadline.time_remaining() if stream.deadline else None
|
|
61
|
+
geometries = await audio_out.get_geometries(extra=struct_to_dict(request.extra), timeout=timeout)
|
|
62
|
+
response = GetGeometriesResponse(geometries=geometries)
|
|
63
|
+
await stream.send_message(response)
|
viam/components/base/__init__.py
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
from viam.proto.common import
|
|
2
|
-
from viam.proto.robot import Status
|
|
1
|
+
from viam.proto.common import Vector3
|
|
3
2
|
from viam.resource.registry import Registry, ResourceRegistration
|
|
4
|
-
from viam.utils import message_to_struct
|
|
5
3
|
|
|
6
4
|
from .base import Base
|
|
7
5
|
from .client import BaseClient
|
|
8
6
|
from .service import BaseRPCService
|
|
9
7
|
|
|
10
|
-
__all__ = [
|
|
8
|
+
__all__ = [
|
|
9
|
+
"Base",
|
|
10
|
+
"Vector3",
|
|
11
|
+
]
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
async def create_status(component: Base) -> Status:
|
|
14
|
-
s = ActuatorStatus(is_moving=await component.is_moving())
|
|
15
|
-
return Status(name=Base.get_resource_name(component.name), status=message_to_struct(s))
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
Registry.register_subtype(ResourceRegistration(Base, BaseRPCService, lambda name, channel: BaseClient(name, channel), create_status))
|
|
13
|
+
Registry.register_api(ResourceRegistration(Base, BaseRPCService, lambda name, channel: BaseClient(name, channel)))
|
viam/components/base/base.py
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import abc
|
|
2
|
+
from dataclasses import dataclass
|
|
2
3
|
from typing import Any, Dict, Final, Optional
|
|
3
4
|
|
|
4
|
-
from viam.resource.types import RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
|
|
5
|
+
from viam.resource.types import API, RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT
|
|
5
6
|
|
|
6
7
|
from ..component_base import ComponentBase
|
|
7
8
|
from . import Vector3
|
|
@@ -14,9 +15,23 @@ class Base(ComponentBase):
|
|
|
14
15
|
This acts as an abstract base class for any drivers representing specific
|
|
15
16
|
base implementations. This cannot be used on its own. If the ``__init__()`` function is
|
|
16
17
|
overridden, it must call the ``super().__init__()`` function.
|
|
18
|
+
|
|
19
|
+
::
|
|
20
|
+
|
|
21
|
+
from viam.components.base import Base
|
|
22
|
+
|
|
23
|
+
For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/>`_.
|
|
17
24
|
"""
|
|
18
25
|
|
|
19
|
-
|
|
26
|
+
API: Final = API( # pyright: ignore [reportIncompatibleVariableOverride]
|
|
27
|
+
RESOURCE_NAMESPACE_RDK, RESOURCE_TYPE_COMPONENT, "base"
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
@dataclass
|
|
31
|
+
class Properties:
|
|
32
|
+
width_meters: float
|
|
33
|
+
turning_radius_meters: float
|
|
34
|
+
wheel_circumference_meters: float
|
|
20
35
|
|
|
21
36
|
@abc.abstractmethod
|
|
22
37
|
async def move_straight(
|
|
@@ -34,11 +49,23 @@ class Base(ComponentBase):
|
|
|
34
49
|
When ``distance`` or ``velocity`` is 0, the base will stop.
|
|
35
50
|
This method blocks until completed or cancelled.
|
|
36
51
|
|
|
52
|
+
::
|
|
53
|
+
|
|
54
|
+
my_base = Base.from_robot(robot=machine, name="my_base")
|
|
55
|
+
|
|
56
|
+
# Move the base 40 mm at a velocity of 90 mm/s, forward.
|
|
57
|
+
await my_base.move_straight(distance=40, velocity=90)
|
|
58
|
+
|
|
59
|
+
# Move the base 40 mm at a velocity of -90 mm/s, backward.
|
|
60
|
+
await my_base.move_straight(distance=40, velocity=-90)
|
|
61
|
+
|
|
37
62
|
Args:
|
|
38
63
|
distance (int): The distance (in millimeters) to move.
|
|
39
64
|
Negative implies backwards.
|
|
40
65
|
velocity (float): The velocity (in millimeters per second) to move.
|
|
41
66
|
Negative implies backwards.
|
|
67
|
+
|
|
68
|
+
For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#movestraight>`_.
|
|
42
69
|
"""
|
|
43
70
|
...
|
|
44
71
|
|
|
@@ -58,11 +85,20 @@ class Base(ComponentBase):
|
|
|
58
85
|
When ``velocity`` is 0, the base will stop.
|
|
59
86
|
This method blocks until completed or cancelled.
|
|
60
87
|
|
|
88
|
+
::
|
|
89
|
+
|
|
90
|
+
my_base = Base.from_robot(robot=machine, name="my_base")
|
|
91
|
+
|
|
92
|
+
# Spin the base 10 degrees at an angular velocity of 15 deg/sec.
|
|
93
|
+
await my_base.spin(angle=10, velocity=15)
|
|
94
|
+
|
|
61
95
|
Args:
|
|
62
96
|
angle (float): The angle (in degrees) to spin.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
97
|
+
velocity (float): The angular velocity (in degrees per second)
|
|
98
|
+
to spin.
|
|
99
|
+
Given a positive angle and a positive velocity, the base will turn to the left.
|
|
100
|
+
|
|
101
|
+
For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#spin>`_.
|
|
66
102
|
"""
|
|
67
103
|
...
|
|
68
104
|
|
|
@@ -77,17 +113,47 @@ class Base(ComponentBase):
|
|
|
77
113
|
**kwargs,
|
|
78
114
|
):
|
|
79
115
|
"""Set the linear and angular velocity of the Base
|
|
80
|
-
When ``linear`` is 0, the
|
|
81
|
-
When ``angular`` is 0, the
|
|
116
|
+
When ``linear`` is 0, the base will spin.
|
|
117
|
+
When ``angular`` is 0, the base will move in a straight line.
|
|
82
118
|
When both ``linear`` and ``angular`` are 0, the base will stop.
|
|
83
119
|
When ``linear`` and ``angular`` are both nonzero, the base will move in an arc,
|
|
84
120
|
with a tighter radius if angular power is greater than linear power.
|
|
85
121
|
|
|
122
|
+
::
|
|
123
|
+
|
|
124
|
+
my_base = Base.from_robot(robot=machine, name="my_base")
|
|
125
|
+
|
|
126
|
+
# Make your wheeled base move forward. Set linear power to 75%.
|
|
127
|
+
print("move forward")
|
|
128
|
+
await my_base.set_power(
|
|
129
|
+
linear=Vector3(x=0, y=.75, z=0),
|
|
130
|
+
angular=Vector3(x=0, y=0, z=0))
|
|
131
|
+
|
|
132
|
+
# Make your wheeled base move backward. Set linear power to -100%.
|
|
133
|
+
print("move backward")
|
|
134
|
+
await my_base.set_power(
|
|
135
|
+
linear=Vector3(x=0, y=-1.0, z=0),
|
|
136
|
+
angular=Vector3(x=0, y=0, z=0))
|
|
137
|
+
|
|
138
|
+
# Make your wheeled base spin left. Set angular power to 100%.
|
|
139
|
+
print("spin left")
|
|
140
|
+
await my_base.set_power(
|
|
141
|
+
linear=Vector3(x=0, y=0, z=0),
|
|
142
|
+
angular=Vector3(x=0, y=0, z=1))
|
|
143
|
+
|
|
144
|
+
# Make your wheeled base spin right. Set angular power to -75%.
|
|
145
|
+
print("spin right")
|
|
146
|
+
await my_base.set_power(
|
|
147
|
+
linear=Vector3(x=0, y=0, z=0),
|
|
148
|
+
angular=Vector3(x=0, y=0, z=-.75))
|
|
149
|
+
|
|
86
150
|
Args:
|
|
87
151
|
linear (Vector3): The linear component. Only the Y component is used
|
|
88
|
-
for wheeled base.
|
|
152
|
+
for wheeled base. Positive implies forwards.
|
|
89
153
|
angular (Vector3): The angular component. Only the Z component is used
|
|
90
154
|
for wheeled base. Positive turns left; negative turns right.
|
|
155
|
+
|
|
156
|
+
For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#setpower>`_.
|
|
91
157
|
"""
|
|
92
158
|
...
|
|
93
159
|
|
|
@@ -104,10 +170,20 @@ class Base(ComponentBase):
|
|
|
104
170
|
"""
|
|
105
171
|
Set the linear and angular velocities of the base.
|
|
106
172
|
|
|
173
|
+
::
|
|
174
|
+
|
|
175
|
+
my_base = Base.from_robot(robot=machine, name="my_base")
|
|
176
|
+
|
|
177
|
+
# Set the linear velocity to 50 mm/sec and the angular velocity to
|
|
178
|
+
# 15 degree/sec.
|
|
179
|
+
await my_base.set_velocity(
|
|
180
|
+
linear=Vector3(x=0, y=50, z=0), angular=Vector3(x=0, y=0, z=15))
|
|
107
181
|
|
|
108
182
|
Args:
|
|
109
183
|
linear (Vector3): Velocity in mm/sec
|
|
110
184
|
angular (Vector3): Velocity in deg/sec
|
|
185
|
+
|
|
186
|
+
For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#setvelocity>`_.
|
|
111
187
|
"""
|
|
112
188
|
|
|
113
189
|
@abc.abstractmethod
|
|
@@ -120,6 +196,18 @@ class Base(ComponentBase):
|
|
|
120
196
|
):
|
|
121
197
|
"""
|
|
122
198
|
Stop the base.
|
|
199
|
+
|
|
200
|
+
::
|
|
201
|
+
|
|
202
|
+
my_base = Base.from_robot(robot=machine, name="my_base")
|
|
203
|
+
|
|
204
|
+
# Move the base forward 10 mm at a velocity of 50 mm/s.
|
|
205
|
+
await my_base.move_straight(distance=10, velocity=50)
|
|
206
|
+
|
|
207
|
+
# Stop the base.
|
|
208
|
+
await my_base.stop()
|
|
209
|
+
|
|
210
|
+
For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#stop>`_.
|
|
123
211
|
"""
|
|
124
212
|
...
|
|
125
213
|
|
|
@@ -128,7 +216,45 @@ class Base(ComponentBase):
|
|
|
128
216
|
"""
|
|
129
217
|
Get if the base is currently moving.
|
|
130
218
|
|
|
219
|
+
::
|
|
220
|
+
|
|
221
|
+
my_base = Base.from_robot(robot=machine, name="my_base")
|
|
222
|
+
|
|
223
|
+
# Check whether the base is currently moving.
|
|
224
|
+
moving = await my_base.is_moving()
|
|
225
|
+
print('Moving: ', moving)
|
|
226
|
+
|
|
131
227
|
Returns:
|
|
132
228
|
bool: Whether the base is moving.
|
|
229
|
+
|
|
230
|
+
For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#ismoving>`_.
|
|
231
|
+
"""
|
|
232
|
+
...
|
|
233
|
+
|
|
234
|
+
@abc.abstractmethod
|
|
235
|
+
async def get_properties(self, *, timeout: Optional[float] = None, **kwargs) -> Properties:
|
|
236
|
+
"""
|
|
237
|
+
Get the base width and turning radius
|
|
238
|
+
|
|
239
|
+
::
|
|
240
|
+
|
|
241
|
+
my_base = Base.from_robot(robot=machine, name="my_base")
|
|
242
|
+
|
|
243
|
+
# Get the width and turning radius of the base
|
|
244
|
+
properties = await my_base.get_properties()
|
|
245
|
+
|
|
246
|
+
# Get the width
|
|
247
|
+
print(f"Width of base: {properties.width_meters}")
|
|
248
|
+
|
|
249
|
+
# Get the turning radius
|
|
250
|
+
print(f"Turning radius of base: {properties.turning_radius_meters}")
|
|
251
|
+
|
|
252
|
+
# Get the wheel circumference
|
|
253
|
+
print(f"Wheel circumference of base: {properties.wheel_circumference_meters}")
|
|
254
|
+
|
|
255
|
+
Returns:
|
|
256
|
+
Properties: The properties of the base
|
|
257
|
+
|
|
258
|
+
For more information, see `Base component <https://docs.viam.com/dev/reference/apis/components/base/#getproperties>`_.
|
|
133
259
|
"""
|
|
134
260
|
...
|