Documentation ¶
Overview ¶
Package client contains a gRPC based robot.Robot client.
Index ¶
- Variables
- func ExtractDialOptions(opts ...RobotClientOption) []rpc.DialOption
- type RobotClient
- func (rc *RobotClient) Changed() <-chan bool
- func (rc *RobotClient) Close(ctx context.Context) error
- func (rc *RobotClient) Connected() bool
- func (rc *RobotClient) DiscoverComponents(ctx context.Context, qs []discovery.Query) ([]discovery.Discovery, error)
- func (rc *RobotClient) FrameSystemConfig(ctx context.Context, additionalTransforms []*commonpb.Transform) (framesystemparts.Parts, error)
- func (rc *RobotClient) Logger() golog.Logger
- func (rc *RobotClient) OperationManager() *operation.Manager
- func (rc *RobotClient) ProcessManager() pexec.ProcessManager
- func (rc *RobotClient) Refresh(ctx context.Context) (err error)
- func (rc *RobotClient) RefreshEvery(ctx context.Context, every time.Duration)
- func (rc *RobotClient) RemoteByName(name string) (robot.Robot, bool)
- func (rc *RobotClient) RemoteNames() []string
- func (rc *RobotClient) ResourceByName(name resource.Name) (interface{}, error)
- func (rc *RobotClient) ResourceNames() []resource.Name
- func (rc *RobotClient) ResourceRPCSubtypes() []resource.RPCSubtype
- func (rc *RobotClient) SetParentNotifier(f func())
- func (rc *RobotClient) Status(ctx context.Context, resourceNames []resource.Name) ([]robot.Status, error)
- func (rc *RobotClient) StopAll(ctx context.Context, extra map[resource.Name]map[string]interface{}) error
- func (rc *RobotClient) TransformPose(ctx context.Context, query *referenceframe.PoseInFrame, destination string, ...) (*referenceframe.PoseInFrame, error)
- type RobotClientOption
- func WithCheckConnectedEvery(checkConnectedEvery time.Duration) RobotClientOption
- func WithDialOptions(opts ...rpc.DialOption) RobotClientOption
- func WithReconnectEvery(reconnectEvery time.Duration) RobotClientOption
- func WithRefreshEvery(refreshEvery time.Duration) RobotClientOption
- func WithRemoteName(remoteName string) RobotClientOption
Constants ¶
This section is empty.
Variables ¶
var ( // ErrMissingClientRegistration is used when there is no resource client registered for the subtype. ErrMissingClientRegistration = errors.New("resource client registration doesn't exist") )
Functions ¶
func ExtractDialOptions ¶
func ExtractDialOptions(opts ...RobotClientOption) []rpc.DialOption
ExtractDialOptions extracts RPC dial options from the given options, if any exist.
Types ¶
type RobotClient ¶
type RobotClient struct {
// contains filtered or unexported fields
}
RobotClient satisfies the robot.Robot interface through a gRPC based client conforming to the robot.proto contract.
func New ¶
func New(ctx context.Context, address string, logger golog.Logger, opts ...RobotClientOption) (*RobotClient, error)
New constructs a new RobotClient that is served at the given address. The given context can be used to cancel the operation.
func (*RobotClient) Changed ¶
func (rc *RobotClient) Changed() <-chan bool
Changed watches for whether the remote has changed.
func (*RobotClient) Close ¶
func (rc *RobotClient) Close(ctx context.Context) error
Close cleanly closes the underlying connections and stops the refresh goroutine if it is running.
func (*RobotClient) Connected ¶
func (rc *RobotClient) Connected() bool
Connected exposes whether a robot client is connected to the remote.
func (*RobotClient) DiscoverComponents ¶
func (rc *RobotClient) DiscoverComponents(ctx context.Context, qs []discovery.Query) ([]discovery.Discovery, error)
DiscoverComponents takes a list of discovery queries and returns corresponding component configurations.
func (*RobotClient) FrameSystemConfig ¶
func (rc *RobotClient) FrameSystemConfig(ctx context.Context, additionalTransforms []*commonpb.Transform) (framesystemparts.Parts, error)
FrameSystemConfig returns the info of each individual part that makes up the frame system.
func (*RobotClient) Logger ¶
func (rc *RobotClient) Logger() golog.Logger
Logger returns the logger being used for this robot.
func (*RobotClient) OperationManager ¶
func (rc *RobotClient) OperationManager() *operation.Manager
OperationManager returns nil.
func (*RobotClient) ProcessManager ¶
func (rc *RobotClient) ProcessManager() pexec.ProcessManager
ProcessManager returns a useless process manager for the sake of satisfying the robot.Robot interface. Maybe it should not be part of the interface!
func (*RobotClient) Refresh ¶
func (rc *RobotClient) Refresh(ctx context.Context) (err error)
Refresh manually updates the underlying parts of the robot based on its metadata response.
func (*RobotClient) RefreshEvery ¶
func (rc *RobotClient) RefreshEvery(ctx context.Context, every time.Duration)
RefreshEvery refreshes the robot on the interval given by every until the given context is done.
func (*RobotClient) RemoteByName ¶
func (rc *RobotClient) RemoteByName(name string) (robot.Robot, bool)
RemoteByName returns a remote robot by name. It is assumed to exist on the other end. Right now this method is unimplemented.
func (*RobotClient) RemoteNames ¶
func (rc *RobotClient) RemoteNames() []string
RemoteNames returns the names of all known remotes.
func (*RobotClient) ResourceByName ¶
func (rc *RobotClient) ResourceByName(name resource.Name) (interface{}, error)
ResourceByName returns resource by name.
func (*RobotClient) ResourceNames ¶
func (rc *RobotClient) ResourceNames() []resource.Name
ResourceNames returns all resource names.
func (*RobotClient) ResourceRPCSubtypes ¶
func (rc *RobotClient) ResourceRPCSubtypes() []resource.RPCSubtype
ResourceRPCSubtypes returns a list of all known resource subtypes.
func (*RobotClient) SetParentNotifier ¶
func (rc *RobotClient) SetParentNotifier(f func())
SetParentNotifier set the notifier function, robot client will use that the relay changes.
func (*RobotClient) Status ¶
func (rc *RobotClient) Status(ctx context.Context, resourceNames []resource.Name) ([]robot.Status, error)
Status takes a list of resource names and returns their corresponding statuses. If no names are passed in, return all statuses.
func (*RobotClient) StopAll ¶
func (rc *RobotClient) StopAll(ctx context.Context, extra map[resource.Name]map[string]interface{}) error
StopAll cancels all current and outstanding operations for the robot and stops all actuators and movement.
func (*RobotClient) TransformPose ¶
func (rc *RobotClient) TransformPose( ctx context.Context, query *referenceframe.PoseInFrame, destination string, additionalTransforms []*commonpb.Transform, ) (*referenceframe.PoseInFrame, error)
TransformPose will transform the pose of the requested poseInFrame to the desired frame in the robot's frame system.
type RobotClientOption ¶
type RobotClientOption interface {
// contains filtered or unexported methods
}
RobotClientOption configures how we set up the connection. Cribbed from https://github.com/grpc/grpc-go/blob/aff571cc86e6e7e740130dbbb32a9741558db805/dialoptions.go#L41
func WithCheckConnectedEvery ¶
func WithCheckConnectedEvery(checkConnectedEvery time.Duration) RobotClientOption
WithCheckConnectedEvery returns a RobotClientOption for how often to check connection to the robot.
func WithDialOptions ¶
func WithDialOptions(opts ...rpc.DialOption) RobotClientOption
WithDialOptions returns a RobotClientOption which sets the options for making gRPC connections to other servers.
func WithReconnectEvery ¶
func WithReconnectEvery(reconnectEvery time.Duration) RobotClientOption
WithReconnectEvery returns a RobotClientOption for how often to reconnect the robot.
func WithRefreshEvery ¶
func WithRefreshEvery(refreshEvery time.Duration) RobotClientOption
WithRefreshEvery returns a RobotClientOption for how often to refresh the status/parts of the robot.
func WithRemoteName ¶ added in v0.2.2
func WithRemoteName(remoteName string) RobotClientOption
WithRemoteName returns a RobotClientOption setting the name of the remote robot.