motor

package
v0.2.46 Latest Latest
Warning

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

Go to latest
Published: May 11, 2023 License: AGPL-3.0 Imports: 13 Imported by: 2

Documentation

Overview

Package motor contains a gRPC bases motor client

Package motor contains an enum representing optional motor features

Package motor contains a gRPC based motor service server

Index

Constants

View Source
const SubtypeName = "motor"

SubtypeName is a constant that identifies the component resource API string "motor".

Variables

View Source
var API = resource.APINamespaceRDK.WithComponentType(SubtypeName)

API is a variable that identifies the component resource API.

Functions

func CreateStatus

func CreateStatus(ctx context.Context, m Motor) (*pb.Status, error)

CreateStatus creates a status from the motor.

func FeatureMapToProtoResponse

func FeatureMapToProtoResponse(
	featureMap map[Feature]bool,
) (*pb.GetPropertiesResponse, error)

FeatureMapToProtoResponse takes a map of features to booleans (indicating whether the feature is supported) and converts it to a GetPropertiesResponse.

func Named

func Named(name string) resource.Name

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

func NamesFromRobot

func NamesFromRobot(r robot.Robot) []string

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

func NewFeatureUnsupportedError

func NewFeatureUnsupportedError(feature Feature, motorName string) error

NewFeatureUnsupportedError returns an error representing the need for a motor to support a particular feature.

func NewGoTillStopUnsupportedError

func NewGoTillStopUnsupportedError(motorName string) error

NewGoTillStopUnsupportedError returns a standard error for when a motor is required to support the GoTillStop feature.

func NewGoToUnsupportedError added in v0.2.8

func NewGoToUnsupportedError(motorName string) error

NewGoToUnsupportedError returns error when a motor is required to support GoTo feature.

func NewRPCServiceServer added in v0.2.36

func NewRPCServiceServer(coll resource.APIResourceCollection[Motor]) interface{}

NewRPCServiceServer constructs a motor gRPC service server. It is intentionally untyped to prevent use outside of tests.

func NewResetZeroPositionUnsupportedError

func NewResetZeroPositionUnsupportedError(motorName string) error

NewResetZeroPositionUnsupportedError returns a standard error for when a motor is required to support reseting the zero position.

func NewZeroRPMError added in v0.1.4

func NewZeroRPMError() error

NewZeroRPMError returns an error representing a request to move a motor at zero speed (i.e., moving the motor without moving the motor).

func ProtoFeaturesToMap

func ProtoFeaturesToMap(resp *pb.GetPropertiesResponse) map[Feature]bool

ProtoFeaturesToMap takes a GetPropertiesResponse and returns an equivalent Feature-to-boolean map.

Types

type Feature

type Feature string

Feature is an enum representing an optional motor feature.

const PositionReporting Feature = "PositionReporting"

PositionReporting represesnts the feature of a motor being able to report its own position.

type LocalMotor

type LocalMotor interface {
	Motor
	// GoTillStop moves a motor until stopped. The "stop" mechanism is up to the underlying motor implementation.
	// Ex: EncodedMotor goes until physically stopped/stalled (detected by change in position being very small over a fixed time.)
	// Ex: TMCStepperMotor has "StallGuard" which detects the current increase when obstructed and stops when that reaches a threshold.
	// Ex: Other motors may use an endstop switch (such as via a DigitalInterrupt) or be configured with other sensors.
	GoTillStop(ctx context.Context, rpm float64, stopFunc func(ctx context.Context) bool) error
}

A LocalMotor is a motor that supports additional features provided by RDK (e.g. GoTillStop).

type Motor

type Motor interface {
	resource.Resource
	resource.Actuator

	// SetPower sets the percentage of power the motor should employ between -1 and 1.
	// Negative power implies a backward directional rotational
	SetPower(ctx context.Context, powerPct float64, extra map[string]interface{}) error

	// GoFor instructs the motor to go in a specific direction for a specific amount of
	// revolutions at a given speed in revolutions per minute. Both the RPM and the revolutions
	// can be assigned negative values to move in a backwards direction. Note: if both are
	// negative the motor will spin in the forward direction.
	// If revolutions is 0, this will run the motor at rpm indefinitely
	// If revolutions != 0, this will block until the number of revolutions has been completed or another operation comes in.
	GoFor(ctx context.Context, rpm, revolutions float64, extra map[string]interface{}) error

	// GoTo instructs the motor to go to a specific position (provided in revolutions from home/zero),
	// at a specific speed. Regardless of the directionality of the RPM this function will move the motor
	// towards the specified target/position
	// This will block until the position has been reached
	GoTo(ctx context.Context, rpm, positionRevolutions float64, extra map[string]interface{}) error

	// Set the current position (+/- offset) to be the new zero (home) position.
	ResetZeroPosition(ctx context.Context, offset float64, extra map[string]interface{}) error

	// Position reports the position of the motor based on its encoder. If it's not supported, the returned
	// data is undefined. The unit returned is the number of revolutions which is intended to be fed
	// back into calls of GoFor.
	Position(ctx context.Context, extra map[string]interface{}) (float64, error)

	// Properties returns whether or not the motor supports certain optional features.
	Properties(ctx context.Context, extra map[string]interface{}) (map[Feature]bool, error)

	// IsPowered returns whether or not the motor is currently on, and the percent power (between 0
	// and 1, if the motor is off then the percent power will be 0).
	IsPowered(ctx context.Context, extra map[string]interface{}) (bool, float64, error)
}

A Motor represents a physical motor connected to a board.

func FromDependencies

func FromDependencies(deps resource.Dependencies, name string) (Motor, error)

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

func FromRobot

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

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

func NewClientFromConn

func NewClientFromConn(
	ctx context.Context,
	conn rpc.ClientConn,
	remoteName string,
	name resource.Name,
	logger golog.Logger,
) (Motor, error)

NewClientFromConn constructs a new Client from connection passed in.

type Position

type Position struct {
	Position float64
}

Position wraps the returned position value.

type Powered

type Powered struct {
	IsPowered bool
	PowerPct  float64
}

Powered wraps the returned IsPowered value.

Directories

Path Synopsis
Package dimensionengineering contains implementations of the dimensionengineering motor controls
Package dimensionengineering contains implementations of the dimensionengineering motor controls
Package dmc4000 implements stepper motors behind a Galil DMC4000 series motor controller
Package dmc4000 implements stepper motors behind a Galil DMC4000 series motor controller
Package fake implements a fake motor.
Package fake implements a fake motor.
Package gpio implements a GPIO based motor.
Package gpio implements a GPIO based motor.
Package gpiostepper implements a GPIO based stepper motor
Package gpiostepper implements a GPIO based stepper motor
Package ezopmp is a motor driver for the hydrogarden pump
Package ezopmp is a motor driver for the hydrogarden pump
Package register registers all relevant motors
Package register registers all relevant motors
Package roboclaw is the driver for the roboclaw motor drivers NOTE: This implementation is experimental and incomplete.
Package roboclaw is the driver for the roboclaw motor drivers NOTE: This implementation is experimental and incomplete.
Package tmcstepper implements a TMC stepper motor.
Package tmcstepper implements a TMC stepper motor.
Package uln28byj implements a GPIO based stepper motor (model: 28byj-48) with uln2003 controler.
Package uln28byj implements a GPIO based stepper motor (model: 28byj-48) with uln2003 controler.

Jump to

Keyboard shortcuts

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