mc_rtc  2.12.0
CoMInConvexFunction.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 
7 #include <mc_tvm/CoM.h>
8 #include <mc_tvm/Robot.h>
9 
10 #include <mc_rbdyn/fwd.h>
11 
12 #include <tvm/function/abstract/Function.h>
13 #include <tvm/geometry/Plane.h>
14 
15 namespace mc_tvm
16 {
17 
23 struct MC_TVM_DLLAPI CoMInConvexFunction : public tvm::function::abstract::Function
24 {
25 public:
26  using Output = tvm::function::abstract::Function::Output;
27  DISABLE_OUTPUTS(Output::JDot)
28  SET_UPDATES(CoMInConvexFunction, Value, Velocity, Jacobian, NormalAcceleration)
29 
30 
36 
43  void addPlane(tvm::geometry::PlanePtr plane);
44 
46  void reset();
47 
49  inline const mc_rbdyn::Robot & robot() const noexcept { return com_.robot().robot(); }
50 
52  inline const std::vector<tvm::geometry::PlanePtr> & planes() noexcept { return planes_; }
53 
55  inline tvm::geometry::Plane & plane(size_t i) noexcept
56  {
57  assert(i < planes_.size() && planes_[i]);
58  return *planes_[i];
59  }
60 
62  Eigen::VectorXd & selector() noexcept { return selector_; }
63 
65  const Eigen::VectorXd & selector() const noexcept { return selector_; }
66 
67 protected:
68  void updateValue();
72 
74 
76  std::vector<tvm::geometry::PlanePtr> planes_;
77 
79  Eigen::VectorXd selector_;
80 };
81 
82 using CoMInConvexFunctionPtr = std::shared_ptr<CoMInConvexFunction>;
83 
84 } // namespace mc_tvm
#define MC_TVM_DLLAPI
Definition: api.h:47
Definition: generic_gripper.h:15
Definition: CollisionFunction.h:16
std::shared_ptr< CoMInConvexFunction > CoMInConvexFunctionPtr
Definition: CoMInConvexFunction.h:82
Definition: CoMInConvexFunction.h:24
const Eigen::VectorXd & selector() const noexcept
Definition: CoMInConvexFunction.h:65
tvm::geometry::Plane & plane(size_t i) noexcept
Definition: CoMInConvexFunction.h:55
std::vector< tvm::geometry::PlanePtr > planes_
Definition: CoMInConvexFunction.h:76
Eigen::VectorXd selector_
Definition: CoMInConvexFunction.h:79
tvm::function::abstract::Function::Output Output
Definition: CoMInConvexFunction.h:26
Eigen::VectorXd & selector() noexcept
Definition: CoMInConvexFunction.h:62
mc_tvm::CoM & com_
Definition: CoMInConvexFunction.h:73
const std::vector< tvm::geometry::PlanePtr > & planes() noexcept
Definition: CoMInConvexFunction.h:52
Definition: CoM.h:34
Definition: Robot.h:49
const mc_rbdyn::Robot & robot() const
Definition: Robot.h:76