YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
CartesianControl.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-FileCopyrightText: 2006-2010 RobotCub Consortium
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef YARP_DEV_CARTESIANCONTROL_H
8#define YARP_DEV_CARTESIANCONTROL_H
9
10#include <yarp/os/Bottle.h>
11#include <yarp/os/Stamp.h>
12#include <yarp/dev/api.h>
13#include <yarp/sig/Vector.h>
14
19namespace yarp::dev {
20struct CartesianEventParameters;
21struct CartesianEventVariables;
22class CartesianEvent;
23class ICartesianControl;
24}
25
26
53
54
61{
66 std::string type;
67
72 double time;
73
79};
80
81
113
114
124{
125public:
130
143 virtual bool setTrackingMode(const bool f) = 0;
144
151 virtual bool getTrackingMode(bool *f) = 0;
152
166 virtual bool setReferenceMode(const bool f) = 0;
167
175 virtual bool getReferenceMode(bool *f) = 0;
176
183 virtual bool setPosePriority(const std::string &p) = 0;
184
190 virtual bool getPosePriority(std::string &p) = 0;
191
205 yarp::os::Stamp *stamp=NULL) = 0;
206
221 virtual bool getPose(const int axis, yarp::sig::Vector &x,
223 yarp::os::Stamp *stamp=NULL) = 0;
224
238 virtual bool goToPose(const yarp::sig::Vector &xd,
239 const yarp::sig::Vector &od,
240 const double t = 0.0) = 0;
241
253 virtual bool goToPosition(const yarp::sig::Vector &xd,
254 const double t = 0.0) = 0;
255
270 virtual bool goToPoseSync(const yarp::sig::Vector &xd,
271 const yarp::sig::Vector &od,
272 const double t = 0.0) = 0;
273
286 virtual bool goToPositionSync(const yarp::sig::Vector &xd,
287 const double t = 0.0) = 0;
288
303 virtual bool getDesired(yarp::sig::Vector &xdhat,
304 yarp::sig::Vector &odhat,
305 yarp::sig::Vector &qdhat) = 0;
306
326 virtual bool askForPose(const yarp::sig::Vector &xd,
327 const yarp::sig::Vector &od,
328 yarp::sig::Vector &xdhat,
329 yarp::sig::Vector &odhat,
330 yarp::sig::Vector &qdhat) = 0;
331
354 virtual bool askForPose(const yarp::sig::Vector &q0,
355 const yarp::sig::Vector &xd,
356 const yarp::sig::Vector &od,
357 yarp::sig::Vector &xdhat,
358 yarp::sig::Vector &odhat,
359 yarp::sig::Vector &qdhat) = 0;
360
377 virtual bool askForPosition(const yarp::sig::Vector &xd,
378 yarp::sig::Vector &xdhat,
379 yarp::sig::Vector &odhat,
380 yarp::sig::Vector &qdhat) = 0;
381
401 virtual bool askForPosition(const yarp::sig::Vector &q0,
402 const yarp::sig::Vector &xd,
403 yarp::sig::Vector &xdhat,
404 yarp::sig::Vector &odhat,
405 yarp::sig::Vector &qdhat) = 0;
406
419 virtual bool getDOF(yarp::sig::Vector &curDof) = 0;
420
436 virtual bool setDOF(const yarp::sig::Vector &newDof,
437 yarp::sig::Vector &curDof) = 0;
438
450 virtual bool getRestPos(yarp::sig::Vector &curRestPos) = 0;
451
466 virtual bool setRestPos(const yarp::sig::Vector &newRestPos,
467 yarp::sig::Vector &curRestPos) = 0;
468
480 virtual bool getRestWeights(yarp::sig::Vector &curRestWeights) = 0;
481
496 virtual bool setRestWeights(const yarp::sig::Vector &newRestWeights,
497 yarp::sig::Vector &curRestWeights) = 0;
498
507 virtual bool getLimits(const int axis, double *min, double *max) = 0;
508
518 virtual bool setLimits(const int axis, const double min, const double max) = 0;
519
525 virtual bool getTrajTime(double *t) = 0;
526
532 virtual bool setTrajTime(const double t) = 0;
533
542 virtual bool getInTargetTol(double *tol) = 0;
543
552 virtual bool setInTargetTol(const double tol) = 0;
553
560 virtual bool getJointsVelocities(yarp::sig::Vector &qdot) = 0;
561
576 yarp::sig::Vector &odot) = 0;
577
587 virtual bool setTaskVelocities(const yarp::sig::Vector &xdot,
588 const yarp::sig::Vector &odot) = 0;
589
601 virtual bool attachTipFrame(const yarp::sig::Vector &x,
602 const yarp::sig::Vector &o) = 0;
603
613
620 virtual bool removeTipFrame() = 0;
621
628 virtual bool checkMotionDone(bool *f) = 0;
629
640 virtual bool waitMotionDone(const double period = 0.1,
641 const double timeout = 0.0) = 0;
642
650 virtual bool stopControl() = 0;
651
661 virtual bool storeContext(int *id) = 0;
662
673 virtual bool restoreContext(const int id) = 0;
674
680 virtual bool deleteContext(const int id) = 0;
681
688 virtual bool getInfo(yarp::os::Bottle &info) = 0;
689
698 virtual bool registerEvent(yarp::dev::CartesianEvent &event) = 0;
699
706
716 virtual bool tweakSet(const yarp::os::Bottle &options) = 0;
717
728 virtual bool tweakGet(yarp::os::Bottle &options) = 0;
729};
730
731#endif // YARP_DEV_CARTESIANCONTROL_H
contains the definition of a Vector type
Interface for a event notified by the cartesian controller.
yarp::dev::CartesianEventVariables cartesianEventVariables
The event handler fills this structure with useful information at run-time.
yarp::dev::CartesianEventParameters cartesianEventParameters
The user fills this structure to establish the event parameters.
virtual ~CartesianEvent()
Destructor.
virtual void cartesianEventCallback()=0
Event callback to be overridden by the user.
Interface for a cartesian controller.
virtual bool setRestWeights(const yarp::sig::Vector &newRestWeights, yarp::sig::Vector &curRestWeights)=0
Set a new joints rest position.
virtual bool goToPose(const yarp::sig::Vector &xd, const yarp::sig::Vector &od, const double t=0.0)=0
Move the end-effector to a specified pose (position and orientation) in cartesian space.
virtual bool tweakSet(const yarp::os::Bottle &options)=0
Tweak low-level controller's parameters.
virtual bool getRestWeights(yarp::sig::Vector &curRestWeights)=0
Get the current joints rest weights.
virtual bool setTrackingMode(const bool f)=0
Set the controller in tracking or non-tracking mode.
virtual bool stopControl()=0
Ask for an immediate stop motion.
virtual bool getTipFrame(yarp::sig::Vector &x, yarp::sig::Vector &o)=0
Retrieve the tip frame currently attached to the end-effector.
virtual bool getInTargetTol(double *tol)=0
Return tolerance for in-target check.
virtual bool getReferenceMode(bool *f)=0
Get the current controller reference mode.
virtual bool setDOF(const yarp::sig::Vector &newDof, yarp::sig::Vector &curDof)=0
Set a new DOF configuration for the limb.
virtual bool storeContext(int *id)=0
Store the controller context.
virtual bool getRestPos(yarp::sig::Vector &curRestPos)=0
Get the current joints rest position.
virtual bool askForPose(const yarp::sig::Vector &xd, const yarp::sig::Vector &od, yarp::sig::Vector &xdhat, yarp::sig::Vector &odhat, yarp::sig::Vector &qdhat)=0
Ask for inverting a given pose without actually moving there.
virtual bool setTaskVelocities(const yarp::sig::Vector &xdot, const yarp::sig::Vector &odot)=0
Set the reference velocities of the end-effector in the task space.
virtual bool goToPoseSync(const yarp::sig::Vector &xd, const yarp::sig::Vector &od, const double t=0.0)=0
Move the end-effector to a specified pose (position and orientation) in cartesian space.
virtual bool setLimits(const int axis, const double min, const double max)=0
Set new range for the axis.
virtual bool getDOF(yarp::sig::Vector &curDof)=0
Get the current DOF configuration of the limb.
virtual bool setTrajTime(const double t)=0
Set the duration of the trajectory.
virtual bool askForPose(const yarp::sig::Vector &q0, const yarp::sig::Vector &xd, const yarp::sig::Vector &od, yarp::sig::Vector &xdhat, yarp::sig::Vector &odhat, yarp::sig::Vector &qdhat)=0
Ask for inverting a given pose without actually moving there.
virtual bool getTrackingMode(bool *f)=0
Get the current controller mode.
virtual bool askForPosition(const yarp::sig::Vector &q0, const yarp::sig::Vector &xd, yarp::sig::Vector &xdhat, yarp::sig::Vector &odhat, yarp::sig::Vector &qdhat)=0
Ask for inverting a given position without actually moving there.
virtual bool setReferenceMode(const bool f)=0
Ask the controller to close the loop with the low-level joints set-points in place of the actual enco...
virtual bool getTrajTime(double *t)=0
Get the current trajectory duration.
virtual bool setInTargetTol(const double tol)=0
Set tolerance for in-target check.
virtual bool registerEvent(yarp::dev::CartesianEvent &event)=0
Register an event.
virtual bool goToPositionSync(const yarp::sig::Vector &xd, const double t=0.0)=0
Move the end-effector to a specified position in cartesian space, ignore the orientation.
virtual bool setRestPos(const yarp::sig::Vector &newRestPos, yarp::sig::Vector &curRestPos)=0
Set a new joints rest position.
virtual bool getPose(const int axis, yarp::sig::Vector &x, yarp::sig::Vector &o, yarp::os::Stamp *stamp=NULL)=0
Get the current pose of the specified link belonging to the kinematic chain.
virtual bool attachTipFrame(const yarp::sig::Vector &x, const yarp::sig::Vector &o)=0
Attach a tip frame to the end-effector.
virtual bool getTaskVelocities(yarp::sig::Vector &xdot, yarp::sig::Vector &odot)=0
Return velocities of the end-effector in the task space.
virtual bool getInfo(yarp::os::Bottle &info)=0
Return useful info on the operating state of the controller.
virtual ~ICartesianControl()
Destructor.
virtual bool checkMotionDone(bool *f)=0
Check once if the current trajectory is terminated.
virtual bool getJointsVelocities(yarp::sig::Vector &qdot)=0
Return joints velocities.
virtual bool removeTipFrame()=0
Remove the tip frame currently attached to the end-effector.
virtual bool deleteContext(const int id)=0
Delete a specified controller context.
virtual bool getLimits(const int axis, double *min, double *max)=0
Get the current range for the axis.
virtual bool setPosePriority(const std::string &p)=0
Ask the controller to weigh more either the position or the orientation while reaching in full pose.
virtual bool restoreContext(const int id)=0
Restore the controller context previously stored.
virtual bool getPose(yarp::sig::Vector &x, yarp::sig::Vector &o, yarp::os::Stamp *stamp=NULL)=0
Get the current pose of the end-effector.
virtual bool goToPosition(const yarp::sig::Vector &xd, const double t=0.0)=0
Move the end-effector to a specified position in cartesian space, ignore the orientation.
virtual bool getPosePriority(std::string &p)=0
Get the current pose priority.
virtual bool unregisterEvent(yarp::dev::CartesianEvent &event)=0
Unregister an event.
virtual bool tweakGet(yarp::os::Bottle &options)=0
Return low-level controller's parameters.
virtual bool getDesired(yarp::sig::Vector &xdhat, yarp::sig::Vector &odhat, yarp::sig::Vector &qdhat)=0
Get the actual desired pose and joints configuration as result of kinematic inversion.
virtual bool askForPosition(const yarp::sig::Vector &xd, yarp::sig::Vector &xdhat, yarp::sig::Vector &odhat, yarp::sig::Vector &qdhat)=0
Ask for inverting a given position without actually moving there.
virtual bool waitMotionDone(const double period=0.1, const double timeout=0.0)=0
Wait until the current trajectory is terminated.
A simple collection of objects that can be described and transmitted in a portable way.
Definition Bottle.h:64
An abstraction for a time stamp and/or sequence number.
Definition Stamp.h:21
For streams capable of holding different kinds of content, check what they actually have.
The main, catch-all namespace for YARP.
Definition dirs.h:16
Structure for configuring a cartesian event.
double motionOngoingCheckPoint
The user specifies the motion check-point that raises a "motion-ongoing" event through this parameter...
std::string type
The signature of the event as specified by the user.
Structure for configuring a cartesian event.
double motionOngoingCheckPoint
Contain the motion check-point that raised a "motion-ongoing" event.
std::string type
The signature of the received event as filled by the event handler.
double time
Contain the time instant of the source when the event took place, as filled by the event handler.
#define YARP_dev_API
Definition api.h:18