EndEffectorTask.h
Go to the documentation of this file.
1 /*
2  * Copyright 2015-2019 CNRS-UM LIRMM, CNRS-AIST JRL
3  */
4 
5 #pragma once
6 
9 
10 namespace mc_tasks
11 {
12 
20 {
21 public:
30  EndEffectorTask(const mc_rbdyn::RobotFrame & frame, double stiffness = 2.0, double weight = 1000.0);
31 
45  EndEffectorTask(const std::string & bodyName,
46  const mc_rbdyn::Robots & robots,
47  unsigned int robotIndex,
48  double stiffness = 2.0,
49  double weight = 1000.0);
50 
55  void reset() override;
56 
62  virtual void add_ef_pose(const sva::PTransformd & dtr);
63 
69  virtual void set_ef_pose(const sva::PTransformd & tf);
70 
76  virtual sva::PTransformd get_ef_pose();
77 
78  void dimWeight(const Eigen::VectorXd & dimW) override;
79 
80  Eigen::VectorXd dimWeight() const override;
81 
83  const std::vector<std::string> & activeJointsName,
84  const std::map<std::string, std::vector<std::array<int, 2>>> & activeDofs = {}) override;
85 
87  const std::vector<std::string> & unactiveJointsName,
88  const std::map<std::string, std::vector<std::array<int, 2>>> & unactiveDofs = {}) override;
89 
90  void resetJointsSelector(mc_solver::QPSolver & solver) override;
91 
92  Eigen::VectorXd eval() const override;
93 
94  Eigen::VectorXd speed() const override;
95 
96  void load(mc_solver::QPSolver & solver, const mc_rtc::Configuration & config) override;
97 
98  using MetaTask::name;
99 
100  void name(const std::string & name) override;
101 
102 public:
103  std::shared_ptr<mc_tasks::PositionTask> positionTask;
104  std::shared_ptr<mc_tasks::OrientationTask> orientationTask;
105 
106  sva::PTransformd curTransform;
107 
108 protected:
109  void removeFromSolver(mc_solver::QPSolver & solver) override;
110 
111  void addToSolver(mc_solver::QPSolver & solver) override;
112 
113  void update(mc_solver::QPSolver &) override;
114 
115  void addToLogger(mc_rtc::Logger & logger) override;
116 
117  void removeFromLogger(mc_rtc::Logger & logger) override;
118 
119  void addToGUI(mc_rtc::gui::StateBuilder & gui) override;
120 
121  inline const mc_rbdyn::RobotFrame & frame() const noexcept { return *positionTask->frame_; }
122 };
123 
124 } // namespace mc_tasks
#define MC_TASKS_DLLAPI
Definition: api.h:50
Definition: StabilizerStandingState.h:12
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
Controls an end-effector.
Definition: EndEffectorTask.h:20
virtual void add_ef_pose(const sva::PTransformd &dtr)
Increment the target position.
sva::PTransformd curTransform
Definition: EndEffectorTask.h:106
EndEffectorTask(const std::string &bodyName, const mc_rbdyn::Robots &robots, unsigned int robotIndex, double stiffness=2.0, double weight=1000.0)
Constructor.
Eigen::VectorXd speed() const override
Returns the task velocity.
void addToSolver(mc_solver::QPSolver &solver) override
Add the task to a solver.
void addToLogger(mc_rtc::Logger &logger) override
void addToGUI(mc_rtc::gui::StateBuilder &gui) override
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
Setup an unactive joints selector.
void reset() override
Reset the task.
void dimWeight(const Eigen::VectorXd &dimW) override
Set the task's dimension weight vector.
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
Setup an active joints selector.
virtual sva::PTransformd get_ef_pose()
Returns the current target positions.
void resetJointsSelector(mc_solver::QPSolver &solver) override
Reset active joints selection.
virtual void set_ef_pose(const sva::PTransformd &tf)
Change the target position.
void removeFromSolver(mc_solver::QPSolver &solver) override
Remove the task from a solver.
std::shared_ptr< mc_tasks::PositionTask > positionTask
Definition: EndEffectorTask.h:103
EndEffectorTask(const mc_rbdyn::RobotFrame &frame, double stiffness=2.0, double weight=1000.0)
Constructor.
const mc_rbdyn::RobotFrame & frame() const noexcept
Definition: EndEffectorTask.h:121
Eigen::VectorXd dimWeight() const override
Get the current task's dim weight vector.
void removeFromLogger(mc_rtc::Logger &logger) override
std::shared_ptr< mc_tasks::OrientationTask > orientationTask
Definition: EndEffectorTask.h:104
void load(mc_solver::QPSolver &solver, const mc_rtc::Configuration &config) override
Load parameters from a Configuration object.
void name(const std::string &name) override
void update(mc_solver::QPSolver &) override
Update the task.
Eigen::VectorXd eval() const override
Returns the task error.
Represents a generic task.
Definition: MetaTask.h:40
const std::string & name() const
Definition: MetaTask.h:67