YARP
Yet Another Robot Platform
RemoteControlBoard.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2006-2020 Istituto Italiano di Tecnologia (IIT)
3  * Copyright (C) 2006-2010 RobotCub Consortium
4  * All rights reserved.
5  *
6  * This software may be modified and distributed under the terms of the
7  * BSD-3-Clause license. See the accompanying LICENSE file for details.
8  */
9 
10 #ifndef YARP_DEV_REMOTECONTROLBOARD_REMOTECONTROLBOARD_H
11 #define YARP_DEV_REMOTECONTROLBOARD_REMOTECONTROLBOARD_H
12 
13 #include <yarp/sig/Vector.h>
14 
15 #include <yarp/dev/IPidControl.h>
20 #include <yarp/dev/IMotor.h>
23 #include <yarp/dev/IAxisInfo.h>
28 #include <yarp/dev/IControlMode.h>
29 #include <yarp/dev/DeviceDriver.h>
34 #include <yarp/dev/IPWMControl.h>
37 
38 #include "stateExtendedReader.h"
39 
41 {
42  int major{0};
43  int minor{0};
44  int tweak{0};
45 };
46 
47 class DiagnosticThread;
48 
49 
73  public yarp::dev::IMotor,
76  public yarp::dev::IAxisInfo,
89 {
90 protected:
94 
99 
100  // Buffer associated to the extendedOutputStatePort port; in this case we will use the type generated
101  // from the YARP .thrift file
102 // yarp::os::PortReaderBuffer<jointData> extendedInputState_buffer; // Buffer storing new data
103  StateExtendedInputPort extendedIntputStatePort; // Buffered port storing new data
104  std::mutex extendedPortMutex;
105  yarp::dev::impl::jointData last_singleJoint; // tmp to store last received data for a particular joint
106 // yarp::os::Port extendedIntputStatePort; // Port /stateExt:i reading the state of the joints
107  yarp::dev::impl::jointData last_wholePart; // tmp to store last received data for whole part
108 
109  std::string remote;
110  std::string local;
111  mutable Stamp lastStamp; //this is shared among all calls that read encoders
112  size_t nj{0};
113  bool njIsKnown{false};
114 
116 
117  // Check for number of joints, if needed.
118  // This is to allow for delayed connection to the remote control board.
119  bool isLive();
120 
121  bool checkProtocolVersion(bool ignore);
122 
123  bool send1V(int v);
124  bool send2V(int v1, int v2);
125  bool send2V1I(int v1, int v2, int axis);
126  bool send1V1I(int v, int axis);
127  bool send3V1I(int v1, int v2, int v3, int j);
128 
134  bool set1V(int code);
135 
143  bool set1V2D(int code, double v);
144 
152  bool set1V1I(int code, int v);
153 
160  bool get1V1D(int code, double& v) const;
161 
168  bool get1V1I(int code, int& v) const;
169 
177  bool set1V1I1D(int code, int j, double val);
178 
179  bool set1V1I2D(int code, int j, double val1, double val2);
180 
187  bool set1VDA(int v, const double *val);
188  bool set2V1DA(int v1, int v2, const double *val);
189  bool set2V2DA(int v1, int v2, const double *val1, const double *val2);
190  bool set1V1I1IA1DA(int v, const int len, const int *val1, const double *val2);
191  bool set2V1I1D(int v1, int v2, int axis, double val);
192  bool setValWithPidType(int voc, PidControlTypeEnum type, int axis, double val);
193  bool setValWithPidType(int voc, PidControlTypeEnum type, const double* val_arr);
194  bool getValWithPidType(int voc, PidControlTypeEnum type, int j, double *val);
195  bool getValWithPidType(int voc, PidControlTypeEnum type, double *val);
196  bool set2V1I(int v1, int v2, int axis);
197 
205  bool get1V1I1D(int v, int j, double *val);
206 
214  bool get1V1I1I(int v, int j, int *val);
215  bool get2V1I1D(int v1, int v2, int j, double *val);
216  bool get2V1I2D(int v1, int v2, int j, double *val1, double *val2);
217  bool get1V1I2D(int code, int axis, double *v1, double *v2);
218 
226  bool get1V1I1B(int v, int j, bool &val);
227  bool get1V1I1IA1B(int v, const int len, const int *val1, bool &retVal);
228  bool get2V1I1IA1DA(int v1, int v2, const int n_joints, const int *joints, double *retVals, std::string functionName = "");
229  bool get1V1B(int v, bool &val);
230 
237  bool get1VIA(int v, int *val);
238 
245  bool get1VDA(int v, double *val);
246 
253  bool get1V1DA(int v1, double *val);
254 
262  bool get2V1DA(int v1, int v2, double *val);
263 
264  bool get2V2DA(int v1, int v2, double *val1, double *val2);
265 
266  bool get1V1I1S(int code, int j, std::string &name);
267 
268  bool get1V1I1IA1DA(int v, const int len, const int *val1, double *val2);
269 
270 public:
271  RemoteControlBoard() = default;
276  ~RemoteControlBoard() override = default;
277 
278  bool open(Searchable& config) override;
279 
284  bool close() override;
285 
286  bool getAxes(int *ax) override;
287 
288  // IPidControl
289  bool setPid(const PidControlTypeEnum& pidtype, int j, const Pid &pid) override;
290  bool setPids(const PidControlTypeEnum& pidtype, const Pid *pids) override;
291  bool setPidReference(const PidControlTypeEnum& pidtype, int j, double ref) override;
292  bool setPidReferences(const PidControlTypeEnum& pidtype, const double *refs) override;
293  bool setPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double limit) override;
294  bool setPidErrorLimits(const PidControlTypeEnum& pidtype, const double *limits) override;
295  bool getPidError(const PidControlTypeEnum& pidtype, int j, double *err) override;
296  bool getPidErrors(const PidControlTypeEnum& pidtype, double *errs) override;
297  bool getPid(const PidControlTypeEnum& pidtype, int j, Pid *pid) override;
298  bool getPids(const PidControlTypeEnum& pidtype, Pid *pids) override;
299  bool getPidReference(const PidControlTypeEnum& pidtype, int j, double *ref) override;
300  bool getPidReferences(const PidControlTypeEnum& pidtype, double *refs) override;
301  bool getPidErrorLimit(const PidControlTypeEnum& pidtype, int j, double *limit) override;
302  bool getPidErrorLimits(const PidControlTypeEnum& pidtype, double *limits) override;
303  bool resetPid(const PidControlTypeEnum& pidtype, int j) override;
304  bool disablePid(const PidControlTypeEnum& pidtype, int j) override;
305  bool enablePid(const PidControlTypeEnum& pidtype, int j) override;
306  bool isPidEnabled(const PidControlTypeEnum& pidtype, int j, bool* enabled) override;
307  bool getPidOutput(const PidControlTypeEnum& pidtype, int j, double *out) override;
308  bool getPidOutputs(const PidControlTypeEnum& pidtype, double *outs) override;
309  bool setPidOffset(const PidControlTypeEnum& pidtype, int j, double v) override;
310 
311  // IEncoder
312  bool resetEncoder(int j) override;
313  bool resetEncoders() override;
314  bool setEncoder(int j, double val) override;
315  bool setEncoders(const double *vals) override;
316  bool getEncoder(int j, double *v) override;
317  bool getEncoderTimed(int j, double *v, double *t) override;
318  bool getEncoders(double *encs) override;
319  bool getEncodersTimed(double *encs, double *ts) override;
320  bool getEncoderSpeed(int j, double *sp) override;
321  bool getEncoderSpeeds(double *spds) override;
322  bool getEncoderAcceleration(int j, double *acc) override;
323  bool getEncoderAccelerations(double *accs) override;
324 
325  // IRemoteVariable
326  bool getRemoteVariable(std::string key, yarp::os::Bottle& val) override;
327  bool setRemoteVariable(std::string key, const yarp::os::Bottle& val) override;
328  bool getRemoteVariablesList(yarp::os::Bottle* listOfKeys) override;
329 
330  // IMotor
331  bool getNumberOfMotors(int *num) override;
332  bool getTemperature(int m, double* val) override;
333  bool getTemperatures(double *vals) override;
334  bool getTemperatureLimit (int m, double* val) override;
335  bool setTemperatureLimit (int m, const double val) override;
336  bool getGearboxRatio(int m, double* val) override;
337  bool setGearboxRatio(int m, const double val) override;
338 
339  // IMotorEncoder
340  bool resetMotorEncoder(int j) override;
341  bool resetMotorEncoders() override;
342  bool setMotorEncoder(int j, const double val) override;
343  bool setMotorEncoderCountsPerRevolution(int m, const double cpr) override;
344  bool getMotorEncoderCountsPerRevolution(int m, double *cpr) override;
345  bool setMotorEncoders(const double *vals) override;
346  bool getMotorEncoder(int j, double *v) override;
347  bool getMotorEncoderTimed(int j, double *v, double *t) override;
348  bool getMotorEncoders(double *encs) override;
349  bool getMotorEncodersTimed(double *encs, double *ts) override;
350  bool getMotorEncoderSpeed(int j, double *sp) override;
351  bool getMotorEncoderSpeeds(double *spds) override;
352  bool getMotorEncoderAcceleration(int j, double *acc) override;
353  bool getMotorEncoderAccelerations(double *accs) override;
354  bool getNumberOfMotorEncoders(int *num) override;
355 
356  // IPreciselyTimed
357  Stamp getLastInputStamp() override;
358 
359  // IPositionControl
360  bool positionMove(int j, double ref) override;
361  bool positionMove(const int n_joint, const int *joints, const double *refs) override;
362  bool positionMove(const double *refs) override;
363  bool getTargetPosition(const int joint, double *ref) override;
364  bool getTargetPositions(double *refs) override;
365  bool getTargetPositions(const int n_joint, const int *joints, double *refs) override;
366  bool relativeMove(int j, double delta) override;
367  bool relativeMove(const int n_joint, const int *joints, const double *refs) override;
368  bool relativeMove(const double *deltas) override;
369  bool checkMotionDone(int j, bool *flag) override;
370  bool checkMotionDone(const int n_joint, const int *joints, bool *flag) override;
371  bool checkMotionDone(bool *flag) override;
372  bool setRefSpeed(int j, double sp) override;
373  bool setRefSpeeds(const int n_joint, const int *joints, const double *spds) override;
374  bool setRefSpeeds(const double *spds) override;
375  bool setRefAcceleration(int j, double acc) override;
376  bool setRefAccelerations(const int n_joint, const int *joints, const double *accs) override;
377  bool setRefAccelerations(const double *accs) override;
378  bool getRefSpeed(int j, double *ref) override;
379  bool getRefSpeeds(const int n_joint, const int *joints, double *spds) override;
380  bool getRefSpeeds(double *spds) override;
381  bool getRefAcceleration(int j, double *acc) override;
382  bool getRefAccelerations(const int n_joint, const int *joints, double *accs) override;
383  bool getRefAccelerations(double *accs) override;
384  bool stop(int j) override;
385  bool stop(const int len, const int *val1) override;
386  bool stop() override;
387 
388  // IVelocityControl
389  bool velocityMove(int j, double v) override;
390  bool velocityMove(const double *v) override;
391 
392  // IAmplifierControl
393  bool enableAmp(int j) override;
394  bool disableAmp(int j) override;
395  bool getAmpStatus(int *st) override;
396  bool getAmpStatus(int j, int *st) override;
397  bool setMaxCurrent(int j, double v) override;
398  bool getMaxCurrent(int j, double *v) override;
399  bool getNominalCurrent(int m, double *val) override;
400  bool setNominalCurrent(int m, const double val) override;
401  bool getPeakCurrent(int m, double *val) override;
402  bool setPeakCurrent(int m, const double val) override;
403  bool getPWM(int m, double* val) override;
404  bool getPWMLimit(int m, double* val) override;
405  bool setPWMLimit(int m, const double val) override;
406  bool getPowerSupplyVoltage(int m, double* val) override;
407 
408  // IControlLimits
409  bool setLimits(int axis, double min, double max) override;
410  bool getLimits(int axis, double *min, double *max) override;
411  bool setVelLimits(int axis, double min, double max) override;
412  bool getVelLimits(int axis, double *min, double *max) override;
413 
414  // IAxisInfo
415  bool getAxisName(int j, std::string& name) override;
416  bool getJointType(int j, yarp::dev::JointTypeEnum& type) override;
417 
418  // IControlCalibration
419  bool calibrateRobot() override;
420  bool abortCalibration() override;
421  bool abortPark() override;
422  bool park(bool wait=true) override;
423  bool calibrateAxisWithParams(int j, unsigned int ui, double v1, double v2, double v3) override;
424  bool setCalibrationParameters(int j, const CalibrationParameters& params) override;
425  bool calibrationDone(int j) override;
426 
427  // ITorqueControl
428  bool getRefTorque(int j, double *t) override;
429  bool getRefTorques(double *t) override;
430  bool setRefTorques(const double *t) override;
431  bool setRefTorque(int j, double v) override;
432  bool setRefTorques(const int n_joint, const int *joints, const double *t) override;
433  bool setMotorTorqueParams(int j, const MotorTorqueParameters params) override;
434  bool getMotorTorqueParams(int j, MotorTorqueParameters *params) override;
435  bool getTorque(int j, double *t) override;
436  bool getTorques(double *t) override;
437  bool getTorqueRange(int j, double *min, double* max) override;
438  bool getTorqueRanges(double *min, double *max) override;
439 
440  // IImpedanceControl
441  bool getImpedance(int j, double *stiffness, double *damping) override;
442  bool getImpedanceOffset(int j, double *offset) override;
443  bool setImpedance(int j, double stiffness, double damping) override;
444  bool setImpedanceOffset(int j, double offset) override;
445  bool getCurrentImpedanceLimit(int j, double *min_stiff, double *max_stiff, double *min_damp, double *max_damp) override;
446 
447  // IControlMode
448  bool getControlMode(int j, int *mode) override;
449  bool getControlModes(int *modes) override;
450  bool getControlModes(const int n_joint, const int *joints, int *modes) override;
451  bool setControlMode(const int j, const int mode) override;
452  bool setControlModes(const int n_joint, const int *joints, int *modes) override;
453  bool setControlModes(int *modes) override;
454 
455  // IPositionDirect
456  bool setPosition(int j, double ref) override;
457  bool setPositions(const int n_joint, const int *joints, const double *refs) override;
458  bool setPositions(const double *refs) override;
459  bool getRefPosition(const int joint, double* ref) override;
460  bool getRefPositions(double* refs) override;
461  bool getRefPositions(const int n_joint, const int* joints, double* refs) override;
462 
463  // IVelocityControl
464  bool velocityMove(const int n_joint, const int *joints, const double *spds) override;
465  bool getRefVelocity(const int joint, double* vel) override;
466  bool getRefVelocities(double* vels) override;
467  bool getRefVelocities(const int n_joint, const int* joints, double* vels) override;
468 
469  // IInteractionMode
470  bool getInteractionMode(int axis, yarp::dev::InteractionModeEnum* mode) override;
471  bool getInteractionModes(int n_joints, int *joints, yarp::dev::InteractionModeEnum* modes) override;
473  bool setInteractionMode(int axis, yarp::dev::InteractionModeEnum mode) override;
474  bool setInteractionModes(int n_joints, int *joints, yarp::dev::InteractionModeEnum* modes) override;
476 
477  // IRemoteCalibrator
478  bool isCalibratorDevicePresent(bool *isCalib) override;
479  bool calibrateSingleJoint(int j) override;
480  bool calibrateWholePart() override;
481  bool homingSingleJoint(int j) override;
482  bool homingWholePart() override;
483  bool parkSingleJoint(int j, bool _wait=true) override;
484  bool parkWholePart() override;
485  bool quitCalibrate() override;
486  bool quitPark() override;
487 
488  // ICurrentControl
489  bool getRefCurrents(double *t) override;
490  bool getRefCurrent(int j, double *t) override;
491  bool setRefCurrents(const double *refs) override;
492  bool setRefCurrent(int j, double ref) override;
493  bool setRefCurrents(const int n_joint, const int *joints, const double *refs) override;
494  bool getCurrents(double *vals) override;
495  bool getCurrent(int j, double *val) override;
496  bool getCurrentRange(int j, double *min, double *max) override;
497  bool getCurrentRanges(double *min, double *max) override;
498 
499  // IPWMControl
500  bool setRefDutyCycle(int j, double v) override;
501  bool setRefDutyCycles(const double *v) override;
502  bool getRefDutyCycle(int j, double *ref) override;
503  bool getRefDutyCycles(double *refs) override;
504  bool getDutyCycle(int j, double *out) override;
505  bool getDutyCycles(double *outs) override;
506 };
507 
508 
509 
510 #endif // YARP_DEV_REMOTECONTROLBOARD_REMOTECONTROLBOARD_H
float t
define control board standard interfaces
define control board standard interfaces
define control board standard interfaces
contains the definition of a Vector type
The client side of the control board, connects to a remote controlboard using the YARP network.
bool setPidReferences(const PidControlTypeEnum &pidtype, const double *refs) override
Set the controller reference, multiple axes.
bool getTorques(double *t) override
Get the value of the torque for all joints (this is the feedback if you have torque sensors).
bool relativeMove(int j, double delta) override
Set relative position.
bool getCurrentImpedanceLimit(int j, double *min_stiff, double *max_stiff, double *min_damp, double *max_damp) override
Get the current impedandance limits for a specific joint.
bool getRefSpeeds(const int n_joint, const int *joints, double *spds) override
Get reference speed of all joints.
bool get1V1I1B(int v, int j, bool &val)
Helper method used to get a double value from the remote peer.
bool quitCalibrate() override
quitCalibrate: interrupt the calibration procedure
bool getRefPositions(double *refs) override
Get the last position reference for all axes.
RemoteControlBoard & operator=(RemoteControlBoard &&)=delete
yarp::os::PortReaderBuffer< yarp::sig::Vector > state_buffer
bool get1V1I1IA1B(int v, const int len, const int *val1, bool &retVal)
bool open(Searchable &config) override
Open the DeviceDriver.
bool getEncoder(int j, double *v) override
Read the value of an encoder.
bool send2V1I(int v1, int v2, int axis)
bool setPositions(const int n_joint, const int *joints, const double *refs) override
Set new reference point for all axes.
yarp::dev::impl::jointData last_wholePart
yarp::os::Port rpc_p
bool setControlMode(const int j, const int mode) override
Set the current control mode.
bool isPidEnabled(const PidControlTypeEnum &pidtype, int j, bool *enabled) override
Get the current status (enabled/disabled) of the pid.
~RemoteControlBoard() override=default
bool getPeakCurrent(int m, double *val) override
bool getLimits(int axis, double *min, double *max) override
Get the software limits for a particular axis.
RemoteControlBoard(const RemoteControlBoard &)=delete
bool getPWM(int m, double *val) override
yarp::os::PortWriterBuffer< CommandMessage > command_buffer
bool get1VDA(int v, double *val)
Helper method to get an array of double from the remote peer.
bool set2V1DA(int v1, int v2, const double *val)
bool get1V1I(int code, int &v) const
Send a GET command expecting an integer value in return.
bool getNominalCurrent(int m, double *val) override
bool resetPid(const PidControlTypeEnum &pidtype, int j) override
Reset the controller of a given joint, usually sets the current status of the joint as the reference ...
bool setPeakCurrent(int m, const double val) override
bool getPidOutputs(const PidControlTypeEnum &pidtype, double *outs) override
Get the output of the controllers (e.g.
bool send2V(int v1, int v2)
bool set1V1I(int code, int v)
Send a SET command with an additional integer valued variable and then wait for a reply.
bool setInteractionMode(int axis, yarp::dev::InteractionModeEnum mode) override
Set the interaction mode of the robot, values can be stiff or compliant.
bool getTemperatureLimit(int m, double *val) override
Retreives the current temperature limit for a specific motor.
bool getPidError(const PidControlTypeEnum &pidtype, int j, double *err) override
Get the current error for a joint.
bool getPidReference(const PidControlTypeEnum &pidtype, int j, double *ref) override
Get the current reference of the pid controller for a specific joint.
bool homingSingleJoint(int j) override
homingSingleJoint: call the homing procedure for a single joint
bool checkMotionDone(int j, bool *flag) override
Check if the current trajectory is terminated.
bool getMotorEncoderCountsPerRevolution(int m, double *cpr) override
Gets number of counts per revolution for motor encoder m.
bool setMotorEncoderCountsPerRevolution(int m, const double cpr) override
Sets number of counts per revolution for motor encoder m.
ProtocolVersion protocolVersion
bool set2V1I(int v1, int v2, int axis)
bool setRefDutyCycle(int j, double v) override
Sets the reference dutycycle to a single motor.
bool getRefAccelerations(const int n_joint, const int *joints, double *accs) override
Get reference acceleration for a joint.
bool setPidErrorLimit(const PidControlTypeEnum &pidtype, int j, double limit) override
Set the error limit for the controller on a specifi joint.
bool setMaxCurrent(int j, double v) override
bool getPowerSupplyVoltage(int m, double *val) override
bool getRefVelocity(const int joint, double *vel) override
Get the last reference speed set by velocityMove for single joint.
bool getPidOutput(const PidControlTypeEnum &pidtype, int j, double *out) override
Get the output of the controller (e.g.
bool get1V1I1IA1DA(int v, const int len, const int *val1, double *val2)
bool get1V1DA(int v1, double *val)
Helper method to get an array of double from the remote peer.
bool setRefSpeed(int j, double sp) override
Set reference speed for a joint, this is the speed used during the interpolation of the trajectory.
bool setInteractionModes(int n_joints, int *joints, yarp::dev::InteractionModeEnum *modes) override
Set the interaction mode of the robot for a set of joints, values can be stiff or compliant.
bool getRefCurrent(int j, double *t) override
Get the reference value of the current for a single motor.
bool getEncoders(double *encs) override
Read the position of all axes.
bool get1V1I1S(int code, int j, std::string &name)
bool set1V(int code)
Send a SET command without parameters and wait for a reply.
Stamp getLastInputStamp() override
Get the time stamp for the last read data.
bool getMotorEncoder(int j, double *v) override
Read the value of a motor encoder.
bool getTemperature(int m, double *val) override
Get temperature of a motor.
bool setPidReference(const PidControlTypeEnum &pidtype, int j, double ref) override
Set the controller reference for a given axis.
bool setImpedance(int j, double stiffness, double damping) override
Set current impedance gains (stiffness,damping) for a specific joint.
bool getMotorEncoderTimed(int j, double *v, double *t) override
Read the instantaneous position of a motor encoder.
bool getDutyCycles(double *outs) override
Gets the current dutycycle of the output of the amplifier (i.e.
bool setRefCurrent(int j, double ref) override
Set the reference value of the current for a single motor.
DiagnosticThread * diagnosticThread
bool setControlModes(const int n_joint, const int *joints, int *modes) override
Set the current control mode for a subset of axes.
bool setPid(const PidControlTypeEnum &pidtype, int j, const Pid &pid) override
Set new pid value for a joint axis.
bool set1V1I2D(int code, int j, double val1, double val2)
bool getPidErrors(const PidControlTypeEnum &pidtype, double *errs) override
Get the error of all joints.
bool close() override
Close the device driver and stop the port connections.
bool parkSingleJoint(int j, bool _wait=true) override
parkSingleJoint(): start the parking procedure for the single joint
bool setMotorEncoders(const double *vals) override
Set the value of all motor encoders.
yarp::dev::impl::jointData last_singleJoint
bool getTargetPositions(double *refs) override
Get the last position reference for all axes.
RemoteControlBoard(RemoteControlBoard &&)=delete
bool setEncoders(const double *vals) override
Set the value of all encoders.
bool set1VDA(int v, const double *val)
Helper method used to set an array of double to all axes.
bool getPid(const PidControlTypeEnum &pidtype, int j, Pid *pid) override
Get current pid value for a specific joint.
bool setPosition(int j, double ref) override
Set new position for a single axis.
bool get2V1I2D(int v1, int v2, int j, double *val1, double *val2)
bool getJointType(int j, yarp::dev::JointTypeEnum &type) override
bool resetMotorEncoder(int j) override
Reset motor encoder, single motor.
bool getEncoderSpeed(int j, double *sp) override
Read the istantaneous speed of an axis.
bool setGearboxRatio(int m, const double val) override
Set the gearbox ratio for a specific motor.
bool resetMotorEncoders() override
Reset motor encoders.
bool getCurrentRanges(double *min, double *max) override
Get the full scale of the current measurements for all motors motor (e.g.
bool getAmpStatus(int *st) override
bool setRefTorque(int j, double v) override
Set the reference value of the torque for a given joint.
bool enablePid(const PidControlTypeEnum &pidtype, int j) override
Enable the pid computation for a joint.
bool calibrateWholePart() override
calibrateWholePart: call the procedure for calibrating the whole device
bool getImpedance(int j, double *stiffness, double *damping) override
Get current impedance gains (stiffness,damping,offset) for a specific joint.
bool getPidErrorLimits(const PidControlTypeEnum &pidtype, double *limits) override
Get the error limit for all controllers.
bool getMotorEncoders(double *encs) override
Read the position of all motor encoders.
bool setPids(const PidControlTypeEnum &pidtype, const Pid *pids) override
Set new pid value on multiple axes.
bool setMotorEncoder(int j, const double val) override
Set the value of the motor encoder for a given motor.
bool velocityMove(int j, double v) override
Start motion at a given speed, single joint.
bool setRemoteVariable(std::string key, const yarp::os::Bottle &val) override
bool setPidErrorLimits(const PidControlTypeEnum &pidtype, const double *limits) override
Get the error limit for the controller on all joints.
RemoteControlBoard()=default
bool calibrationDone(int j) override
Check if the calibration is terminated, on a particular joint.
bool setPidOffset(const PidControlTypeEnum &pidtype, int j, double v) override
Set offset value for a given controller.
bool get2V1I1D(int v1, int v2, int j, double *val)
bool abortCalibration() override
bool setRefCurrents(const double *refs) override
Set the reference value of the currents for all motors.
bool getMotorEncoderAcceleration(int j, double *acc) override
Read the instantaneous acceleration of a motor encoder.
bool setRefTorques(const double *t) override
Set the reference value of the torque for all joints.
bool getNumberOfMotors(int *num) override
Retrieves the number of controlled axes from the current physical interface.
bool getInteractionModes(int n_joints, int *joints, yarp::dev::InteractionModeEnum *modes) override
Get the current interaction mode of the robot for a set of joints, values can be stiff or compliant.
bool get1VIA(int v, int *val)
Helper method to get an array of integers from the remote peer.
bool set1V1I1IA1DA(int v, const int len, const int *val1, const double *val2)
bool getInteractionMode(int axis, yarp::dev::InteractionModeEnum *mode) override
Get the current interaction mode of the robot, values can be stiff or compliant.
bool getCurrentRange(int j, double *min, double *max) override
Get the full scale of the current measurement for a given motor (e.g.
bool getEncoderAcceleration(int j, double *acc) override
Read the instantaneous acceleration of an axis.
bool get1V1B(int v, bool &val)
bool getVelLimits(int axis, double *min, double *max) override
Get the software speed limits for a particular axis.
bool setEncoder(int j, double val) override
Set the value of the encoder for a given joint.
bool send1V1I(int v, int axis)
bool get1V1I2D(int code, int axis, double *v1, double *v2)
bool resetEncoders() override
Reset encoders.
bool checkProtocolVersion(bool ignore)
bool setImpedanceOffset(int j, double offset) override
Set current force Offset for a specific joint.
bool get2V1I1IA1DA(int v1, int v2, const int n_joints, const int *joints, double *retVals, std::string functionName="")
bool getGearboxRatio(int m, double *val) override
Get the gearbox ratio for a specific motor.
bool getRefAcceleration(int j, double *acc) override
Get reference acceleration for a joint.
bool getMaxCurrent(int j, double *v) override
Returns the maximum electric current allowed for a given motor.
bool set2V2DA(int v1, int v2, const double *val1, const double *val2)
bool get2V1DA(int v1, int v2, double *val)
Helper method to get an array of double from the remote peer.
bool setRefAccelerations(const int n_joint, const int *joints, const double *accs) override
Set reference acceleration on all joints.
bool setNominalCurrent(int m, const double val) override
bool getMotorTorqueParams(int j, MotorTorqueParameters *params) override
Get a subset of motor parameters (bemf, ktau etc) useful for torque control.
bool getRefTorques(double *t) override
Get the reference value of the torque for all joints.
bool getTorque(int j, double *t) override
Get the value of the torque on a given joint (this is the feedback if you have a torque sensor).
bool getRemoteVariable(std::string key, yarp::os::Bottle &val) override
bool getRefDutyCycles(double *refs) override
Gets the last reference sent using the setRefDutyCycles function.
bool set1V2D(int code, double v)
Send a SET command and an additional double valued variable and then wait for a reply.
bool getRemoteVariablesList(yarp::os::Bottle *listOfKeys) override
bool getMotorEncoderSpeed(int j, double *sp) override
Read the istantaneous speed of a motor encoder.
bool getTemperatures(double *vals) override
Get temperature of all the motors.
bool get2V2DA(int v1, int v2, double *val1, double *val2)
RemoteControlBoard & operator=(const RemoteControlBoard &)=delete
bool get1V1D(int code, double &v) const
Send a GET command expecting a double value in return.
yarp::os::Port command_p
bool setRefSpeeds(const int n_joint, const int *joints, const double *spds) override
Set reference speed on all joints.
bool getControlMode(int j, int *mode) override
Get the current control mode.
bool isCalibratorDevicePresent(bool *isCalib) override
isCalibratorDevicePresent: check if a calibrator device has been set
bool homingWholePart() override
homingWholePart: call the homing procedure for a the whole part/device
bool set2V1I1D(int v1, int v2, int axis, double val)
bool parkWholePart() override
parkWholePart: start the parking procedure for the whole part
bool calibrateRobot() override
Calibrate robot by using an external calibrator.
bool getControlModes(int *modes) override
Get the current control mode (multiple joints).
bool getMotorEncoderAccelerations(double *accs) override
Read the instantaneous acceleration of all motor encoders.
bool resetEncoder(int j) override
Reset encoder, single joint.
bool getDutyCycle(int j, double *out) override
Gets the current dutycycle of the output of the amplifier (i.e.
bool getTargetPosition(const int joint, double *ref) override
Get the last position reference for the specified axis.
bool send3V1I(int v1, int v2, int v3, int j)
bool getRefVelocities(double *vels) override
Get the last reference speed set by velocityMove for all joints.
bool getCurrent(int j, double *val) override
bool getAxes(int *ax) override
Get the number of controlled axes.
StateExtendedInputPort extendedIntputStatePort
bool getPidErrorLimit(const PidControlTypeEnum &pidtype, int j, double *limit) override
Get the error limit for the controller on a specific joint.
bool stop() override
Stop motion, multiple joints.
bool setPWMLimit(int m, const double val) override
bool getRefSpeed(int j, double *ref) override
Get reference speed for a joint.
bool getRefPosition(const int joint, double *ref) override
Get the last position reference for the specified axis.
bool set1V1I1D(int code, int j, double val)
Helper method to set a double value to a single axis.
bool getEncoderTimed(int j, double *v, double *t) override
Read the instantaneous acceleration of all axes.
bool setCalibrationParameters(int j, const CalibrationParameters &params) override
Start calibration, this method is very often platform specific.
bool getRefTorque(int j, double *t) override
Get the reference value of the torque for a given joint.
bool setTemperatureLimit(int m, const double val) override
Set the temperature limit for a specific motor.
bool setValWithPidType(int voc, PidControlTypeEnum type, int axis, double val)
bool calibrateSingleJoint(int j) override
calibrateSingleJoint: call the calibration procedure for the single joint
bool enableAmp(int j) override
Enable the amplifier on a specific joint.
bool getEncoderSpeeds(double *spds) override
Read the instantaneous speed of all axes.
bool getTorqueRanges(double *min, double *max) override
Get the full scale of the torque sensors of all joints.
bool park(bool wait=true) override
bool setRefAcceleration(int j, double acc) override
Set reference acceleration for a joint.
bool getRefDutyCycle(int j, double *ref) override
Gets the last reference sent using the setRefDutyCycle function.
bool getMotorEncodersTimed(double *encs, double *ts) override
Read the instantaneous position of all motor encoders.
bool getImpedanceOffset(int j, double *offset) override
Get current force Offset for a specific joint.
bool getValWithPidType(int voc, PidControlTypeEnum type, int j, double *val)
bool calibrateAxisWithParams(int j, unsigned int ui, double v1, double v2, double v3) override
Start calibration, this method is very often platform specific.
bool getNumberOfMotorEncoders(int *num) override
Get the number of available motor encoders.
bool disablePid(const PidControlTypeEnum &pidtype, int j) override
Disable the pid computation for a joint.
bool getMotorEncoderSpeeds(double *spds) override
Read the instantaneous speed of all motor encoders.
bool getPWMLimit(int m, double *val) override
bool getCurrents(double *vals) override
bool disableAmp(int j) override
Disable the amplifier on a specific joint.
bool setVelLimits(int axis, double min, double max) override
Set the software speed limits for a particular axis, the behavior of the control card when these limi...
bool getEncodersTimed(double *encs, double *ts) override
Read the instantaneous acceleration of all axes.
bool getPids(const PidControlTypeEnum &pidtype, Pid *pids) override
Get current pid value for a specific joint.
bool get1V1I1D(int v, int j, double *val)
Helper method used to get a double value from the remote peer.
bool getEncoderAccelerations(double *accs) override
Read the instantaneous acceleration of all axes.
bool setMotorTorqueParams(int j, const MotorTorqueParameters params) override
Set a subset of motor parameters (bemf, ktau etc) useful for torque control.
bool setLimits(int axis, double min, double max) override
Set the software limits for a particular axis, the behavior of the control card when these limits are...
bool getTorqueRange(int j, double *min, double *max) override
Get the full scale of the torque sensor of a given joint.
bool setRefDutyCycles(const double *v) override
Sets the reference dutycycle for all the motors.
bool positionMove(int j, double ref) override
Set new reference point for a single axis.
bool quitPark() override
quitPark: interrupt the park procedure
bool get1V1I1I(int v, int j, int *val)
Helper method used to get an integer value from the remote peer.
bool getAxisName(int j, std::string &name) override
bool getPidReferences(const PidControlTypeEnum &pidtype, double *refs) override
Get the current reference of all pid controllers.
bool getRefCurrents(double *t) override
Get the reference value of the currents for all motors.
Interface implemented by all device drivers.
Definition: DeviceDriver.h:38
Interface for control devices, amplifier commands.
Interface for getting information about specific axes, if available.
Definition: IAxisInfo.h:43
Interface for control devices, calibration commands.
Interface for control devices, commands to get/set position and veloity limits.
Interface for setting control mode in control board.
Definition: IControlMode.h:28
Interface for control boards implementing current control.
Control board, extend encoder interface with timestamps.
Interface for control boards implementing impedance control.
Interface settings the way the robot interacts with the environment: basic interaction types are Stif...
Control board, encoder interface.
Control board, encoder interface.
Definition: IMotor.h:99
Interface for controlling an axis, by sending directly a PWM reference signal to a motor.
Definition: IPWMControl.h:28
Interface for a generic control board device implementing a PID controller, with scaled arguments.
Definition: IPidControl.h:211
Interface for a generic control board device implementing position control.
Interface for a generic control board device implementing position control.
IRemoteCalibrator interface is meant to remotize the access of the calibration device in order to all...
IRemoteVariables interface.
Interface for control boards implementing torque control.
Interface for control boards implementing velocity control.
Contains the parameters for a PID.
A simple collection of objects that can be described and transmitted in a portable way.
Definition: Bottle.h:73
Buffer incoming data to a port.
Buffer outgoing data to a port.
A mini-server for network communication.
Definition: Port.h:50
A base class for nested structures that can be searched.
Definition: Searchable.h:69
An abstraction for a time stamp and/or sequence number.
Definition: Stamp.h:25
PidControlTypeEnum
Definition: PidEnums.h:21