Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions examples/server/v1/components.py
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,7 @@ async def get_position(self, extra: Optional[Dict[str, Any]] = None, **kwargs) -
async def move_to_position(
self,
positions: List[float],
speeds: List[float],
extra: Optional[Dict[str, Any]] = None,
**kwargs,
):
Expand All @@ -481,6 +482,9 @@ async def move_to_position(
async def get_lengths(self, extra: Optional[Dict[str, Any]] = None, **kwargs) -> List[float]:
return self.lengths

async def home(self, extra: Optional[Dict[str, Any]] = None, **kwargs) -> bool:
return True

async def stop(self, extra: Optional[Dict[str, Any]] = None, **kwargs):
self.is_stopped = True

Expand Down
16 changes: 15 additions & 1 deletion src/viam/components/gantry/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
GetLengthsResponse,
GetPositionRequest,
GetPositionResponse,
HomeRequest,
HomeResponse,
IsMovingRequest,
IsMovingResponse,
MoveToPositionRequest,
Expand Down Expand Up @@ -40,15 +42,27 @@ async def get_position(self, *, extra: Optional[Dict[str, Any]] = None, timeout:
async def move_to_position(
self,
positions: List[float],
speeds: List[float],
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
):
if extra is None:
extra = {}
request = MoveToPositionRequest(name=self.name, positions_mm=positions, extra=dict_to_struct(extra))
request = MoveToPositionRequest(
name=self.name,
positions_mm=positions,
speeds_mm_per_sec=speeds,
extra=dict_to_struct(extra))
await self.client.MoveToPosition(request, timeout=timeout)

async def home(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> bool:
if extra is None:
extra = {}
request = HomeRequest(name=self.name, extra=dict_to_struct(extra))
response : HomeResponse = await self.client.Home(request, timeout=timeout)
return response.homed

async def get_lengths(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None) -> List[float]:
if extra is None:
extra = {}
Expand Down
12 changes: 11 additions & 1 deletion src/viam/components/gantry/gantry.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,20 +31,30 @@ async def get_position(self, *, extra: Optional[Dict[str, Any]] = None, timeout:
async def move_to_position(
self,
positions: List[float],
speeds: List[float],
*,
extra: Optional[Dict[str, Any]] = None,
timeout: Optional[float] = None,
**kwargs,
):
"""
Move the gantry to a new position.
Move the gantry to a new position at the requested speeds.

Args:
positions (List[float]): List of positions for the axes to move to,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@randhid shouldn't speeds have been added here?

in millimeters.
"""
...

@abc.abstractmethod
async def home(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> bool:
"""
Home the gantry to find it's starting and ending positions

Returns:
bool : whether the gantry has run the homing sequence successfully
"""

@abc.abstractmethod
async def get_lengths(self, *, extra: Optional[Dict[str, Any]] = None, timeout: Optional[float] = None, **kwargs) -> List[float]:
"""
Expand Down
18 changes: 17 additions & 1 deletion src/viam/components/gantry/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
GetLengthsResponse,
GetPositionRequest,
GetPositionResponse,
HomeRequest,
HomeResponse,
IsMovingRequest,
IsMovingResponse,
MoveToPositionRequest,
Expand Down Expand Up @@ -45,11 +47,25 @@ async def MoveToPosition(self, stream: Stream[MoveToPositionRequest, MoveToPosit
gantry = self.get_resource(name)
timeout = stream.deadline.time_remaining() if stream.deadline else None
await gantry.move_to_position(
list(request.positions_mm), extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata
list(request.positions_mm),
list(request.speeds_mm_per_sec),
extra=struct_to_dict(request.extra),
timeout=timeout,
metadata=stream.metadata
)
response = MoveToPositionResponse()
await stream.send_message(response)

async def Home(self, stream: Stream[HomeRequest, HomeResponse]) -> None:
request = await stream.recv_message()
assert request is not None
name = request.name
gantry = self.get_resource(name)
timeout = stream.deadline.time_remaining() if stream.deadline else None
homed = await gantry.home(extra=struct_to_dict(request.extra), timeout=timeout, metadata=stream.metadata)
response = HomeResponse(homed=homed)
await stream.send_message(response)

async def GetLengths(self, stream: Stream[GetLengthsRequest, GetLengthsResponse]) -> None:
request = await stream.recv_message()
assert request is not None
Expand Down
7 changes: 6 additions & 1 deletion src/viam/gen/component/gantry/v1/gantry_grpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ async def GetPosition(self, stream: 'grpclib.server.Stream[component.gantry.v1.g
async def MoveToPosition(self, stream: 'grpclib.server.Stream[component.gantry.v1.gantry_pb2.MoveToPositionRequest, component.gantry.v1.gantry_pb2.MoveToPositionResponse]') -> None:
pass

@abc.abstractmethod
async def Home(self, stream: 'grpclib.server.Stream[component.gantry.v1.gantry_pb2.HomeRequest, component.gantry.v1.gantry_pb2.HomeResponse]') -> None:
pass

@abc.abstractmethod
async def GetLengths(self, stream: 'grpclib.server.Stream[component.gantry.v1.gantry_pb2.GetLengthsRequest, component.gantry.v1.gantry_pb2.GetLengthsResponse]') -> None:
pass
Expand All @@ -40,13 +44,14 @@ async def GetGeometries(self, stream: 'grpclib.server.Stream[common.v1.common_pb
pass

def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]:
return {'/viam.component.gantry.v1.GantryService/GetPosition': grpclib.const.Handler(self.GetPosition, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.GetPositionRequest, component.gantry.v1.gantry_pb2.GetPositionResponse), '/viam.component.gantry.v1.GantryService/MoveToPosition': grpclib.const.Handler(self.MoveToPosition, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.MoveToPositionRequest, component.gantry.v1.gantry_pb2.MoveToPositionResponse), '/viam.component.gantry.v1.GantryService/GetLengths': grpclib.const.Handler(self.GetLengths, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.GetLengthsRequest, component.gantry.v1.gantry_pb2.GetLengthsResponse), '/viam.component.gantry.v1.GantryService/Stop': grpclib.const.Handler(self.Stop, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.StopRequest, component.gantry.v1.gantry_pb2.StopResponse), '/viam.component.gantry.v1.GantryService/IsMoving': grpclib.const.Handler(self.IsMoving, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.IsMovingRequest, component.gantry.v1.gantry_pb2.IsMovingResponse), '/viam.component.gantry.v1.GantryService/DoCommand': grpclib.const.Handler(self.DoCommand, grpclib.const.Cardinality.UNARY_UNARY, common.v1.common_pb2.DoCommandRequest, common.v1.common_pb2.DoCommandResponse), '/viam.component.gantry.v1.GantryService/GetGeometries': grpclib.const.Handler(self.GetGeometries, grpclib.const.Cardinality.UNARY_UNARY, common.v1.common_pb2.GetGeometriesRequest, common.v1.common_pb2.GetGeometriesResponse)}
return {'/viam.component.gantry.v1.GantryService/GetPosition': grpclib.const.Handler(self.GetPosition, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.GetPositionRequest, component.gantry.v1.gantry_pb2.GetPositionResponse), '/viam.component.gantry.v1.GantryService/MoveToPosition': grpclib.const.Handler(self.MoveToPosition, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.MoveToPositionRequest, component.gantry.v1.gantry_pb2.MoveToPositionResponse), '/viam.component.gantry.v1.GantryService/Home': grpclib.const.Handler(self.Home, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.HomeRequest, component.gantry.v1.gantry_pb2.HomeResponse), '/viam.component.gantry.v1.GantryService/GetLengths': grpclib.const.Handler(self.GetLengths, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.GetLengthsRequest, component.gantry.v1.gantry_pb2.GetLengthsResponse), '/viam.component.gantry.v1.GantryService/Stop': grpclib.const.Handler(self.Stop, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.StopRequest, component.gantry.v1.gantry_pb2.StopResponse), '/viam.component.gantry.v1.GantryService/IsMoving': grpclib.const.Handler(self.IsMoving, grpclib.const.Cardinality.UNARY_UNARY, component.gantry.v1.gantry_pb2.IsMovingRequest, component.gantry.v1.gantry_pb2.IsMovingResponse), '/viam.component.gantry.v1.GantryService/DoCommand': grpclib.const.Handler(self.DoCommand, grpclib.const.Cardinality.UNARY_UNARY, common.v1.common_pb2.DoCommandRequest, common.v1.common_pb2.DoCommandResponse), '/viam.component.gantry.v1.GantryService/GetGeometries': grpclib.const.Handler(self.GetGeometries, grpclib.const.Cardinality.UNARY_UNARY, common.v1.common_pb2.GetGeometriesRequest, common.v1.common_pb2.GetGeometriesResponse)}

class GantryServiceStub:

def __init__(self, channel: grpclib.client.Channel) -> None:
self.GetPosition = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gantry.v1.GantryService/GetPosition', component.gantry.v1.gantry_pb2.GetPositionRequest, component.gantry.v1.gantry_pb2.GetPositionResponse)
self.MoveToPosition = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gantry.v1.GantryService/MoveToPosition', component.gantry.v1.gantry_pb2.MoveToPositionRequest, component.gantry.v1.gantry_pb2.MoveToPositionResponse)
self.Home = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gantry.v1.GantryService/Home', component.gantry.v1.gantry_pb2.HomeRequest, component.gantry.v1.gantry_pb2.HomeResponse)
self.GetLengths = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gantry.v1.GantryService/GetLengths', component.gantry.v1.gantry_pb2.GetLengthsRequest, component.gantry.v1.gantry_pb2.GetLengthsResponse)
self.Stop = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gantry.v1.GantryService/Stop', component.gantry.v1.gantry_pb2.StopRequest, component.gantry.v1.gantry_pb2.StopResponse)
self.IsMoving = grpclib.client.UnaryUnaryMethod(channel, '/viam.component.gantry.v1.GantryService/IsMoving', component.gantry.v1.gantry_pb2.IsMovingRequest, component.gantry.v1.gantry_pb2.IsMovingResponse)
Expand Down
48 changes: 27 additions & 21 deletions src/viam/gen/component/gantry/v1/gantry_pb2.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from ....common.v1 import common_pb2 as common_dot_v1_dot_common__pb2
from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/gantry/v1/gantry.proto\x12\x18viam.component.gantry.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"8\n\x13GetPositionResponse\x12!\n\x0cpositions_mm\x18\x01 \x03(\x01R\x0bpositionsMm"}\n\x15MoveToPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12!\n\x0cpositions_mm\x18\x02 \x03(\x01R\x0bpositionsMm\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x18\n\x16MoveToPositionResponse"V\n\x11GetLengthsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"3\n\x12GetLengthsResponse\x12\x1d\n\nlengths_mm\x18\x01 \x03(\x01R\tlengthsMm"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"g\n\x06Status\x12!\n\x0cpositions_mm\x18\x01 \x03(\x01R\x0bpositionsMm\x12\x1d\n\nlengths_mm\x18\x02 \x03(\x01R\tlengthsMm\x12\x1b\n\tis_moving\x18\x03 \x01(\x08R\x08isMoving"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving2\xcf\x08\n\rGantryService\x12\xa1\x01\n\x0bGetPosition\x12,.viam.component.gantry.v1.GetPositionRequest\x1a-.viam.component.gantry.v1.GetPositionResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/gantry/{name}/position\x12\xae\x01\n\x0eMoveToPosition\x12/.viam.component.gantry.v1.MoveToPositionRequest\x1a0.viam.component.gantry.v1.MoveToPositionResponse"9\xa0\x92)\x01\x82\xd3\xe4\x93\x02/\x1a-/viam/api/v1/component/gantry/{name}/position\x12\x9d\x01\n\nGetLengths\x12+.viam.component.gantry.v1.GetLengthsRequest\x1a,.viam.component.gantry.v1.GetLengthsResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/gantry/{name}/lengths\x12\x88\x01\n\x04Stop\x12%.viam.component.gantry.v1.StopRequest\x1a&.viam.component.gantry.v1.StopResponse"1\x82\xd3\xe4\x93\x02+")/viam/api/v1/component/gantry/{name}/stop\x12\x99\x01\n\x08IsMoving\x12).viam.component.gantry.v1.IsMovingRequest\x1a*.viam.component.gantry.v1.IsMovingResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/gantry/{name}/is_moving\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/gantry/{name}/do_command\x12\x95\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gantry/{name}/geometriesBC\n\x1ccom.viam.component.gantry.v1Z#go.viam.com/api/component/gantry/v1b\x06proto3')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n component/gantry/v1/gantry.proto\x12\x18viam.component.gantry.v1\x1a\x16common/v1/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto"W\n\x12GetPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"8\n\x13GetPositionResponse\x12!\n\x0cpositions_mm\x18\x01 \x03(\x01R\x0bpositionsMm"\xa8\x01\n\x15MoveToPositionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12!\n\x0cpositions_mm\x18\x02 \x03(\x01R\x0bpositionsMm\x12)\n\x11speeds_mm_per_sec\x18\x03 \x03(\x01R\x0espeedsMmPerSec\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x18\n\x16MoveToPositionResponse"P\n\x0bHomeRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"$\n\x0cHomeResponse\x12\x14\n\x05homed\x18\x01 \x01(\x08R\x05homed"V\n\x11GetLengthsRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"3\n\x12GetLengthsResponse\x12\x1d\n\nlengths_mm\x18\x01 \x03(\x01R\tlengthsMm"P\n\x0bStopRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12-\n\x05extra\x18c \x01(\x0b2\x17.google.protobuf.StructR\x05extra"\x0e\n\x0cStopResponse"g\n\x06Status\x12!\n\x0cpositions_mm\x18\x01 \x03(\x01R\x0bpositionsMm\x12\x1d\n\nlengths_mm\x18\x02 \x03(\x01R\tlengthsMm\x12\x1b\n\tis_moving\x18\x03 \x01(\x08R\x08isMoving"%\n\x0fIsMovingRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name"/\n\x10IsMovingResponse\x12\x1b\n\tis_moving\x18\x01 \x01(\x08R\x08isMoving2\xda\t\n\rGantryService\x12\xa1\x01\n\x0bGetPosition\x12,.viam.component.gantry.v1.GetPositionRequest\x1a-.viam.component.gantry.v1.GetPositionResponse"5\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/gantry/{name}/position\x12\xae\x01\n\x0eMoveToPosition\x12/.viam.component.gantry.v1.MoveToPositionRequest\x1a0.viam.component.gantry.v1.MoveToPositionResponse"9\xa0\x92)\x01\x82\xd3\xe4\x93\x02/\x1a-/viam/api/v1/component/gantry/{name}/position\x12\x88\x01\n\x04Home\x12%.viam.component.gantry.v1.HomeRequest\x1a&.viam.component.gantry.v1.HomeResponse"1\x82\xd3\xe4\x93\x02+\x1a)/viam/api/v1/component/gantry/{name}/home\x12\x9d\x01\n\nGetLengths\x12+.viam.component.gantry.v1.GetLengthsRequest\x1a,.viam.component.gantry.v1.GetLengthsResponse"4\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/gantry/{name}/lengths\x12\x88\x01\n\x04Stop\x12%.viam.component.gantry.v1.StopRequest\x1a&.viam.component.gantry.v1.StopResponse"1\x82\xd3\xe4\x93\x02+")/viam/api/v1/component/gantry/{name}/stop\x12\x99\x01\n\x08IsMoving\x12).viam.component.gantry.v1.IsMovingRequest\x1a*.viam.component.gantry.v1.IsMovingResponse"6\x82\xd3\xe4\x93\x020\x12./viam/api/v1/component/gantry/{name}/is_moving\x12\x89\x01\n\tDoCommand\x12 .viam.common.v1.DoCommandRequest\x1a!.viam.common.v1.DoCommandResponse"7\x82\xd3\xe4\x93\x021"//viam/api/v1/component/gantry/{name}/do_command\x12\x95\x01\n\rGetGeometries\x12$.viam.common.v1.GetGeometriesRequest\x1a%.viam.common.v1.GetGeometriesResponse"7\x82\xd3\xe4\x93\x021\x12//viam/api/v1/component/gantry/{name}/geometriesBC\n\x1ccom.viam.component.gantry.v1Z#go.viam.com/api/component/gantry/v1b\x06proto3')
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'component.gantry.v1.gantry_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:
Expand All @@ -17,6 +17,8 @@
_GANTRYSERVICE.methods_by_name['GetPosition']._serialized_options = b'\x82\xd3\xe4\x93\x02/\x12-/viam/api/v1/component/gantry/{name}/position'
_GANTRYSERVICE.methods_by_name['MoveToPosition']._options = None
_GANTRYSERVICE.methods_by_name['MoveToPosition']._serialized_options = b'\xa0\x92)\x01\x82\xd3\xe4\x93\x02/\x1a-/viam/api/v1/component/gantry/{name}/position'
_GANTRYSERVICE.methods_by_name['Home']._options = None
_GANTRYSERVICE.methods_by_name['Home']._serialized_options = b'\x82\xd3\xe4\x93\x02+\x1a)/viam/api/v1/component/gantry/{name}/home'
_GANTRYSERVICE.methods_by_name['GetLengths']._options = None
_GANTRYSERVICE.methods_by_name['GetLengths']._serialized_options = b'\x82\xd3\xe4\x93\x02.\x12,/viam/api/v1/component/gantry/{name}/lengths'
_GANTRYSERVICE.methods_by_name['Stop']._options = None
Expand All @@ -31,23 +33,27 @@
_GETPOSITIONREQUEST._serialized_end = 233
_GETPOSITIONRESPONSE._serialized_start = 235
_GETPOSITIONRESPONSE._serialized_end = 291
_MOVETOPOSITIONREQUEST._serialized_start = 293
_MOVETOPOSITIONREQUEST._serialized_end = 418
_MOVETOPOSITIONRESPONSE._serialized_start = 420
_MOVETOPOSITIONRESPONSE._serialized_end = 444
_GETLENGTHSREQUEST._serialized_start = 446
_GETLENGTHSREQUEST._serialized_end = 532
_GETLENGTHSRESPONSE._serialized_start = 534
_GETLENGTHSRESPONSE._serialized_end = 585
_STOPREQUEST._serialized_start = 587
_STOPREQUEST._serialized_end = 667
_STOPRESPONSE._serialized_start = 669
_STOPRESPONSE._serialized_end = 683
_STATUS._serialized_start = 685
_STATUS._serialized_end = 788
_ISMOVINGREQUEST._serialized_start = 790
_ISMOVINGREQUEST._serialized_end = 827
_ISMOVINGRESPONSE._serialized_start = 829
_ISMOVINGRESPONSE._serialized_end = 876
_GANTRYSERVICE._serialized_start = 879
_GANTRYSERVICE._serialized_end = 1982
_MOVETOPOSITIONREQUEST._serialized_start = 294
_MOVETOPOSITIONREQUEST._serialized_end = 462
_MOVETOPOSITIONRESPONSE._serialized_start = 464
_MOVETOPOSITIONRESPONSE._serialized_end = 488
_HOMEREQUEST._serialized_start = 490
_HOMEREQUEST._serialized_end = 570
_HOMERESPONSE._serialized_start = 572
_HOMERESPONSE._serialized_end = 608
_GETLENGTHSREQUEST._serialized_start = 610
_GETLENGTHSREQUEST._serialized_end = 696
_GETLENGTHSRESPONSE._serialized_start = 698
_GETLENGTHSRESPONSE._serialized_end = 749
_STOPREQUEST._serialized_start = 751
_STOPREQUEST._serialized_end = 831
_STOPRESPONSE._serialized_start = 833
_STOPRESPONSE._serialized_end = 847
_STATUS._serialized_start = 849
_STATUS._serialized_end = 952
_ISMOVINGREQUEST._serialized_start = 954
_ISMOVINGREQUEST._serialized_end = 991
_ISMOVINGRESPONSE._serialized_start = 993
_ISMOVINGRESPONSE._serialized_end = 1040
_GANTRYSERVICE._serialized_start = 1043
_GANTRYSERVICE._serialized_end = 2285
Loading