Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Stack Of Tasks
pinocchio
Commits
425fa905
Commit
425fa905
authored
Jul 20, 2016
by
Joseph Mirabel
Committed by
Joseph Mirabel
Jul 20, 2016
Browse files
Rename normalized into normalize
parent
262568b8
Changes
9
Hide whitespace changes
Inline
Side-by-side
src/algorithm/joint-configuration.hpp
View file @
425fa905
...
...
@@ -105,14 +105,13 @@ namespace se3
inline
Eigen
::
VectorXd
randomConfiguration
(
const
Model
&
model
);
/**
* @brief Normalize a configuration
* @brief
Normalize a configuration
*
* @param[in] model Model
* @param[in] q Configuration to normalize
* @return The normalized configuration
* @param[in] model Model
* @param[in,out] q Configuration to normalize
*/
inline
Eigen
::
VectorX
d
normalize
d
(
const
Model
&
model
,
const
Eigen
::
VectorXd
&
q
);
inline
voi
d
normalize
(
const
Model
&
model
,
Eigen
::
VectorXd
&
q
);
}
// namespace se3
/* --- Details -------------------------------------------------------------------- */
...
...
@@ -307,35 +306,29 @@ namespace se3
return
randomConfiguration
(
model
,
model
.
lowerPositionLimit
,
model
.
upperPositionLimit
);
}
struct
Normalize
d
Step
:
public
fusion
::
JointModelVisitor
<
Normalize
d
Step
>
struct
NormalizeStep
:
public
fusion
::
JointModelVisitor
<
NormalizeStep
>
{
typedef
boost
::
fusion
::
vector
<
const
Eigen
::
VectorXd
&
,
Eigen
::
VectorXd
&
>
ArgsType
;
typedef
boost
::
fusion
::
vector
<
Eigen
::
VectorXd
&>
ArgsType
;
JOINT_MODEL_VISITOR_INIT
(
Normalize
d
Step
);
JOINT_MODEL_VISITOR_INIT
(
NormalizeStep
);
template
<
typename
JointModel
>
static
void
algo
(
const
se3
::
JointModelBase
<
JointModel
>
&
jmodel
,
const
Eigen
::
VectorXd
&
q
,
Eigen
::
VectorXd
&
result
)
Eigen
::
VectorXd
&
q
)
{
jmodel
.
jointConfigSelector
(
result
)
=
jmodel
.
normalize
d
(
q
);
jmodel
.
normalize
(
q
);
}
};
inline
Eigen
::
VectorX
d
normalize
d
(
const
Model
&
model
,
const
Eigen
::
VectorXd
&
q
)
inline
voi
d
normalize
(
const
Model
&
model
,
Eigen
::
VectorXd
&
q
)
{
Eigen
::
VectorXd
norma
(
model
.
nq
);
for
(
Model
::
JointIndex
i
=
1
;
i
<
(
Model
::
JointIndex
)
model
.
njoint
;
++
i
)
{
NormalizedStep
::
run
(
model
.
joints
[
i
],
NormalizedStep
::
ArgsType
(
q
,
norma
)
);
NormalizeStep
::
run
(
model
.
joints
[
i
],
NormalizeStep
::
ArgsType
(
q
));
}
return
norma
;
}
...
...
src/multibody/joint/joint-base.hpp
View file @
425fa905
...
...
@@ -339,20 +339,15 @@ namespace se3
/**
* @brief Normalize a configuration
*
* @param[in] q Configuration to normalize (size full model.nq)
*
* @return The normalized configuration
* @param[in,out] q Configuration to normalize (size full model.nq)
*/
ConfigVector_t
normalize
d
(
const
Eigen
::
VectorXd
&
q
)
const
{
return
derived
().
normalize
d
_impl
(
q
);
}
void
normalize
(
Eigen
::
VectorXd
&
q
)
const
{
return
derived
().
normalize_impl
(
q
);
}
/**
* @brief Default implementation of normalize
d
* @brief Default implementation of normalize
*/
ConfigVector_t
normalized_impl
(
const
Eigen
::
VectorXd
&
q
)
const
{
return
q
.
segment
<
NQ
>
(
idx_q
());
}
void
normalize_impl
(
Eigen
::
VectorXd
&
)
const
{
}
JointIndex
i_id
;
// ID of the joint in the multibody list.
int
i_q
;
// Index of the joint configuration in the joint configuration vector.
...
...
src/multibody/joint/joint-basic-visitors.hpp
View file @
425fa905
...
...
@@ -157,16 +157,14 @@ namespace se3
inline
Eigen
::
VectorXd
neutralConfiguration
(
const
JointModelVariant
&
jmodel
);
/**
* @brief Visit a JointModelVariant through JointNormalize
d
Visitor to compute
* @brief Visit a JointModelVariant through JointNormalizeVisitor to compute
* the normalized configuration.
*
* @param[in] jmodel The JointModelVariant
* @param[in] q configuration to normalize
*
* @return The normalized configuration
* @param[in] jmodel The JointModelVariant
* @param[in,out] q configuration to normalize
*/
inline
Eigen
::
VectorX
d
normalize
d
(
const
JointModelVariant
&
jmodel
,
const
Eigen
::
VectorXd
&
q
);
inline
voi
d
normalize
(
const
JointModelVariant
&
jmodel
,
Eigen
::
VectorXd
&
q
);
/**
* @brief Visit a JointModelVariant through JointNvVisitor to get the dimension of
...
...
src/multibody/joint/joint-basic-visitors.hxx
View file @
425fa905
...
...
@@ -233,25 +233,25 @@ namespace se3
}
/**
* @brief JointNormalize
d
Visitor visitor
* @brief JointNormalizeVisitor visitor
*/
class
JointNormalize
d
Visitor
:
public
boost
::
static_visitor
<
Eigen
::
VectorXd
>
class
JointNormalizeVisitor
:
public
boost
::
static_visitor
<>
{
public:
const
Eigen
::
VectorXd
&
q
;
Eigen
::
VectorXd
&
q
;
JointNormalize
d
Visitor
(
const
Eigen
::
VectorXd
&
q
)
:
q
(
q
)
{}
JointNormalizeVisitor
(
Eigen
::
VectorXd
&
q
)
:
q
(
q
)
{}
template
<
typename
D
>
Eigen
::
VectorX
d
operator
()(
const
JointModelBase
<
D
>
&
jmodel
)
const
{
return
jmodel
.
normalize
d
(
q
);
}
voi
d
operator
()(
const
JointModelBase
<
D
>
&
jmodel
)
const
{
jmodel
.
normalize
(
q
);
}
static
Eigen
::
VectorX
d
run
(
const
JointModelVariant
&
jmodel
,
const
Eigen
::
VectorXd
&
q
)
{
return
boost
::
apply_visitor
(
JointNormalize
d
Visitor
(
q
),
jmodel
);
}
static
voi
d
run
(
const
JointModelVariant
&
jmodel
,
Eigen
::
VectorXd
&
q
)
{
boost
::
apply_visitor
(
JointNormalizeVisitor
(
q
),
jmodel
);
}
};
inline
Eigen
::
VectorX
d
normalize
d
(
const
JointModelVariant
&
jmodel
,
const
Eigen
::
VectorXd
&
q
)
inline
voi
d
normalize
(
const
JointModelVariant
&
jmodel
,
Eigen
::
VectorXd
&
q
)
{
return
JointNormalize
d
Visitor
::
run
(
jmodel
,
q
);
JointNormalizeVisitor
::
run
(
jmodel
,
q
);
}
...
...
src/multibody/joint/joint-dense.hpp
View file @
425fa905
...
...
@@ -197,11 +197,9 @@ namespace se3
return
result
;
}
ConfigVector_t
normalize
d
_impl
(
const
Eigen
::
VectorXd
&
)
const
void
normalize_impl
(
Eigen
::
VectorXd
&
)
const
{
ConfigVector_t
result
;
assert
(
false
&&
"JointModelDense is read-only, should not perform any calc"
);
return
result
;
}
JointModelDense
()
{}
...
...
src/multibody/joint/joint-free-flyer.hpp
View file @
425fa905
...
...
@@ -374,11 +374,9 @@ namespace se3
return
q
;
}
ConfigVector_t
normalize
d
_impl
(
const
Eigen
::
VectorXd
&
q
)
const
void
normalize_impl
(
Eigen
::
VectorXd
&
q
)
const
{
ConfigVector_t
result
(
q
.
segment
<
NQ
>
(
idx_q
()));
result
.
tail
<
4
>
().
normalize
();
return
result
;
q
.
segment
<
4
>
(
idx_q
()
+
3
).
normalize
();
}
JointModelDense
<
NQ
,
NV
>
toDense_impl
()
const
...
...
src/multibody/joint/joint-spherical.hpp
View file @
425fa905
...
...
@@ -399,9 +399,9 @@ namespace se3
return
q
;
}
ConfigVector_t
normalize
d
_impl
(
const
Eigen
::
VectorXd
&
q
)
const
void
normalize_impl
(
Eigen
::
VectorXd
&
q
)
const
{
return
q
.
segment
<
NQ
>
(
idx_q
()).
normalize
d
();
q
.
segment
<
NQ
>
(
idx_q
()).
normalize
();
}
JointModelDense
<
NQ
,
NV
>
toDense_impl
()
const
...
...
src/multibody/joint/joint.hpp
View file @
425fa905
...
...
@@ -146,9 +146,9 @@ namespace se3
return
::
se3
::
distance
(
*
this
,
q0
,
q1
);
}
ConfigVector_t
normalize
d
_impl
(
const
Eigen
::
VectorXd
&
q
)
const
{
return
::
se3
::
normalize
d
(
*
this
,
q
);
void
normalize_impl
(
Eigen
::
VectorXd
&
q
)
const
{
return
::
se3
::
normalize
(
*
this
,
q
);
}
ConfigVector_t
neutralConfiguration_impl
()
const
...
...
unittest/joint-configurations.cpp
View file @
425fa905
...
...
@@ -518,7 +518,7 @@ BOOST_AUTO_TEST_CASE ( integrate_difference_test )
}
BOOST_AUTO_TEST_CASE
(
normalize
d
_test
)
BOOST_AUTO_TEST_CASE
(
normalize_test
)
{
using
namespace
se3
;
...
...
@@ -526,12 +526,14 @@ BOOST_AUTO_TEST_CASE ( normalized_test )
Model
model
=
createModelWithAllJoints
();
se3
::
Data
data
(
model
);
Eigen
::
VectorXd
q
=
Eigen
::
VectorXd
::
Ones
(
model
.
nq
);
Eigen
::
VectorXd
q
(
Eigen
::
VectorXd
::
Ones
(
model
.
nq
));
se3
::
normalize
(
model
,
q
);
Eigen
::
VectorXd
qn
=
se3
::
normalized
(
model
,
q
);
BOOST_CHECK
(
fabs
(
qn
.
segment
<
4
>
(
3
).
norm
()
-
1
)
<
Eigen
::
NumTraits
<
double
>::
epsilon
());
// quaternion of freeflyer
BOOST_CHECK
(
fabs
(
qn
.
segment
<
4
>
(
7
).
norm
()
-
1
)
<
Eigen
::
NumTraits
<
double
>::
epsilon
());
// quaternion of spherical joint
BOOST_CHECK
(
q
.
head
<
3
>
().
isApprox
(
Eigen
::
VectorXd
::
Ones
(
3
)));
BOOST_CHECK
(
fabs
(
q
.
segment
<
4
>
(
3
).
norm
()
-
1
)
<
Eigen
::
NumTraits
<
double
>::
epsilon
());
// quaternion of freeflyer
BOOST_CHECK
(
fabs
(
q
.
segment
<
4
>
(
7
).
norm
()
-
1
)
<
Eigen
::
NumTraits
<
double
>::
epsilon
());
// quaternion of spherical joint
const
int
n
=
model
.
nq
-
7
-
4
;
BOOST_CHECK
(
q
.
tail
(
n
).
isApprox
(
Eigen
::
VectorXd
::
Ones
(
n
)));
}
BOOST_AUTO_TEST_SUITE_END
()
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment