Skip to content

Commit 1e776d1

Browse files
authored
RSDK-9465, RSDK-9366 - Remove robot status and sensors service (#796)
1 parent af4466b commit 1e776d1

File tree

23 files changed

+28
-572
lines changed

23 files changed

+28
-572
lines changed
Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1-
import asyncio
2-
31
from viam.proto.common import KinematicsFileFormat, Pose
42
from viam.proto.component.arm import JointPositions
5-
from viam.proto.component.arm import Status as ArmStatus
6-
from viam.proto.robot import Status
73
from viam.resource.registry import Registry, ResourceRegistration
8-
from viam.utils import message_to_struct
94

105
from .arm import Arm
116
from .client import ArmClient
@@ -18,23 +13,4 @@
1813
"Pose",
1914
]
2015

21-
22-
async def create_status(component: Arm) -> Status:
23-
(
24-
end_position,
25-
joint_positions,
26-
is_moving,
27-
) = await asyncio.gather(
28-
component.get_end_position(),
29-
component.get_joint_positions(),
30-
component.is_moving(),
31-
)
32-
s = ArmStatus(
33-
end_position=end_position,
34-
joint_positions=joint_positions,
35-
is_moving=is_moving,
36-
)
37-
return Status(name=Arm.get_resource_name(component.name), status=message_to_struct(s))
38-
39-
40-
Registry.register_subtype(ResourceRegistration(Arm, ArmRPCService, lambda name, channel: ArmClient(name, channel), create_status))
16+
Registry.register_subtype(ResourceRegistration(Arm, ArmRPCService, lambda name, channel: ArmClient(name, channel)))
Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
from viam.proto.common import ActuatorStatus, Vector3
2-
from viam.proto.robot import Status
1+
from viam.proto.common import Vector3
32
from viam.resource.registry import Registry, ResourceRegistration
4-
from viam.utils import message_to_struct
53

64
from .base import Base
75
from .client import BaseClient
@@ -12,10 +10,4 @@
1210
"Vector3",
1311
]
1412

15-
16-
async def create_status(component: Base) -> Status:
17-
s = ActuatorStatus(is_moving=await component.is_moving())
18-
return Status(name=Base.get_resource_name(component.name), status=message_to_struct(s))
19-
20-
21-
Registry.register_subtype(ResourceRegistration(Base, BaseRPCService, lambda name, channel: BaseClient(name, channel), create_status))
13+
Registry.register_subtype(ResourceRegistration(Base, BaseRPCService, lambda name, channel: BaseClient(name, channel)))
Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,9 @@
1-
import asyncio
2-
3-
from viam.proto.component.board import Status as BoardStatus
4-
from viam.proto.robot import Status
51
from viam.resource.registry import Registry, ResourceRegistration
6-
from viam.utils import message_to_struct
72

83
from .board import Board, Tick, TickStream
94
from .client import BoardClient
105
from .service import BoardRPCService
116

127
__all__ = ["Board", "Tick", "TickStream"]
138

14-
15-
async def create_status(component: Board) -> Status:
16-
(analog_names, digital_interrupt_names) = await asyncio.gather(component.analog_names(), component.digital_interrupt_names())
17-
analogs, digital_interrupts = {}, {}
18-
for x in analog_names:
19-
analog = await component.analog_by_name(x)
20-
read = await analog.read()
21-
analogs[x] = read.value
22-
23-
for y in digital_interrupt_names:
24-
digital_interrupt = await component.digital_interrupt_by_name(y)
25-
val = await digital_interrupt.value()
26-
digital_interrupts[y] = val
27-
28-
s = BoardStatus(analogs=analogs, digital_interrupts=digital_interrupts)
29-
return Status(name=Board.get_resource_name(component.name), status=message_to_struct(s))
30-
31-
32-
Registry.register_subtype(ResourceRegistration(Board, BoardRPCService, lambda name, channel: BoardClient(name, channel), create_status))
9+
Registry.register_subtype(ResourceRegistration(Board, BoardRPCService, lambda name, channel: BoardClient(name, channel)))
Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import asyncio
2-
3-
from viam.proto.component.gantry import Status as GantryStatus
4-
from viam.proto.robot import Status
51
from viam.resource.registry import Registry, ResourceRegistration
6-
from viam.utils import message_to_struct
72

