|
EIGEN_MAKE_ALIGNED_OPERATOR_NEW | ImpedanceTask (const std::string &surfaceName, const mc_rbdyn::Robots &robots, unsigned robotIndex, double stiffness=5.0, double weight=1000.0) |
| Constructor. More...
|
|
| ImpedanceTask (const mc_rbdyn::RobotFrame &frame, double stiffness=5.0, double weight=1000.0) |
| Constructor. More...
|
|
void | reset () override |
| Reset the task. More...
|
|
const ImpedanceGains & | gains () const noexcept |
| Access the impedance gains. More...
|
|
ImpedanceGains & | gains () noexcept |
| Access the impedance gains. More...
|
|
const sva::PTransformd & | targetPose () const noexcept |
| Get the target pose of the surface in the world frame. More...
|
|
void | targetPose (const sva::PTransformd &pose) |
| Set the target pose of the surface in the world frame. More...
|
|
const sva::MotionVecd & | targetVel () const noexcept |
| Get the target velocity of the surface in the world frame. More...
|
|
void | targetVel (const sva::MotionVecd &worldVel) override |
| Set the target velocity of the surface in the world frame. More...
|
|
const sva::MotionVecd & | targetAccel () const noexcept |
| Get the target acceleration of the surface in the world frame. More...
|
|
void | targetAccel (const sva::MotionVecd &accel) |
| Set the target acceleration of the surface in the world frame. More...
|
|
const sva::PTransformd & | deltaCompliancePose () const |
| Get the relative pose from target frame to compliance frame represented in the world frame. More...
|
|
const sva::PTransformd | compliancePose () const |
| Get the compliance pose of the surface in the world frame. More...
|
|
const sva::ForceVecd & | targetWrench () const noexcept |
| Get the target wrench in the surface frame. More...
|
|
void | targetWrenchW (const sva::ForceVecd &wrenchW) |
| Set the target wrench in the world frame. This function will convert the wrench from the world frame to the surface frame, and call targetWrench(). More...
|
|
void | targetWrench (const sva::ForceVecd &wrench) |
| Set the target wrench in the surface frame. More...
|
|
const sva::ForceVecd & | measuredWrench () const |
| Get the measured wrench in the surface frame. More...
|
|
const sva::ForceVecd & | filteredMeasuredWrench () const |
| Get the filtered measured wrench in the surface frame. More...
|
|
double | cutoffPeriod () const |
| Get the cutoff period for the low-pass filter of measured wrench. More...
|
|
void | cutoffPeriod (double cutoffPeriod) |
| Set the cutoff period for the low-pass filter of measured wrench. More...
|
|
bool | hold () const noexcept |
| Get whether hold mode is enabled. More...
|
|
void | hold (bool hold) noexcept |
| Set hold mode. More...
|
|
void | load (mc_solver::QPSolver &solver, const mc_rtc::Configuration &config) override |
| Load parameters from a Configuration object. More...
|
|
| TransformTask (const mc_rbdyn::RobotFrame &frame, double stiffness=2.0, double weight=500.0) |
| Constructor. More...
|
|
| TransformTask (const std::string &surfaceName, const mc_rbdyn::Robots &robots, unsigned int robotIndex, double stiffness=2.0, double weight=500) |
| Constructor. More...
|
|
void | reset () override |
| Reset the task. More...
|
|
void | targetSurface (unsigned int robotIndex, const std::string &surfaceName, const sva::PTransformd &offset=sva::PTransformd::Identity()) |
| Targets a robot surface with an optional offset. The offset is expressed in the target contact frame. More...
|
|
void | targetFrame (const mc_rbdyn::Frame &targetFrame, const sva::PTransformd &offset=sva::PTransformd::Identity()) |
| Targets a given frame with an optional offset. More...
|
|
void | targetFrameVelocity (const mc_rbdyn::Frame &targetFrame, const sva::PTransformd &offset=sva::PTransformd::Identity()) |
| Targets a given frame velocity with an optional offset. More...
|
|
virtual void | target (const mc_rbdyn::Frame &frame, const sva::PTransformd &offset) |
| Targets a given frame with an optional offset. More...
|
|
const std::string & | surface () const noexcept |
| Retrieve the controlled frame name. More...
|
|
const mc_rbdyn::RobotFrame & | frame () const noexcept |
| Return the controlled frame (const) More...
|
|
sva::PTransformd | surfacePose () const noexcept |
|
std::function< bool(const mc_tasks::MetaTask &task, std::string &)> | buildCompletionCriteria (double dt, const mc_rtc::Configuration &config) const override |
|
void | addToLogger (mc_rtc::Logger &logger) override |
|
void | setGains (const sva::MotionVecd &stiffness, const sva::MotionVecd &damping) |
| Set dimensional stiffness and damping. More...
|
|
void | stiffness (const sva::MotionVecd &stiffness) |
| Set dimensional stiffness. More...
|
|
sva::MotionVecd | mvStiffness () |
| Get dimensional stiffness as a motion vector. More...
|
|
void | damping (const sva::MotionVecd &damping) |
| Set dimensional damping. More...
|
|
sva::MotionVecd | mvDamping () |
| Get dimensional damping as a motion vector. More...
|
|
void | refVelB (const sva::MotionVecd &velB) |
| Set trajectory task's reference velocity from motion vector in frame coordinates. More...
|
|
sva::MotionVecd | refVelB () const |
| Get reference velocity in frame coordinates as a motion vector. More...
|
|
void | refAccel (const sva::MotionVecd &accel) |
| Set trajectory task's reference acceleration from motion vector. More...
|
|
void | load (mc_solver::QPSolver &solver, const mc_rtc::Configuration &config) override |
| Load parameters from a Configuration object. More...
|
|
void | damping (double damping) |
| Set the task damping, leaving its stiffness unchanged. More...
|
|
void | damping (const Eigen::VectorXd &damping) |
| Set dimensional damping. More...
|
|
double | damping () const |
| Get the current task damping. More...
|
|
void | setGains (double stiffness, double damping) |
| Set both stiffness and damping. More...
|
|
void | setGains (const Eigen::VectorXd &stiffness, const Eigen::VectorXd &damping) |
| Set dimensional stiffness and damping. More...
|
|
void | stiffness (double stiffness) |
| Set the task stiffness/damping. More...
|
|
void | stiffness (const Eigen::VectorXd &stiffness) |
| Set dimensional stiffness. More...
|
|
double | stiffness () const |
| Get the current task stiffness. More...
|
|
| TrajectoryTaskGeneric (const mc_rbdyn::Robots &robots, unsigned int robotIndex, double stiffness, double weight) |
| Constructor (auto damping) More...
|
|
| TrajectoryTaskGeneric (const mc_rbdyn::RobotFrame &frame, double stiffness, double weight) |
| Constructor (auto damping) More...
|
|
virtual | ~TrajectoryTaskGeneric ()=default |
|
void | refVel (const Eigen::VectorXd &vel) |
| Set the trajectory reference velocity. More...
|
|
const Eigen::VectorXd & | refVel () const |
| Get the trajectory reference velocity. More...
|
|
void | refAccel (const Eigen::VectorXd &accel) |
| Set the trajectory reference acceleration. More...
|
|
const Eigen::VectorXd & | refAccel () const |
| Get the trajectory reference acceleration. More...
|
|
void | stiffness (double stiffness) |
| Set the task stiffness/damping. More...
|
|
void | stiffness (const Eigen::VectorXd &stiffness) |
| Set dimensional stiffness. More...
|
|
void | damping (double damping) |
| Set the task damping, leaving its stiffness unchanged. More...
|
|
void | damping (const Eigen::VectorXd &damping) |
| Set dimensional damping. More...
|
|
void | setGains (double stiffness, double damping) |
| Set both stiffness and damping. More...
|
|
void | setGains (const Eigen::VectorXd &stiffness, const Eigen::VectorXd &damping) |
| Set dimensional stiffness and damping. More...
|
|
double | stiffness () const |
| Get the current task stiffness. More...
|
|
double | damping () const |
| Get the current task damping. More...
|
|
const Eigen::VectorXd & | dimStiffness () const |
| Get the current task dimensional stiffness. More...
|
|
const Eigen::VectorXd & | dimDamping () const |
| Get the current task dimensional damping. More...
|
|
void | weight (double w) |
| Set the task weight. More...
|
|
double | weight () const |
| Returns the task weight. More...
|
|
void | dimWeight (const Eigen::VectorXd &dimW) override |
| Set the task's dimension weight vector. More...
|
|
Eigen::VectorXd | dimWeight () const override |
| Get the current task's dim weight vector. More...
|
|
void | selectActiveJoints (const std::vector< std::string > &activeJointsName, const std::map< std::string, std::vector< std::array< int, 2 >>> &activeDofs={}, bool checkJoints=true) |
| Create an active joints selector. More...
|
|
void | selectActiveJoints (mc_solver::QPSolver &solver, const std::vector< std::string > &activeJointsName, const std::map< std::string, std::vector< std::array< int, 2 >>> &activeDofs={}) override |
| Create an active joints selector. More...
|
|
void | selectUnactiveJoints (const std::vector< std::string > &unactiveJointsName, const std::map< std::string, std::vector< std::array< int, 2 >>> &unactiveDofs={}, bool checkJoints=true) |
| Create an unactive joints selector. More...
|
|
void | selectUnactiveJoints (mc_solver::QPSolver &solver, const std::vector< std::string > &unactiveJointsName, const std::map< std::string, std::vector< std::array< int, 2 >>> &unactiveDofs={}) override |
| Create an unactive joints selector. More...
|
|
virtual void | resetJointsSelector () |
|
void | resetJointsSelector (mc_solver::QPSolver &solver) override |
| Reset active joints selection. More...
|
|
Eigen::VectorXd | eval () const override |
| Returns the task error. More...
|
|
Eigen::VectorXd | speed () const override |
| Returns the task velocity. More...
|
|
const Eigen::VectorXd & | normalAcc () const |
|
| MetaTask () |
|
virtual | ~MetaTask () |
|
const std::string & | type () const |
|
virtual void | name (const std::string &name) |
|
const std::string & | name () const |
|
size_t | iterInSolver () const noexcept |
| Get the number of iterations since the task was added to the solver. More...
|
|
void | resetIterInSolver () noexcept |
| Set the number of iterations since the task was added to the solver to zero. More...
|
|
void | incrementIterInSolver () noexcept |
| Increment the number of iterations since the task was added to the solver. More...
|
|
Backend | backend () const noexcept |
|
Impedance control of the end-effector.
ImpedanceTask passes the following "compliance" position and orientation (i.e., \( p_c \)) to the target of the SurfaceTransformTask, which is the base class of this class.
\[ M \Delta \ddot{p}_{cd} + D \Delta \dot{p}_{cd} + K \Delta p_{cd} = K_f (f_m - f_d) {\rm where} \Delta p_{cd} = p_c - p_d \]
where \( p_* \) is the end-effector position and orientation, and \( f_* \) is the end-effector wrench. Subscripts \( d, c, m \) mean the desired, compliance, and measured values, respectively. \( M, D, K \) are the mass, damper, and spring parameters of the impedance, respectively. \( K_f \) is the wrench gain.
Desired values \( p_d, \dot{p}_d, \ddot{p}_d, f_d \) are given from the user. The measured value \( f_m \) is obtained from the sensor.
In the SurfaceTransformTask, the "IK" acceleration (i.e., \( \ddot{p}_{IK} \)) are calculated and passed to the acceleration-level IK.
\[ \ddot{p}_{IK} = \ddot{p}_{c} + K_d ( \dot{p}_c - \dot{p}_a ) + K_s ( p_c - p_a ) \]
\( K_s, K_d \) are the stiffness and damping parameters, respectively. Subscripts \( a \) means actual value.
Reference: Bruno Siciliano and Luigi Villani, Robot Force Control, Springer, 1999 https://www.springer.com/jp/book/9780792377337