19#ifndef _INVERSE_KINEMATICS_CONSTRAINT_H
20#define _INVERSE_KINEMATICS_CONSTRAINT_H
22#include "constraint.h"
23#include "mbsim/functions/function.h"
24#include "mbsim/frames/floating_relative_frame.h"
47 void init(
InitStage stage,
const InitConfigSet &config)
override;
49 void resetUpToDate()
override;
51 void setKinematics(Kinematics kinematics_) { kinematics = kinematics_; }
52 void setFrame(
Frame* frame_) { frame = frame_; }
54 void setTranslation(
Function<fmatvec::Vec3(
double)> *fr_) {
59 void setRotation(
Function<fmatvec::RotMat3(
double)>* fA_) {
64 void setUpInverseKinetics()
override;
66 void updateGeneralizedCoordinates()
override;
67 void updateGeneralizedJacobians(
int jj=0)
override;
70 const fmatvec::SqrMat& evalA() {
if(updA) updateA();
return A; }
72 fmatvec::SqrMat& getA(
bool check=
true) { assert((not check) or (not updA));
return A; }
74 void setInitialGuess(
const fmatvec::VecV &q0_) { q0 <<= q0_; }
76 void initializeUsingXML(xercesc::DOMElement *element)
override;
79 int getNumberOfMechanicalLinks()
const {
return link.size(); }
86 std::vector<RigidBody*> body;
87 fmatvec::Mat3xV forceDir, momentDir;
90 Residuum(
const fmatvec::Vec3 &r_,
const fmatvec::RotMat3 &A_, std::vector<RigidBody*> body_,
const fmatvec::Mat3xV &forceDir_,
const fmatvec::Mat3xV &momentDir_,
Frame* frame_);
92 fmatvec::Vec operator()(
const fmatvec::Vec &
x)
override;
94 std::vector<RigidBody*> bd;
96 Kinematics kinematics{spatial};
97 Frame* frame{
nullptr};
99 Function<fmatvec::Vec3(
double)> *fr{
nullptr};
100 Function<fmatvec::RotMat3(
double)>* fA{
nullptr};
102 fmatvec::Mat3xV DF, DM, forceDir, momentDir;
104 fmatvec::RangeV iF, iM;
105 std::vector<fmatvec::RangeV> Iq, Iu, Ih;
113 std::vector<MechanicalLink*> link;
117 std::string saved_ref;
Class for constraints between generalized coordinates of objects.
Definition: constraint.h:30
fmatvec::Vec x
order one parameters
Definition: constraint.h:78
InitStage
The stages of the initialization.
Definition: element.h:62
std::string name
name of element
Definition: element.h:260
void setName(const std::string &str)
Definition: element.h:115
cartesian frame on bodies used for application of e.g. links and loads
Definition: frame.h:39
Definition: function.h:53
Definition: inverse_kinematics_constraint.h:82
Inverse kinematics contraint.
Definition: inverse_kinematics_constraint.h:36
void init(InitStage stage, const InitConfigSet &config) override
plots time series header
Definition: inverse_kinematics_constraint.cc:68
mechanical link
Definition: mechanical_link.h:33
namespace MBSim
Definition: bilateral_constraint.cc:30