Blender
V2.93
intern
itasc
ControlledObject.cpp
Go to the documentation of this file.
1
4
/*
5
* ControlledObject.cpp
6
*
7
* Created on: Jan 5, 2009
8
* Author: rubensmits
9
*/
10
11
#include "
ControlledObject.hpp
"
12
13
14
namespace
iTaSC
{
15
ControlledObject::ControlledObject
():
16
Object
(Controlled),m_nq(0),m_nc(0),m_nee(0)
17
{
18
// max joint variable = 0.52 radian or 0.52 meter in one timestep
19
m_maxDeltaQ
=
e_scalar
(0.52);
20
}
21
22
void
ControlledObject::initialize
(
unsigned
int
_nq,
unsigned
int
_nc,
unsigned
int
_nee)
23
{
24
assert(_nee >= 1);
25
m_nq
= _nq;
26
m_nc
= _nc;
27
m_nee
= _nee;
28
if
(
m_nq
> 0) {
29
m_Wq
=
e_identity_matrix
(
m_nq
,
m_nq
);
30
m_qdot
=
e_zero_vector
(
m_nq
);
31
}
32
if
(
m_nc
> 0) {
33
m_Wy
=
e_scalar_vector
(
m_nc
,1.0);
34
m_ydot
=
e_zero_vector
(
m_nc
);
35
}
36
if
(
m_nc
> 0 &&
m_nq
> 0)
37
m_Cq
=
e_zero_matrix
(
m_nc
,
m_nq
);
38
// clear all Jacobian if any
39
m_JqArray
.clear();
40
// reserve one more to have a zero matrix handy
41
if
(
m_nq
> 0)
42
m_JqArray
.resize(
m_nee
+1,
e_zero_matrix
(6,
m_nq
));
43
}
44
45
ControlledObject::~ControlledObject
() {}
46
47
48
49
const
e_matrix
&
ControlledObject::getJq
(
unsigned
int
ee)
const
50
{
51
assert(
m_nq
> 0);
52
return
m_JqArray
[(ee>
m_nee
)?
m_nee
:ee];
53
}
54
55
double
ControlledObject::getMaxTimestep
(
double
& timestep)
56
{
57
e_scalar
maxQdot =
m_qdot
.array().abs().maxCoeff();
58
if
(timestep*maxQdot >
m_maxDeltaQ
) {
59
timestep =
m_maxDeltaQ
/maxQdot;
60
}
61
return
timestep;
62
}
63
64
}
ControlledObject.hpp
iTaSC::ControlledObject::m_JqArray
std::vector< e_matrix > m_JqArray
Definition:
ControlledObject.hpp:28
iTaSC::ControlledObject::m_Wq
e_matrix m_Wq
Definition:
ControlledObject.hpp:26
iTaSC::ControlledObject::m_ydot
e_vector m_ydot
Definition:
ControlledObject.hpp:27
iTaSC::ControlledObject::m_qdot
e_vector m_qdot
Definition:
ControlledObject.hpp:27
iTaSC::ControlledObject::getJq
virtual const e_matrix & getJq(unsigned int ee) const
Definition:
ControlledObject.cpp:49
iTaSC::ControlledObject::ControlledObject
ControlledObject()
Definition:
ControlledObject.cpp:15
iTaSC::ControlledObject::m_Wy
e_vector m_Wy
Definition:
ControlledObject.hpp:27
iTaSC::ControlledObject::~ControlledObject
virtual ~ControlledObject()
Definition:
ControlledObject.cpp:45
iTaSC::ControlledObject::getMaxTimestep
virtual double getMaxTimestep(double ×tep)
Definition:
ControlledObject.cpp:55
iTaSC::ControlledObject::m_nq
unsigned int m_nq
Definition:
ControlledObject.hpp:25
iTaSC::ControlledObject::m_nee
unsigned int m_nee
Definition:
ControlledObject.hpp:25
iTaSC::ControlledObject::initialize
virtual void initialize(unsigned int _nq, unsigned int _nc, unsigned int _nee)
Definition:
ControlledObject.cpp:22
iTaSC::ControlledObject::m_maxDeltaQ
e_scalar m_maxDeltaQ
Definition:
ControlledObject.hpp:24
iTaSC::ControlledObject::m_nc
unsigned int m_nc
Definition:
ControlledObject.hpp:25
iTaSC::ControlledObject::m_Cq
e_matrix m_Cq
Definition:
ControlledObject.hpp:26
iTaSC::Object
Definition:
Object.hpp:19
e_scalar_vector
#define e_scalar_vector
Definition:
eigen_types.hpp:43
e_scalar
#define e_scalar
Definition:
eigen_types.hpp:37
e_zero_vector
#define e_zero_vector
Definition:
eigen_types.hpp:39
e_identity_matrix
#define e_identity_matrix
Definition:
eigen_types.hpp:42
e_zero_matrix
#define e_zero_matrix
Definition:
eigen_types.hpp:44
e_matrix
#define e_matrix
Definition:
eigen_types.hpp:40
iTaSC
Definition:
Armature.cpp:16
Generated on Tue Jan 31 2023 14:37:24 for Blender by
doxygen
1.9.1