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 
82  void selectActiveJoints(mc_solver::QPSolver & solver,
83  const std::vector<std::string> & activeJointsName,
84  const std::map<std::string, std::vector<std::array<int, 2>>> & activeDofs = {}) override;
85 
86  void selectUnactiveJoints(mc_solver::QPSolver & solver,
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
mc_rtc::Configuration
Simplify access to values hold within a JSON file.
Definition: Configuration.h:165
mc_rbdyn::Robots
Definition: Robots.h:15
mc_tasks::MetaTask
Represents a generic task.
Definition: MetaTask.h:39
MC_TASKS_DLLAPI
#define MC_TASKS_DLLAPI
Definition: api.h:50
mc_solver::QPSolver
Definition: QPSolver.h:85
OrientationTask.h
mc_rtc::Logger
Logs controller data to disk.
Definition: Logger.h:29
mc_rbdyn::RobotFrame
Definition: RobotFrame.h:21
mc_tasks::EndEffectorTask::positionTask
std::shared_ptr< mc_tasks::PositionTask > positionTask
Definition: EndEffectorTask.h:103
mc_rtc::gui::StateBuilder
Definition: StateBuilder.h:27
mc_tasks::EndEffectorTask::curTransform
sva::PTransformd curTransform
Definition: EndEffectorTask.h:106
mc_tasks::MetaTask::name
const std::string & name() const
Definition: MetaTask.h:67
mc_tasks::EndEffectorTask::frame
const mc_rbdyn::RobotFrame & frame() const noexcept
Definition: EndEffectorTask.h:121
mc_tasks::EndEffectorTask
Controls an end-effector.
Definition: EndEffectorTask.h:19
mc_tasks::EndEffectorTask::orientationTask
std::shared_ptr< mc_tasks::OrientationTask > orientationTask
Definition: EndEffectorTask.h:104
PositionTask.h
mc_tasks
Definition: StabilizerStandingState.h:11