arm

package
v0.2.30 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2023 License: AGPL-3.0 Imports: 29 Imported by: 2

Documentation

Overview

Package arm defines the arm that a robot uses to manipulate objects.

Package arm contains a gRPC based arm client.

Package arm contains a gRPC based arm service server.

Index

Constants

View Source
const MTPoob = "cartesian movements are not allowed when arm joints are out of bounds"

MTPoob is a string that all MoveToPosition errors should contain if the method is called and there are joints which are out of bounds.

View Source
const (
	SubtypeName = resource.SubtypeName("arm")
)

SubtypeName is a constant that identifies the component resource subtype string "arm".

Variables

View Source
var (

	// ErrStopUnimplemented is used for when Stop() is unimplemented.
	ErrStopUnimplemented = errors.New("Stop() unimplemented")
)

Subtype is a constant that identifies the component resource subtype.

Functions

func CheckDesiredJointPositions added in v0.2.15

func CheckDesiredJointPositions(ctx context.Context, a Arm, desiredJoints []float64) error

CheckDesiredJointPositions validates that the desired joint positions either bring the joint back in bounds or do not move the joint more out of bounds.

func CreateStatus

func CreateStatus(ctx context.Context, resource interface{}) (*pb.Status, error)

CreateStatus creates a status from the arm.

func DependencyTypeError

func DependencyTypeError(name string, actual interface{}) error

DependencyTypeError is used when a resource doesn't implement the expected interface.

func GoToWaypoints

func GoToWaypoints(ctx context.Context, a Arm, waypoints [][]referenceframe.Input) error

GoToWaypoints will visit in turn each of the joint position waypoints generated by a motion planner.

func Move

func Move(ctx context.Context, r robot.Robot, a Arm, dst spatialmath.Pose, worldState *referenceframe.WorldState) error

Move is a helper function to abstract away movement for general arms.

func Named

func Named(name string) resource.Name

Named is a helper for getting the named Arm's typed resource name.

func NamesFromRobot

func NamesFromRobot(r robot.Robot) []string

NamesFromRobot is a helper for getting all arm names from the given Robot.

func NewServer

func NewServer(s subtype.Service) pb.ArmServiceServer

NewServer constructs an arm gRPC service server.

func NewUnimplementedInterfaceError

func NewUnimplementedInterfaceError(actual interface{}) error

NewUnimplementedInterfaceError is used when there is a failed interface check.

func NewUnimplementedLocalInterfaceError

func NewUnimplementedLocalInterfaceError(actual interface{}) error

NewUnimplementedLocalInterfaceError is used when there is a failed interface check.

func Plan

func Plan(
	ctx context.Context,
	r robot.Robot,
	a Arm,
	dst spatialmath.Pose,
	worldState *referenceframe.WorldState,
) ([][]referenceframe.Input, error)

Plan is a helper function to be called by arm implementations to abstract away the default procedure for using the motion planning library with arms.

func WrapWithReconfigurable

func WrapWithReconfigurable(r interface{}, name resource.Name) (resource.Reconfigurable, error)

WrapWithReconfigurable converts a regular Arm implementation to a reconfigurableArm and a localArm into a reconfigurableLocalArm If arm is already a Reconfigurable, then nothing is done.

Types

type Arm

type Arm interface {
	// EndPosition returns the current position of the arm.
	EndPosition(ctx context.Context, extra map[string]interface{}) (spatialmath.Pose, error)

	// MoveToPosition moves the arm to the given absolute position.
	// The worldState argument should be treated as optional by all implementing drivers
	// This will block until done or a new operation cancels this one
	MoveToPosition(ctx context.Context, pose spatialmath.Pose, worldState *referenceframe.WorldState, extra map[string]interface{}) error

	// MoveToJointPositions moves the arm's joints to the given positions.
	// This will block until done or a new operation cancels this one
	MoveToJointPositions(ctx context.Context, positionDegs *pb.JointPositions, extra map[string]interface{}) error

	// JointPositions returns the current joint positions of the arm.
	JointPositions(ctx context.Context, extra map[string]interface{}) (*pb.JointPositions, error)

	// Stop stops the arm. It is assumed the arm stops immediately.
	Stop(ctx context.Context, extra map[string]interface{}) error

	generic.Generic
	referenceframe.ModelFramer
	referenceframe.InputEnabled
	resource.MovingCheckable
}

An Arm represents a physical robotic arm that exists in three-dimensional space.

func FromDependencies

func FromDependencies(deps registry.Dependencies, name string) (Arm, error)

FromDependencies is a helper for getting the named arm from a collection of dependencies.

func FromRobot

func FromRobot(r robot.Robot, name string) (Arm, error)

FromRobot is a helper for getting the named Arm from the given Robot.

func NewClientFromConn

func NewClientFromConn(ctx context.Context, conn rpc.ClientConn, name string, logger golog.Logger) Arm

NewClientFromConn constructs a new Client from connection passed in.

type LocalArm

type LocalArm interface {
	Arm
}

A LocalArm represents an Arm that can report whether it is moving or not.

Directories

Path Synopsis
Package eva implements the Eva robot from Automata.
Package eva implements the Eva robot from Automata.
Package fake implements a fake arm.
Package fake implements a fake arm.
Package register registers all relevant arms
Package register registers all relevant arms
Package universalrobots implements the UR arm from Universal Robots.
Package universalrobots implements the UR arm from Universal Robots.
Package wrapper is a package that defines an implementation that wraps a partially implemented arm
Package wrapper is a package that defines an implementation that wraps a partially implemented arm
Package xarm implements some xArms.
Package xarm implements some xArms.
Package yahboom implements a yahboom based robot.
Package yahboom implements a yahboom based robot.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL