controlboardinterfaces.h
来自「一个语言识别引擎」· C头文件 代码 · 共 1,367 行 · 第 1/3 页
H
1,367 行
// -*- mode:C++; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-
/*
* Copyright (C) 2006 Lorenzo Natale, Giorgio Metta
* CopyPolicy: Released under the terms of the GNU GPL v2.0.
*
*/
#ifndef __YARPCONTROLBOARDINTERFACES__
#define __YARPCONTROLBOARDINTERFACES__
#include <yarp/dev/DeviceDriver.h>
#include <yarp/dev/ControlBoardPid.h>
#include <yarp/dev/CalibratorInterfaces.h>
/*! \file ControlBoardInterfaces.h define control board standard interfaces*/
namespace yarp {
namespace dev {
class IPidControlRaw;
class IPidControl;
class IPositionControlRaw;
class IPositionControl;
class IEncodersRaw;
class IEncoders;
class ITorqueControlRaw;
class IVelocityControlRaw;
class IVelocityControl;
class IAmplifierControlRaw;
class IAmplifierControl;
class IControlDebug;
class IControlLimitsRaw;
class IControlLimits;
class IControlCalibrationRaw;
class IControlCalibration;
}
}
/**
* @ingroup dev_iface_motor
*
* Interface for a generic control board device implementing a PID controller.
*/
class yarp::dev::IPidControlRaw
{
public:
/**
* Destructor.
*/
virtual ~IPidControlRaw() {}
/** Set new pid value for a joint axis.
* @param j joint number
* @param pid new pid value
* @return true/false on success/failure
*/
virtual bool setPidRaw(int j, const Pid &pid)=0;
/** Set new pid value on multiple axes.
* @param pids pointer to a vector of pids
* @return true/false upon success/failure
*/
virtual bool setPidsRaw(const Pid *pids)=0;
/** Set the controller reference point for a given axis.
* Warning this method can result in very large torques
* and should be used carefully. If you do not understand
* this warning you should avoid using this method.
* Have a look at other interfaces (e.g. position control).
* @param j joint number
* @param ref new reference point
* @return true/false upon success/failure
*/
virtual bool setReferenceRaw(int j, double ref)=0;
/** Set the controller reference points, multiple axes.
* Warning this method can result in very large torques
* and should be used carefully. If you do not understand
* this warning you should avoid using this method.
* Have a look at other interfaces (e.g. position control).
* @param refs pointer to the vector that contains the new reference points.
* @return true/false upon success/failure
*/
virtual bool setReferencesRaw(const double *refs)=0;
/** Set the error limit for the controller on a specifi joint
* @param j joint number
* @param limit limit value
* @return true/false on success/failure
*/
virtual bool setErrorLimitRaw(int j, double limit)=0;
/** Get the error limit for the controller on all joints.
* @param limits pointer to the vector with the new limits
* @return true/false on success/failure
*/
virtual bool setErrorLimitsRaw(const double *limits)=0;
/** Get the current error for a joint.
* @param j joint number
* @param err pointer to the storage for the return value
* @return true/false on success failure
*/
virtual bool getErrorRaw(int j, double *err)=0;
/** Get the error of all joints.
* @param errs pointer to the vector that will store the errors
*/
virtual bool getErrorsRaw(double *errs)=0;
/** Get the output of the controller (e.g. pwm value)
* @param j joint number
* @param out pointer to storage for return value
* @return success/failure
*/
virtual bool getOutputRaw(int j, double *out)=0;
/** Get the output of the controllers (e.g. pwm value)
* @param outs pinter to the vector that will store the output values
*/
virtual bool getOutputsRaw(double *outs)=0;
/** Get current pid value for a specific joint.
* @param j joint number
* @param pid pointer to storage for the return value.
* @return success/failure
*/
virtual bool getPidRaw(int j, Pid *pid)=0;
/** Get current pid value for a specific joint.
* @param pids vector that will store the values of the pids.
* @return success/failure
*/
virtual bool getPidsRaw(Pid *pids)=0;
/** Get the current reference position of the controller for a specific joint.
* @param j joint number
* @param ref pointer to storage for return value
* @return reference value
*/
virtual bool getReferenceRaw(int j, double *ref)=0;
/** Get the current reference position of all controllers.
* @param refs vector that will store the output.
*/
virtual bool getReferencesRaw(double *refs)=0;
/** Get the error limit for the controller on a specific joint
* @param j joint number
* @param limit pointer to storage
* @return success/failure
*/
virtual bool getErrorLimitRaw(int j, double *limit)=0;
/** Get the error limit for all controllers
* @param limits pointer to the array that will store the output
* @return success or failure
*/
virtual bool getErrorLimitsRaw(double *limits)=0;
/** Reset the controller of a given joint, usually sets the
* current position of the joint as the reference value for the PID, and resets
* the integrator.
* @param j joint number
* @return true on success, false on failure.
*/
virtual bool resetPidRaw(int j)=0;
/** Disable the pid computation for a joint*/
virtual bool disablePidRaw(int j)=0;
/** Enable the pid computation for a joint*/
virtual bool enablePidRaw(int j)=0;
/** Set offset value for a given pid*/
virtual bool setOffsetRaw(int j, double v)=0;
};
/**
* @ingroup dev_iface_motor
*
* Interface for a generic control board device implementing a PID controller,
* with scaled arguments.
*/
class yarp::dev::IPidControl
{
public:
/**
* Destructor.
*/
virtual ~IPidControl() {}
/** Set new pid value for a joint axis.
* @param j joint number
* @param pid new pid value
* @return true/false on success/failure
*/
virtual bool setPid(int j, const Pid &pid)=0;
/** Set new pid value on multiple axes.
* @param pids pointer to a vector of pids
* @return true/false upon success/failure
*/
virtual bool setPids(const Pid *pids)=0;
/** Set the controller reference point for a given axis.
* Warning this method can result in very large torques
* and should be used carefully. If you do not understand
* this warning you should avoid using this method.
* Have a look at other interfaces (e.g. position control).
* @param j joint number
* @param ref new reference point
* @return true/false upon success/failure
*/
virtual bool setReference(int j, double ref)=0;
/** Set the controller reference points, multiple axes.
* Warning this method can result in very large torques
* and should be used carefully. If you do not understand
* this warning you should avoid using this method.
* Have a look at other interfaces (e.g. position control).
* @param refs pointer to the vector that contains the new reference points.
* @return true/false upon success/failure
*/
virtual bool setReferences(const double *refs)=0;
/** Set the error limit for the controller on a specifi joint
* @param j joint number
* @param limit limit value
* @return true/false on success/failure
*/
virtual bool setErrorLimit(int j, double limit)=0;
/** Get the error limit for the controller on all joints.
* @param limits pointer to the vector with the new limits
* @return true/false on success/failure
*/
virtual bool setErrorLimits(const double *limits)=0;
/** Get the current error for a joint.
* @param j joint number
* @param err pointer to the storage for the return value
* @return true/false on success failure
*/
virtual bool getError(int j, double *err)=0;
/** Get the error of all joints.
* @param errs pointer to the vector that will store the errors
*/
virtual bool getErrors(double *errs)=0;
/** Get the output of the controller (e.g. pwm value)
* @param j joint number
* @param out pointer to storage for return value
* @return success/failure
*/
virtual bool getOutput(int j, double *out)=0;
/** Get the output of the controllers (e.g. pwm value)
* @param outs pinter to the vector that will store the output values
*/
virtual bool getOutputs(double *outs)=0;
/** Get current pid value for a specific joint.
* @param j joint number
* @param pid pointer to storage for the return value.
* @return success/failure
*/
virtual bool getPid(int j, Pid *pid)=0;
/** Get current pid value for a specific joint.
* @param pids vector that will store the values of the pids.
* @return success/failure
*/
virtual bool getPids(Pid *pids)=0;
/** Get the current reference position of the controller for a specific joint.
* @param j joint number
* @param ref pointer to storage for return value
* @return reference value
*/
virtual bool getReference(int j, double *ref)=0;
/** Get the current reference position of all controllers.
* @param refs vector that will store the output.
*/
virtual bool getReferences(double *refs)=0;
/** Get the error limit for the controller on a specific joint
* @param j joint number
* @param limit pointer to storage
* @return success/failure
*/
virtual bool getErrorLimit(int j, double *limit)=0;
/** Get the error limit for all controllers
* @param limits pointer to the array that will store the output
* @return success or failure
*/
virtual bool getErrorLimits(double *limits)=0;
/** Reset the controller of a given joint, usually sets the
* current position of the joint as the reference value for the PID, and resets
* the integrator.
* @param j joint number
* @return true on success, false on failure.
*/
virtual bool resetPid(int j)=0;
/** Disable the pid computation for a joint*/
virtual bool disablePid(int j)=0;
/** Enable the pid computation for a joint*/
virtual bool enablePid(int j)=0;
/** Set offset value for a given controller*/
virtual bool setOffset(int j, double v)=0;
};
/**
* @ingroup dev_iface_motor
*
* Interface for a generic control board device implementing position control in encoder
* coordinates.
*/
class yarp::dev::IPositionControlRaw
{
public:
/**
* Destructor.
*/
virtual ~IPositionControlRaw() {}
/**
* Get the number of controlled axes. This command asks the number of controlled
* axes for the current physical interface.
* @param ax storage to return param
* @return true/false.
*/
virtual bool getAxes(int *ax) = 0;
/** Set position mode. This command
* is required by control boards implementing different
* control methods (e.g. velocity/torque), in some cases
* it can be left empty.
* return true/false on success failure
*/
virtual bool setPositionMode()=0;
/** Set new reference point for a single axis.
* @param j joint number
* @param ref specifies the new ref point
* @return true/false on success/failure
*/
virtual bool positionMoveRaw(int j, double ref)=0;
/** Set new reference point for all axes.
* @param refs array, new reference points.
* @return true/false on success/failure
*/
virtual bool positionMoveRaw(const double *refs)=0;
/** Set relative position. The command is relative to the
* current position of the axis.
* @param j joint axis number
* @param delta relative command
* @return true/false on success/failure
*/
virtual bool relativeMoveRaw(int j, double delta)=0;
/** Set relative position, all joints.
* @param deltas pointer to the relative commands
* @return true/false on success/failure
*/
virtual bool relativeMoveRaw(const double *deltas)=0;
/** Check if the current trajectory is terminated. Non blocking.
* @return true if the trajectory is terminated, false otherwise
*/
virtual bool checkMotionDoneRaw(int j, bool *flag)=0;
/** Check if the current trajectory is terminated. Non blocking.
* @return true if the trajectory is terminated, false otherwise
*/
virtual bool checkMotionDoneRaw(bool *flag)=0;
/** Set reference speed for a joint, this is the speed used during the
* interpolation of the trajectory.
* @param j joint number
* @param sp speed value
* @return true/false upon success/failure
*/
virtual bool setRefSpeedRaw(int j, double sp)=0;
/** Set reference speed on all joints. These values are used during the
* interpolation of the trajectory.
* @param spds pointer to the array of speed values.
* @return true/false upon success/failure
*/
virtual bool setRefSpeedsRaw(const double *spds)=0;
/** Set reference acceleration for a joint. This value is used during the
* trajectory generation.
* @param j joint number
* @param acc acceleration value
* @return true/false upon success/failure
*/
virtual bool setRefAccelerationRaw(int j, double acc)=0;
/** Set reference acceleration on all joints. This is the valure that is
* used during the generation of the trajectory.
* @param accs pointer to the array of acceleration values
* @return true/false upon success/failure
*/
virtual bool setRefAccelerationsRaw(const double *accs)=0;
/** Get reference speed for a joint. Returns the speed used to
* generate the trajectory profile.
* @param j joint number
* @param ref pointer to storage for the return value
* @return true/false on success or failure
*/
virtual bool getRefSpeedRaw(int j, double *ref)=0;
/** Get reference speed of all joints. These are the values used during the
* interpolation of the trajectory.
* @param spds pointer to the array that will store the speed values.
*/
virtual bool getRefSpeedsRaw(double *spds)=0;
/** Get reference acceleration for a joint. Returns the acceleration used to
* generate the trajectory profile.
* @param j joint number
* @param acc pointer to storage for the return value
* @return true/false on success/failure
*/
virtual bool getRefAccelerationRaw(int j, double *acc)=0;
/** Get reference acceleration of all joints. These are the values used during the
* interpolation of the trajectory.
* @param accs pointer to the array that will store the acceleration values.
* @return true/false on success or failure
*/
virtual bool getRefAccelerationsRaw(double *accs)=0;
/** Stop motion, single joint
* @param j joint number
* @return true/false on success/failure
*/
virtual bool stopRaw(int j)=0;
/** Stop motion, multiple joints
* @return true/false on success/failure
*/
virtual bool stopRaw()=0;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?