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
mc_tasks::TransformTask::mvDamping
sva::MotionVecd mvDamping()
Get dimensional damping as a motion vector.
Definition: TransformTask.h:182
mc_rtc::Configuration
Simplify access to values hold within a JSON file.
Definition: Configuration.h:165
mc_rbdyn::Robots
Definition: Robots.h:15
RobotFrame.h
mc_tasks::TrajectoryTaskGeneric::damping
double damping() const
Get the current task damping.
mc_tasks::MetaTask
Represents a generic task.
Definition: MetaTask.h:39
mc_tasks::TrajectoryTaskGeneric::refVel
const Eigen::VectorXd & refVel() const
Get the trajectory reference velocity.
MC_TASKS_DLLAPI
#define MC_TASKS_DLLAPI
Definition: api.h:50
mc_tasks::TrajectoryTaskGeneric::setGains
void setGains(double stiffness, double damping)
Set both stiffness and damping.
mc_solver::QPSolver
Definition: QPSolver.h:85
mc_tasks::TransformTask::surface
const std::string & surface() const noexcept
Retrieve the controlled frame name.
Definition: TransformTask.h:124
mc_tasks::TransformTask::damping
void damping(const sva::MotionVecd &damping)
Set dimensional damping.
Definition: TransformTask.h:179
mc_rbdyn::Frame
Definition: Frame.h:27
mc_tasks::TransformTask::refVelB
void refVelB(const sva::MotionVecd &velB)
Set trajectory task's reference velocity from motion vector in frame coordinates.
Definition: TransformTask.h:189
mc_rtc::Logger
Logs controller data to disk.
Definition: Logger.h:29
mc_tasks::TrajectoryTaskGeneric::stiffness
double stiffness() const
Get the current task stiffness.
mc_rbdyn::RobotFrame
Definition: RobotFrame.h:21
mc_tasks::TransformTask::stiffness
void stiffness(const sva::MotionVecd &stiffness)
Set dimensional stiffness.
Definition: TransformTask.h:169
mc_tasks::TrajectoryTaskGeneric::refAccel
const Eigen::VectorXd & refAccel() const
Get the trajectory reference acceleration.
mc_rtc::gui::StateBuilder
Definition: StateBuilder.h:27
mc_tasks::TransformTask::surfacePose
sva::PTransformd surfacePose() const noexcept
Definition: TransformTask.h:130
mc_tasks::TransformTask::frame
const mc_rbdyn::RobotFrame & frame() const noexcept
Return the controlled frame (const)
Definition: TransformTask.h:127
mc_rbdyn::ConstRobotFramePtr
std::shared_ptr< const RobotFrame > ConstRobotFramePtr
Definition: fwd.h:25
mc_tasks::TransformTask
Control a frame 6D pose.
Definition: TransformTask.h:15
mc_tasks::TransformTask::refVelB
sva::MotionVecd refVelB() const
Get reference velocity in frame coordinates as a motion vector.
Definition: TransformTask.h:192
mc_tasks::TransformTask::frame_
mc_rbdyn::ConstRobotFramePtr frame_
Definition: TransformTask.h:205
mc_tasks::TransformTask::mvStiffness
sva::MotionVecd mvStiffness()
Get dimensional stiffness as a motion vector.
Definition: TransformTask.h:172
mc_tasks
Definition: StabilizerStandingState.h:11
mc_tasks::TransformTask::refAccel
void refAccel(const sva::MotionVecd &accel)
Set trajectory task's reference acceleration from motion vector.
Definition: TransformTask.h:199
TrajectoryTaskGeneric.h
mc_tasks::TransformTask::setGains
void setGains(const sva::MotionVecd &stiffness, const sva::MotionVecd &damping)
Set dimensional stiffness and damping.
Definition: TransformTask.h:157
mc_tasks::TrajectoryTaskGeneric
Generic wrapper for a trajectory dynamic over an error function.
Definition: TrajectoryTaskGeneric.h:26