Documentation ¶
Overview ¶
Package client contains a gRPC based robot.Robot client.
Index ¶
- Constants
- 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) CloudMetadata(ctx context.Context) (cloud.Metadata, error)
- func (rc *RobotClient) Connected() bool
- func (rc *RobotClient) DiscoverComponents(ctx context.Context, qs []resource.DiscoveryQuery) ([]resource.Discovery, error)
- func (rc *RobotClient) FrameSystemConfig(ctx context.Context) (*framesystem.Config, error)
- func (rc *RobotClient) Log(ctx context.Context, log zapcore.Entry, fields []zap.Field) error
- func (rc *RobotClient) Logger() logging.Logger
- func (rc *RobotClient) OperationManager() *operation.Manager
- func (rc *RobotClient) PackageManager() packages.Manager
- func (rc *RobotClient) ProcessManager() pexec.ProcessManager
- func (rc *RobotClient) Reconfigure(ctx context.Context, deps resource.Dependencies, conf resource.Config) error
- 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) (resource.Resource, error)
- func (rc *RobotClient) ResourceNames() []resource.Name
- func (rc *RobotClient) ResourceRPCAPIs() []resource.RPCAPI
- func (rc *RobotClient) SessionManager() session.Manager
- 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) TransformPointCloud(ctx context.Context, srcpc pointcloud.PointCloud, srcName, dstName string) (pointcloud.PointCloud, 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 WithDisableSessions() RobotClientOption
- func WithReconnectEvery(reconnectEvery time.Duration) RobotClientOption
- func WithRefreshEvery(refreshEvery time.Duration) RobotClientOption
- func WithRemoteName(remoteName string) RobotClientOption
Constants ¶
const RemoteTypeName = string("remote")
RemoteTypeName is the type name used for a remote. This is for internal use.
Variables ¶
var ( // ErrMissingClientRegistration is used when there is no resource client registered for the API. ErrMissingClientRegistration = errors.New("resource client registration doesn't exist") )
var RemoteAPI = resource.APINamespaceRDK.WithType(RemoteTypeName).WithSubtype("")
RemoteAPI is the fully qualified API for a remote. This is for internal use.
Functions ¶
func ExtractDialOptions ¶
func ExtractDialOptions(opts ...RobotClientOption) []rpc.DialOption
ExtractDialOptions extracts RPC dial options from the given options, if any exist.
Types ¶
type RobotClient ¶
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, clientLogger logging.ZapCompatibleLogger, 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) CloudMetadata ¶ added in v0.23.0
CloudMetadata returns app-related information about the robot.
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 []resource.DiscoveryQuery) ([]resource.Discovery, error)
DiscoverComponents takes a list of discovery queries and returns corresponding component configurations.
func (*RobotClient) FrameSystemConfig ¶
func (rc *RobotClient) FrameSystemConfig(ctx context.Context) (*framesystem.Config, error)
FrameSystemConfig returns the info of each individual part that makes up the frame system.
func (*RobotClient) Log ¶ added in v0.21.0
Log sends a log entry to the server. To be used by Golang modules wanting to log over gRPC and not by normal Golang SDK clients.
func (*RobotClient) Logger ¶
func (rc *RobotClient) Logger() logging.Logger
Logger returns the logger being used for this robot.
func (*RobotClient) OperationManager ¶
func (rc *RobotClient) OperationManager() *operation.Manager
OperationManager returns nil.
func (*RobotClient) PackageManager ¶ added in v0.2.15
func (rc *RobotClient) PackageManager() packages.Manager
PackageManager 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) Reconfigure ¶ added in v0.2.36
func (rc *RobotClient) Reconfigure(ctx context.Context, deps resource.Dependencies, conf resource.Config) error
Reconfigure always returns an unsupported error.
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 ¶
ResourceByName returns resource by name.
func (*RobotClient) ResourceNames ¶
func (rc *RobotClient) ResourceNames() []resource.Name
ResourceNames returns all resource names.
func (*RobotClient) ResourceRPCAPIs ¶ added in v0.2.36
func (rc *RobotClient) ResourceRPCAPIs() []resource.RPCAPI
ResourceRPCAPIs returns a list of all known resource APIs.
func (*RobotClient) SessionManager ¶ added in v0.2.5
func (rc *RobotClient) SessionManager() session.Manager
SessionManager returns nil.
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) TransformPointCloud ¶ added in v0.2.11
func (rc *RobotClient) TransformPointCloud(ctx context.Context, srcpc pointcloud.PointCloud, srcName, dstName string, ) (pointcloud.PointCloud, error)
TransformPointCloud will transform the pointcloud to the desired frame in the robot's frame system. Do not move the robot between the generation of the initial pointcloud and the receipt of the transformed pointcloud because that will make the transformations inaccurate. TODO(RSDK-1197): Rather than having to apply a transform to every point using ApplyOffset, implementing the suggested ticket would mean simply adding the transform to a field in the point cloud struct, and then returning the updated struct. Would be super fast.
func (*RobotClient) TransformPose ¶
func (rc *RobotClient) TransformPose( ctx context.Context, query *referenceframe.PoseInFrame, destination string, additionalTransforms []*referenceframe.LinkInFrame, ) (*referenceframe.PoseInFrame, error)
TransformPose will transform the pose of the requested poseInFrame to the desired frame in the robot's frame system.
import ( "go.viam.com/rdk/referenceframe" "go.viam.com/rdk/spatialmath" ) baseOrigin := referenceframe.NewPoseInFrame("test-base", spatialmath.NewZeroPose()) movementSensorToBase, err := robot.TransformPose(ctx, baseOrigin, "my-movement-sensor", nil)
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 WithDisableSessions ¶ added in v0.2.5
func WithDisableSessions() RobotClientOption
WithDisableSessions returns a RobotClientOption that disables session support.
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.