TransformTask.h
Go to the documentation of this file.
1 /*
2  * Copyright 2015-2022 CNRS-UM LIRMM, CNRS-AIST JRL
3  */
4 
5 #pragma once
6 
8 
9 #include <mc_rbdyn/RobotFrame.h>
10 
11 namespace mc_tasks
12 {
13 
16 {
17 public:
26  TransformTask(const mc_rbdyn::RobotFrame & frame, double stiffness = 2.0, double weight = 500.0);
27 
43  TransformTask(const std::string & surfaceName,
44  const mc_rbdyn::Robots & robots,
45  unsigned int robotIndex,
46  double stiffness = 2.0,
47  double weight = 500);
48 
56  void reset() override;
57 
59  virtual sva::PTransformd target() const;
60 
66  virtual void target(const sva::PTransformd & worldPos);
67 
72  virtual void targetVel(const sva::MotionVecd & worldVel);
73 
85  void targetSurface(unsigned int robotIndex,
86  const std::string & surfaceName,
87  const sva::PTransformd & offset = sva::PTransformd::Identity());
88 
98  void targetFrame(const mc_rbdyn::Frame & targetFrame, const sva::PTransformd & offset = sva::PTransformd::Identity());
99 
109  void targetFrameVelocity(const mc_rbdyn::Frame & targetFrame,
110  const sva::PTransformd & offset = sva::PTransformd::Identity());
111 
121  virtual void target(const mc_rbdyn::Frame & frame, const sva::PTransformd & offset);
122 
124  inline const std::string & surface() const noexcept { return frame_->name(); }
125 
127  const mc_rbdyn::RobotFrame & frame() const noexcept { return *frame_; }
128 
130  inline sva::PTransformd surfacePose() const noexcept { return frame_->position(); }
131 
140  std::function<bool(const mc_tasks::MetaTask & task, std::string &)> buildCompletionCriteria(
141  double dt,
142  const mc_rtc::Configuration & config) const override;
143 
144  void addToLogger(mc_rtc::Logger & logger) override;
145 
149 
157  void setGains(const sva::MotionVecd & stiffness, const sva::MotionVecd & damping)
158  {
159  return TrajectoryTaskGeneric::setGains(stiffness.vector(), damping.vector());
160  }
161 
169  void stiffness(const sva::MotionVecd & stiffness) { return TrajectoryTaskGeneric::stiffness(stiffness.vector()); }
170 
172  sva::MotionVecd mvStiffness() { return sva::MotionVecd(dimStiffness()); }
173 
179  void damping(const sva::MotionVecd & damping) { return TrajectoryTaskGeneric::damping(damping.vector()); }
180 
182  sva::MotionVecd mvDamping() { return sva::MotionVecd(dimDamping()); }
183 
189  void refVelB(const sva::MotionVecd & velB) { TrajectoryTaskGeneric::refVel(velB.vector()); }
190 
192  sva::MotionVecd refVelB() const { return sva::MotionVecd(TrajectoryTaskGeneric::refVel()); }
193 
199  void refAccel(const sva::MotionVecd & accel) { return TrajectoryTaskGeneric::refAccel(accel.vector()); }
200 
202  void load(mc_solver::QPSolver & solver, const mc_rtc::Configuration & config) override;
203 
204 protected:
206 
207  void addToGUI(mc_rtc::gui::StateBuilder & gui) override;
208 
209  /* Don't use parent's refVel() as the velocity frame (spatial or body) is
210  * ambiguous. */
212 };
213 
214 } // namespace mc_tasks
#define MC_TASKS_DLLAPI
Definition: api.h:50
std::shared_ptr< const RobotFrame > ConstRobotFramePtr
Definition: fwd.h:25
Definition: StabilizerStandingState.h:12
Definition: Frame.h:28
Definition: RobotFrame.h:22
Definition: Robots.h:16
Simplify access to values hold within a JSON file.
Definition: Configuration.h:166
Logs controller data to disk.
Definition: Logger.h:30
Definition: StateBuilder.h:28
Definition: QPSolver.h:86
Represents a generic task.
Definition: MetaTask.h:40
Generic wrapper for a trajectory dynamic over an error function.
Definition: TrajectoryTaskGeneric.h:27
double damping() const
Get the current task damping.
double stiffness() const
Get the current task stiffness.
const Eigen::VectorXd & refAccel() const
Get the trajectory reference acceleration.
const Eigen::VectorXd & refVel() const
Get the trajectory reference velocity.
void setGains(double stiffness, double damping)
Set both stiffness and damping.
Control a frame 6D pose.
Definition: TransformTask.h:16
std::function< bool(const mc_tasks::MetaTask &task, std::string &)> buildCompletionCriteria(double dt, const mc_rtc::Configuration &config) const override
mc_rbdyn::ConstRobotFramePtr frame_
Definition: TransformTask.h:205
void refAccel(const sva::MotionVecd &accel)
Set trajectory task's reference acceleration from motion vector.
Definition: TransformTask.h:199
sva::MotionVecd refVelB() const
Get reference velocity in frame coordinates as a motion vector.
Definition: TransformTask.h:192
virtual void target(const sva::PTransformd &worldPos)
Set the task's target.
void load(mc_solver::QPSolver &solver, const mc_rtc::Configuration &config) override
Load parameters from a Configuration object.
void setGains(const sva::MotionVecd &stiffness, const sva::MotionVecd &damping)
Set dimensional stiffness and damping.
Definition: TransformTask.h:157
sva::PTransformd surfacePose() const noexcept
Definition: TransformTask.h:130
void targetFrame(const mc_rbdyn::Frame &targetFrame, const sva::PTransformd &offset=sva::PTransformd::Identity())
Targets a given frame with an optional offset.
void reset() override
Reset the task.
void targetFrameVelocity(const mc_rbdyn::Frame &targetFrame, const sva::PTransformd &offset=sva::PTransformd::Identity())
Targets a given frame velocity with an optional offset.
TransformTask(const std::string &surfaceName, const mc_rbdyn::Robots &robots, unsigned int robotIndex, double stiffness=2.0, double weight=500)
Constructor.
virtual sva::PTransformd target() const
Get the task's target.
const std::string & surface() const noexcept
Retrieve the controlled frame name.
Definition: TransformTask.h:124
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.
void addToGUI(mc_rtc::gui::StateBuilder &gui) override
void addToLogger(mc_rtc::Logger &logger) override
virtual void targetVel(const sva::MotionVecd &worldVel)
Get the task's target velocity.
void damping(const sva::MotionVecd &damping)
Set dimensional damping.
Definition: TransformTask.h:179
void stiffness(const sva::MotionVecd &stiffness)
Set dimensional stiffness.
Definition: TransformTask.h:169
const mc_rbdyn::RobotFrame & frame() const noexcept
Return the controlled frame (const)
Definition: TransformTask.h:127
void refVelB(const sva::MotionVecd &velB)
Set trajectory task's reference velocity from motion vector in frame coordinates.
Definition: TransformTask.h:189
virtual void target(const mc_rbdyn::Frame &frame, const sva::PTransformd &offset)
Targets a given frame with an optional offset.
sva::MotionVecd mvDamping()
Get dimensional damping as a motion vector.
Definition: TransformTask.h:182
sva::MotionVecd mvStiffness()
Get dimensional stiffness as a motion vector.
Definition: TransformTask.h:172
TransformTask(const mc_rbdyn::RobotFrame &frame, double stiffness=2.0, double weight=500.0)
Constructor.