83
from .client import GantryClient
94
from .gantry import Gantry
@@ -13,11 +8,4 @@
138
"Gantry",
149
]
1510

16-
17-
async def create_status(component: Gantry) -> Status:
18-
(positions_mm, lengths_mm, is_moving) = await asyncio.gather(component.get_position(), component.get_lengths(), component.is_moving())
19-
s = GantryStatus(positions_mm=positions_mm, lengths_mm=lengths_mm, is_moving=is_moving)
20-
return Status(name=Gantry.get_resource_name(component.name), status=message_to_struct(s))
21-
22-
23-
Registry.register_subtype(ResourceRegistration(Gantry, GantryRPCService, lambda name, channel: GantryClient(name, channel), create_status))
11+
Registry.register_subtype(ResourceRegistration(Gantry, GantryRPCService, lambda name, channel: GantryClient(name, channel)))
Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
from viam.proto.common import ActuatorStatus
2-
from viam.proto.robot import Status
31
from viam.resource.registry import Registry, ResourceRegistration
4-
from viam.utils import message_to_struct
52

63
from .client import GripperClient
74
from .gripper import Gripper
@@ -11,12 +8,6 @@
118
"Gripper",
129
]
1310

14-
15-
async def create_status(component: Gripper) -> Status:
16-
s = ActuatorStatus(is_moving=await component.is_moving())
17-
return Status(name=Gripper.get_resource_name(component.name), status=message_to_struct(s))
18-
19-
2011
Registry.register_subtype(
21-
ResourceRegistration(Gripper, GripperRPCService, lambda name, channel: GripperClient(name, channel), create_status)
12+
ResourceRegistration(Gripper, GripperRPCService, lambda name, channel: GripperClient(name, channel))
2213
)
Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
from viam.proto.component.inputcontroller import Status as InputStatus
2-
from viam.proto.robot import Status
31
from viam.resource.registry import Registry, ResourceRegistration
4-
from viam.utils import message_to_struct
52

63
from .client import ControllerClient
74
from .input import Control, ControlFunction, Controller, Event, EventType
@@ -15,14 +12,6 @@
1512
"EventType",
1613
]
1714

18-
19-
async def create_status(component: Controller) -> Status:
20-
return Status(
21-
name=Controller.get_resource_name(component.name),
22-
status=message_to_struct(InputStatus(events=[event.proto for event in (await component.get_events()).values()])),
23-
)
24-
25-
2615
Registry.register_subtype(
27-
ResourceRegistration(Controller, InputControllerRPCService, lambda name, channel: ControllerClient(name, channel), create_status)
16+
ResourceRegistration(Controller, InputControllerRPCService, lambda name, channel: ControllerClient(name, channel))
2817
)
Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import asyncio
2-
3-
from viam.proto.component.motor import Status as MotorStatus
4-
from viam.proto.robot import Status
51
from viam.resource.registry import Registry, ResourceRegistration
6-
from viam.utils import message_to_struct
72

83
from .client import MotorClient
94
from .motor import Motor
@@ -13,19 +8,4 @@
138
"Motor",
149
]
1510

16-
17-
async def create_status(component: Motor) -> Status:
18-
((is_powered, _), position, is_moving) = await asyncio.gather(
19-
component.is_powered(),
20-
component.get_position(),
21-
component.is_moving(),
22-
)
23-
s = MotorStatus(
24-
is_powered=is_powered,
25-
position=position,
26-
is_moving=is_moving,
27-
)
28-
return Status(name=Motor.get_resource_name(component.name), status=message_to_struct(s))
29-
30-
31-
Registry.register_subtype(ResourceRegistration(Motor, MotorRPCService, lambda name, channel: MotorClient(name, channel), create_status))
11+
Registry.register_subtype(ResourceRegistration(Motor, MotorRPCService, lambda name, channel: MotorClient(name, channel)))
Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import asyncio
2-
3-
from viam.proto.component.servo import Status as ServoStatus
4-
from viam.proto.robot import Status
51
from viam.resource.registry import Registry, ResourceRegistration
6-
from viam.utils import message_to_struct
72

