Blender V4.3
ControlledObject.hpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2009 Ruben Smits
2 *
3 * SPDX-License-Identifier: LGPL-2.1-or-later */
4
9#ifndef CONTROLLEDOBJECT_HPP_
10#define CONTROLLEDOBJECT_HPP_
11
12#include "kdl/frames.hpp"
13#include "eigen_types.hpp"
14
15#include "Object.hpp"
16#include "ConstraintSet.hpp"
17#include <vector>
18
19namespace iTaSC {
20
21#define CONSTRAINT_ID_ALL ((unsigned int)-1)
22
23class ControlledObject : public Object {
24protected:
26 unsigned int m_nq,m_nc,m_nee;
29 std::vector<e_matrix> m_JqArray;
30public:
32 virtual ~ControlledObject();
33
35 public:
37 virtual ~JointLockCallback() {}
38
39 // lock a joint, no need to update output
40 virtual void lockJoint(unsigned int q_nr, unsigned int ndof) = 0;
41 // lock a joint and update output in view of reiteration
42 virtual void lockJoint(unsigned int q_nr, unsigned int ndof, double* qdot) = 0;
43 };
44
45 virtual void initialize(unsigned int _nq,unsigned int _nc, unsigned int _nee);
46
47 // returns true when a joint has been locked via the callback and the solver must run again
48 virtual bool updateJoint(const Timestamp& timestamp, JointLockCallback& callback) = 0;
49 virtual void updateControlOutput(const Timestamp& timestamp)=0;
50 virtual void setJointVelocity(const e_vector qdot_in){m_qdot = qdot_in;};
51 virtual double getMaxTimestep(double& timestep);
52 virtual bool setControlParameter(unsigned int constraintId, unsigned int valueId, ConstraintAction action, e_scalar value, double timestep=0.0)=0;
53
54 virtual const e_vector& getControlOutput() const{return m_ydot;}
55
56 virtual const e_matrix& getJq(unsigned int ee) const;
57
58 virtual const e_matrix& getCq() const{return m_Cq;};
59
60 virtual e_matrix& getWq() {return m_Wq;};
61 virtual void setWq(const e_matrix& Wq_in){m_Wq = Wq_in;};
62
63 virtual const e_vector& getWy() const {return m_Wy;};
64
65 virtual const unsigned int getNrOfCoordinates(){return m_nq;};
66 virtual const unsigned int getNrOfConstraints(){return m_nc;};
67};
68
69}
70
71#endif /* CONTROLLEDOBJECT_HPP_ */
void initialize()
virtual void lockJoint(unsigned int q_nr, unsigned int ndof)=0
virtual void lockJoint(unsigned int q_nr, unsigned int ndof, double *qdot)=0
virtual const unsigned int getNrOfCoordinates()
std::vector< e_matrix > m_JqArray
virtual void setWq(const e_matrix &Wq_in)
virtual const e_vector & getWy() const
virtual const e_vector & getControlOutput() const
virtual const e_matrix & getCq() const
virtual void updateControlOutput(const Timestamp &timestamp)=0
virtual const e_matrix & getJq(unsigned int ee) const
virtual const unsigned int getNrOfConstraints()
virtual bool updateJoint(const Timestamp &timestamp, JointLockCallback &callback)=0
virtual double getMaxTimestep(double &timestep)
virtual bool setControlParameter(unsigned int constraintId, unsigned int valueId, ConstraintAction action, e_scalar value, double timestep=0.0)=0
virtual e_matrix & getWq()
virtual void setJointVelocity(const e_vector qdot_in)
DEGForeachIDComponentCallback callback
#define e_vector
#define e_scalar
#define e_matrix