83
from .client import ServoClient
94
from .service import ServoRPCService
@@ -13,11 +8,4 @@
138
"Servo",
149
]
1510

16-
17-
async def create_status(component: Servo) -> Status:
18-
(position_deg, is_moving) = await asyncio.gather(component.get_position(), component.is_moving())
19-
s = ServoStatus(position_deg=position_deg, is_moving=is_moving)
20-
return Status(name=Servo.get_resource_name(component.name), status=message_to_struct(s))
21-
22-
23-
Registry.register_subtype(ResourceRegistration(Servo, ServoRPCService, lambda name, channel: ServoClient(name, channel), create_status))
11+
Registry.register_subtype(ResourceRegistration(Servo, ServoRPCService, lambda name, channel: ServoClient(name, channel)))

src/viam/resource/registry.py

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
from dataclasses import dataclass
22
from threading import Lock
3-
from typing import TYPE_CHECKING, Any, Callable, ClassVar, Coroutine, Dict, Generic, Mapping, Type, TypeVar
3+
from typing import TYPE_CHECKING, Callable, ClassVar, Dict, Generic, Mapping, Type, TypeVar
44

5-
from google.protobuf.struct_pb2 import Struct
65
from grpclib.client import Channel
76

87
from viam.errors import DuplicateResourceError, ResourceNotFoundError, ValidationError
9-
from viam.proto.robot import Status
108

119
from .base import ResourceBase
1210

@@ -16,11 +14,6 @@
1614

1715
Resource = TypeVar("Resource", bound=ResourceBase)
1816

19-
20-
async def default_create_status(resource: ResourceBase) -> Status:
21-
return Status(name=resource.get_resource_name(resource.name), status=Struct())
22-
23-
2417
@dataclass
2518
class ResourceCreatorRegistration:
2619
"""An object representing a resource creator to be registered.
@@ -63,12 +56,6 @@ class ResourceRegistration(Generic[Resource]):
6356
"""A function that will create the RPC client for this resource
6457
"""
6558

66-
create_status: Callable[[Resource], Coroutine[Any, Any, Status]] = default_create_status
67-
"""A function to create a Status object for this resource.
68-
69-
If the resource does not provide a custom status type, the default implementation can be used.
70-
"""
71-
7259

7360
class Registry:
7461
"""The global registry of robotic parts.

src/viam/robot/client.py

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
GetMachineStatusResponse,
3030
GetOperationsRequest,
3131
GetOperationsResponse,
32-
GetStatusRequest,
33-
GetStatusResponse,
3432
GetVersionRequest,
3533
GetVersionResponse,
3634
LogRequest,
@@ -44,7 +42,6 @@
4442
TransformPoseRequest,
4543
TransformPoseResponse,
4644
)
47-
from viam.proto.robot import Status as PBStatus
4845
from viam.resource.base import ResourceBase
4946
from viam.resource.manager import ResourceManager
5047
from viam.resource.registry import Registry
@@ -601,34 +598,6 @@ async def __aenter__(self):
601598
async def __aexit__(self, exc_type, exc_value, traceback):
602599
await self.close()
603600

604-
##########
605-
# STATUS #
606-
##########
607-
async def get_status(self, components: Optional[List[ResourceName]] = None) -> List[PBStatus]:
608-
"""
609-
Get the status of the machine's components. You can optionally
610-
provide a list of ``ResourceName`` for which you want statuses.
611-
612-
::
613-
614-
# Get the status of the resources on the machine.
615-
statuses = await machine.get_status()
616-
resource_statuses = machine_status.resources
617-
618-
Args:
619-
components (Optional[List[viam.proto.common.ResourceName]]): Optional list of
620-
``ResourceName`` for components you want statuses.
621-
622-
Returns:
623-
List[viam.proto.robot.Status]: A list of statuses for each requested resource.
624-
625-
For more information, see `Machine Management API <https://docs.viam.com/appendix/apis/robot/>`_.
626-
"""
627-
names = components if components is not None else []
628-
request = GetStatusRequest(resource_names=names)
629-
response: GetStatusResponse = await self._client.GetStatus(request)
630-
return list(response.status)
631-
632601
##############
633602
# OPERATIONS #
634603
##############

0 commit comments

Comments
 (0)